美文网首页
微信支付 JSAPI WeixinJSBridge.invoke

微信支付 JSAPI WeixinJSBridge.invoke

作者: IT姑凉 | 来源:发表于2021-03-21 14:54 被阅读0次

IT姑凉公众号原创文章,如需转载请注明出处,谢谢~
https://mp.weixin.qq.com/s/lUPAEE4JgaUmbGOiF9tiqA

客户端JSAPI调起支付

官方文档

开发指引https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_3.shtml

步骤说明:通过JSAPI下单API成功获取预支付交易会话标识(prepay_id)后,需要通过JSAPI调起支付API来调起微信支付收银台

注意

1、WeixinJSBridge内置对象在其他浏览器中无效

2、此API需要将请求参数进行签名(参与签名的参数为:appIdtimeStampnonceStrpackage,参数区分大小写)

按文档的示例代码加上了些 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 弹不出支付结果的信息,但是安卓可以正常弹出;取消支付,androidios 又都能 alert 出来,误以为是支付成功的回调不执行

A:不是回调不执行,而是 alert 没弹出来。支付成功后,iosalert 无法弹出,换种提示方式:

alert("支付结果:" + res.err_msg) //ios 不执行
message.success("支付结果:" + res.err_msg,5) //可以正常提示

可以了……

相关文章

网友评论

      本文标题:微信支付 JSAPI WeixinJSBridge.invoke

      本文链接:https://www.haomeiwen.com/subject/egbncltx.html