公众化网页,微信支付 JSAPI
作者:互联网
1. 根据接口所需参数和签名,服务端调统一下单接口,主要获取 prepay_id 字段 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
签名算法可以下载微信的sdk https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
2. 拿到 prepay_id 进行二次签名 重新进行签名计算,参与签名的参数为:appId、timeStamp、nonceStr、package、signType,参数区分大小写。 注意: signType 类型要与服务端一致 nonceStr: 跟第一次签名的一样 package:'prepay_id=123456789...' 还有就是 使用SDK生成签名时,注意签名类型 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5(虽然文档写的默认是MD5,但是代码里面不一定) 3.服务端将整理好的字段,返回网页端 { appId:'', timeStamp:'', nonceStr:'', package:'', ignType:'', paySign:'' } 4. 网页端调起支付接口 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 // 示例代码 function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":"wx2421b1c4370ec43b", //公众号名称,由商户传入 "timeStamp":"1395712654", //时间戳,自1970年以来的秒数 "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串 "package":"prepay_id=u802345jgfjsdfgsdg888", "signType":"MD5", //微信签名方式: "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 }, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ){ // 使用以上方式判断前端返回,微信团队郑重提示: //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 } }); } if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } }else{ onBridgeReady(); }
// 如果包支付签名验证失败,可以在线校验签名,看看生成的签名和自己生成的是否一样,注意字段的大小写。
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
若是还报错,检查一下参数字段是否正确 ,
signType 签名类型是否一致
标签:网页,微信,JSAPI,onBridgeReady,签名,document,jsapi,MD5 来源: https://www.cnblogs.com/lvsk/p/13996295.html