h5微信支付 苹果手机内在第二次打开页面时,支付收银台会调不起来

问题:
h5微信支付 ios内在第二个页面的情况下,第一次取消支付过后,再进来相同的页面有概率触发WeixinJSBridge === 'undefined',WeixinJSBridgeReady也不会继续,导致支付收银台起不来。

微信支付源码:

const onBridgeReady = (config, success, fail) => {
  WeixinJSBridge.invoke(   // eslint-disable-line
    'getBrandWCPayRequest', config,
    (res) => {
      if (res.err_msg === 'get_brand_wcpay_request:ok') {
        success(res)
      } else {
        fail()
      }
    }
  )
}

export const wxRealPay = (config, success, fail) => {
  if (typeof WeixinJSBridge === 'undefined') {
    if (document.addEventListener) {
      document.addEventListener('WeixinJSBridgeReady', () => onBridgeReady(config, success, fail), false)
    } else if (document.attachEvent) {
      document.attachEvent('WeixinJSBridgeReady', () => onBridgeReady(config, success, fail))
      document.attachEvent('onWeixinJSBridgeReady', () => onBridgeReady(config, success, fail))
    }
  } else {
    onBridgeReady(config, success, fail)
  }
}

支付在线上已经用了一段时间,所以正常情况下是没有问题的。感觉WeixinJSBridge、WeixinJSBridgeReady都失效了。

一开始我以为是ios缓存问题,通过这个链接 使用了时间戳、<html manifest="IGNORE.manifest">这两种方法,但是都没什么效果。

现在只能让他原地刷新,希望可以找到更好的方法

阅读 3.8k
1 个回答

找了很久没找到原因,最后还是让他每次一进来就刷新,确实都可以调起支付收银台

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}

有更好的方法,欢迎留下回答

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏