共计 3060 个字符,预计需要花费 8 分钟才能阅读完成。
首先,我们要明确 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 ] appindexcontrollerUser->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 返回,但是没有说这个返回是什么,所以我们要看 微信支付 的文档。
回到最开始,只需要对返回内容进行判断即可。
这里是比较坑的地方,还请注意,返回判断不成功通常有两个
正文完