微信支付 JSAPI WeixinJSBridge.invoke 支付成功 IOS 不返回 ?

微信支付 JSAPI WeixinJSBridge.invoke 支付成功 IOS 不返回 ?

技术杂谈小彩虹2021-08-22 23:15:51160A+A-

客户端JSAPI调起支付

官方文档

开发指引pay.weixin.qq.com/wiki/doc/ap…

步骤说明:通过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) //可以正常提示

可以了……

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们