客户端JSAPI
调起支付
官方文档
开发指引:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_3.shtml
步骤说明:通过JSAPI
下单API
成功获取预支付交易会话标识(prepay_id
)后,需要通过JSAPI
调起支付API
来调起微信支付收银台
注意:
1、WeixinJSBridge
内置对象在其他浏览器中无效
2、此API
需要将请求参数进行签名(参与签名的参数为:appId
、timeStamp
、nonceStr
、package
,参数区分大小写)
按文档的示例代码加上了些 alert
提示:
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": "appId", //公众号ID,由商户传入
"timeStamp": "timeStamp", //时间戳,自1970年以来的秒数
"nonceStr": "nonceStr", //随机串
"package": "prepay_id=prepay_id",
"signType": "RSA", //微信签名方式:
"paySign": "paySign" //微信签名
}, function (res) {
//android:支付成功、支付失败、取消支付 都能执行这个回调
//ios:支付失败、取消支付 能执行这个回调, 支付成功不执行这个回调
alert('支付结果:' + res.err_msg);
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
alert('支付成功!');
}
if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert('你已经取消支付了!');
} if (res.err_msg == "get_brand_wcpay_request:fail") {
alert('支付失败了!');
}
});
遇到的问题
Q:支付成功后,ios
弹不出支付结果的信息,但是安卓可以正常弹出;取消支付,android
和 ios
又都能 alert
出来,误以为是支付成功的回调不执行
A:支付成功后,ios
的 alert
无法弹出,不是回调不执行,而是 alert
没弹出来。换种提示方式:
alert("支付结果:" + res.err_msg) //ios 不执行
message.success("支付结果:" + res.err_msg,5) //可以正常提示
可以了……
import {Toast} from 'antd-mobile';
Toast.success('支付成功', 2);
也可