收藏
回答

调起微信支付jsapi后,不想支付了关闭支付页,页面被卡住了,怎么办?

pay() {
      if (!this.selIndArr.length) {
        Toast({
          message'请先选择要支付的订单!',
          duration1000,
          forbidClicktrue
        })
        return;
      }
      let orderNumArr = []
      for (let i = 0; i < this.selIndArr.length; i++) {
        orderNumArr.push(this.list[this.selIndArr[i]].orderId)
      }
      Toast.loading({
        masktrue,
        duration0// 持续展示 toast
        forbidClicktrue,
        message'发起支付中...'
      });
      let params = {
        orderNos: orderNumArr.join()
      }
      this.$api.payOrder(params).then(res => {
        if (res.code == 10000) {
          Toast.clear();
          let param = res.data.jsRequstParam
          this.onBridgeReady(param)
          if (typeof WeixinJSBridge == "undefined") {
            if (document.addEventListener) {
              document.addEventListener('WeixinJSBridgeReady'this.onBridgeReady(param), false);
            } else if (document.attachEvent) {
              document.attachEvent('WeixinJSBridgeReady'this.onBridgeReady(param));
              document.attachEvent('onWeixinJSBridgeReady'this.onBridgeReady(param));
            }
          } else {
            this.onBridgeReady(param)
          }
        }
      })


    },
    onBridgeReady(param) {
      let that = this;
      WeixinJSBridge.invoke(
        'getBrandWCPayRequest', {
        "appId": param.appId,     //公众号名称,由商户传入     
        "timeStamp": param.timeStamp,         //时间戳,自1970年以来的秒数     
        "nonceStr": param.nonceStr, //随机串     
        "package": param.pack,
        "signType": param.signType,         //微信签名方式:     
        "paySign": param.paySign //微信签名 
      },
        function (res{
          console.log('onBridgeReadyRes==', res);
          if (res.err_msg == "get_brand_wcpay_request:ok") {
            console.log('get_brand_wcpay_request:ok');


            // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。所以要检测订单是否支付成功
            that.checkPay(param.outTradeNo, 0)
          }
          else if (res.err_msg == "get_brand_wcpay_request:cancel") {
            Toast('取消支付!');
            //window.history.back(-1);
            }
        });
    },
回答关注问题邀请回答
收藏

2 个回答

  • 北望沣渭
    北望沣渭
    2020-07-29

    支付不成功至少包括两种:`:cancel` 及 `:fail`,你仅捕获了一种,建议回调仅对`:ok`做严格判断,其他全部认为失败,就应该万事大吉了。

    2020-07-29
    有用
    回复 1
    • 喵(^・ェ・^)
      喵(^・ェ・^)
      2020-07-29
      蟹蟹,已解决,是我多调起了一次
      2020-07-29
      回复
  • 微信支付技术助手8
    微信支付技术助手8
    2020-07-29

    为了帮助你更快的定位问题,请提供如下信息(有敏感信息可私信提供):

    -请求的具体API接口(提供文档地址和请求的URL):

    - 问题发生时间【必填】:

    - 商户号【 必填】:

    - 商户订单号【 必填】:

    - 相关报错信息文案:

    - 问题截图或视频:

    -完整的请求和返回参数以及单号:

    2020-07-29
    有用
    回复 1
    • 喵(^・ェ・^)
      喵(^・ェ・^)
      2020-07-29
      蟹蟹,已解决,是我多调起了一次
      2020-07-29
      回复
登录 后发表内容
问题标签