首先,我们要明确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
 
                
 微信扫一扫
                                                            微信扫一扫                                                     支付宝扫一扫
                                                            支付宝扫一扫                                                     
            