首先,我们要明确JSAPI支付成功后,res到底返回了什么。
通过将res写后端日志,可以看到如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[ info ] [ HEADER ] array ( 'cookie' => 'PHPSESSID=vegi7372n5hr1h7r8trdtm90u9', 'accept-language' => 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'accept-encoding' => 'gzip, deflate', 'referer' => 'https://school.lanluo.cn/index/user/order/id/13', 'sec-fetch-dest' => 'empty', 'sec-fetch-mode' => 'cors', 'sec-fetch-site' => 'same-origin', 'origin' => 'https://school.lanluo.cn', 'content-type' => 'application/x-www-form-urlencoded; charset=UTF-8', 'user-agent' => 'Mozilla/5.0 (Linux; Android 12; M2011K2C Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4313 MMWEBSDK/20220805 Mobile Safari/537.36 MMWEBID/576 MicroMessenger/8.0.27.2220(0x28001B3F) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', 'x-requested-with' => 'XMLHttpRequest', 'accept' => 'application/json, text/javascript, */*; q=0.01', 'content-length' => '23', 'host' => 'school.lanluo.cn', ) [ info ] [ PARAM ] array ( 'errMsg' => 'chooseWXPay:ok', ) [ info ] [ RUN ] app\index\controller\User->order_res[ /www/wwwroot/school.lanluo.cn/application/index/controller/User.php ] [ notice ] array ( 'errMsg' => 'chooseWXPay:ok', ) |
在最后,明确了res的内容是:’errMsg’ => ‘chooseWXPay:ok’
官方文档
在公众号的说明是这样的:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#58
1 2 3 4 5 6 7 8 9 10 |
wx.chooseWXPay({ timestamp: 0, // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符 nonceStr: '', // 支付签名随机串,不长于 32 位 package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: '', // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致 paySign: '', // 支付签名 success: function (res) { // 支付成功后的回调函数 } }); |
写的很简单,只是告知了支付发起成功后会有res返回,但是没有说这个返回是什么,所以我们要看微信支付的文档。
回到最开始,只需要对返回内容进行判断即可。
这里是比较坑的地方,还请注意,返回判断不成功通常有两个原因。
1、用单引号
2、用了==而不是===
所以,正确的表达应该是:
1 2 3 4 5 6 7 8 9 10 |
if(res.errMsg === "chooseWXPay:ok"){ alert('支付成功'); $(".pay_check_api").val("您已支付成功!"); } if(res.errMsg === "chooseWXPay:cancel"){ alert("支付取消"); } if(res.errMsg === "chooseWXPay:fail"){ alert("支付失败"); } |
原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/11500