客户端
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);