微信支付
2018-07-09 本文已影响7人
指尖轻敲
示例代码
- appId:公众号名称,由商户传入
- timeStamp:时间戳
- nonceStr:随机字符串,随机数生成规则
- package:统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
- signType:签名方式:默认是MD5,支持HMAC-SHA256和MD5。
- paySign:签名,签名生成算法规则
// 以下代码可以放在一个点击事件里面,所需参数从服务端获取
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
{
"appId": appId,
"timeStamp": timeStamp,
"nonceStr": nonceStr,
"package": package,
"signType": signType,
"paySign": paySign
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok"){
alert("您已支付成功");
}
}
);
}
if(typeof WeixinJSBridge == "undefined"){
if(document.addEventListener){
document.addEventListener("WeixinJSBridge",onBridgeReady,false);
}else if(document.attachEvent){
document.attachEvent('WeinxinJSBridgeReady',onBridgeReady);
document.attachEvent('WeinxinJSBridgeReady',onBridgeReady);
}
}else{
onBridgeReady();
}
JS API的返回结果get_brand_wcpay_request:ok
仅在用户成功完成支付时返回。get_brand_wcpay_request:cancel
(支付过程取消)或者get_brand_wcpay_request:fail
(支付失败)可以统一处理为支付失败,不用细分。
常见报错
微信web开发工具中报错{"errMsg":"没有此SDK或暂不支持此SDK模拟"}
微信开发者工具不支持支付,用手机测试就可以了。
调用支付JSAPI缺少参数timeStamp
这里注意所有参数的值都是字符串类型,这里接收到的时间戳是个数字,用toString()方法转换。
支付验证签名失败
这个一般就是后台给传过来的签名不对。