评论

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

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

客户端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 弹不出支付结果的信息,但是安卓可以正常弹出;取消支付,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);
也可


原文: https://mp.weixin.qq.com/s/lUPAEE4JgaUmbGOiF9tiqA

最后一次编辑于  2022-01-14  
点赞 0
收藏
评论
登录 后发表内容