收藏
回答

JSAPI支付报错 ReferenceError:Cant't find variable

JSAPI 支付 :在iOS9系统下,微信7.0.4,支付时报错ReferenceError:Can't find variable doPay。 (doPay 是我调用支付的方法)。代码如下

我把doPay 方法 放到另外一个js 文件里面,调用doPay 的时候 仍然报错ReferenceError:Can't find variable doPay,但是当我把if 条件判断注释掉,在doPay方法里面直接调onBridgeReady(), 报 ReferenceError:Can't find variable onBridgeReady.

这段代码在安卓手机和iOS 其他系统是没有问题的,可以正常支付,只有在iOS9 报错,请帮我分析一下,是什么问题

var payData;
function onBridgeReady() {
var signType = payData.signType;
  if (!signType) {
signType = "MD5";
  }
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId" : payData.appId, // 公众号名称,由商户传入
     "timeStamp" : payData.timeStamp, // 时间戳,自1970年以来的秒数
     "nonceStr" : payData.nonceStr, // 随机串
     "package" : payData.package,
     "signType" : signType, // 微信签名方式:
     "paySign" : payData.paySign// 微信签名
  }, function(res) {
let tid = payData.tid
     if (res.err_msg == "get_brand_wcpay_request:ok") {
        window.location.href = 'success.html?tid=' + tid
     } else if ((res.err_msg === "get_brand_wcpay_request:cancel")) {
// 用户取消支付
           cancelPay(tid)
     } else {
           alertwf(JSON.stringify(res));
       }
});
}

function doPay(resData) {
alert('doPay')
   payData = resData;
  hide();
  if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady,
              false);
     } else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
     } else {
alertwf('not in weixin');
     }
return;
  } else {
onBridgeReady();
  }
}




最后一次编辑于  2019-10-28
回答关注问题邀请回答
收藏

1 个回答

  • 伊路顺峰
    伊路顺峰
    2019-10-29

    找到问题了,iOS9不支持ES6,我用的是原生js ,把所有新语法换成老的语法就好了

    2019-10-29
    有用
    回复
登录 后发表内容
问题标签