uni-app 安卓支付宝微信支付取消后无法返回上一页面 IOS正常

uni-app 安卓支付宝微信支付取消后无法返回上一页面 IOS正常

1 回复

更多关于uni-app 安卓支付宝微信支付取消后无法返回上一页面 IOS正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中处理支付取消后页面跳转问题,通常与平台差异和支付回调逻辑有关。以下为常见解决方案:

  1. 检查支付回调状态
    uni.requestPaymentfail回调中,安卓平台需明确区分取消操作与其他错误:

    uni.requestPayment({
      provider: 'alipay',
      fail: (err) => {
        // 支付宝取消支付返回错误码 "60001"
        if (err.errCode === 60001) {
          uni.navigateBack({ delta: 1 })
        }
      }
    })
    
  2. 微信支付平台差异处理
    微信支付取消时,安卓可能不会触发完整回调:

    // 建议在页面onShow生命周期监听返回事件
    onShow() {
      if (this.paymentCanceled) {
        uni.navigateBack({ delta: 1 })
        this.paymentCanceled = false
      }
    }
    
  3. 使用全局状态管理
    通过Vuex存储支付状态,确保页面跳转一致性:

    // 在支付页面
    fail: (err) => {
      this.$store.commit('SET_PAYMENT_STATUS', 'canceled')
    }
    
    // 在目标页面通过watch监听状态变化
    watch: {
      '$store.state.paymentStatus'(val) {
        if (val === 'canceled') {
          uni.navigateBack({ delta: 1 })
        }
      }
    }
    
  4. 兼容性写法建议
    可结合Promise封装支付方法:

    const handlePayment = () => {
      return new Promise((resolve, reject) => {
        uni.requestPayment({
          provider: 'alipay',
          success: resolve,
          fail: reject
        })
      }).catch(err => {
        if (err.errCode === 60001) {
          return Promise.reject('USER_CANCEL')
        }
        throw err
      })
    }
回到顶部