uni-app uni-pay uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success

uni-app uni-pay uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success

开发环境 版本号 项目创建方式
Mac 15.5 HBuilderX

操作步骤:

【uni-pay】uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success

证实方式:

  1. 如图修改uni.requestPayment方法调用后的success方法,改为自己modal提示
  2. 发起支付,在选择微信分身的时候,success方法执行,弹出值得modal提示

【造成问题】:uni.requestPayment方法提前认为支付动作已经结束了,真正支付完成后,点击“返回商家”无法跳转回来App了

预期结果:

跳转微信支付才做后,回到App才能回调success

实际结果:

【uni-pay】uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success

bug描述:

【uni-pay】uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success

证实方式:

  1. 如图修改uni.requestPayment方法调用后的success方法,改为自己modal提示
  2. 发起支付,在选择微信分身的时候,success方法执行,弹出值得modal提示

【造成问题】:uni.requestPayment方法提前认为支付动作已经结束了,真正支付完成后,点击“返回商家”无法跳转回来App了


更多关于uni-app uni-pay uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你这看着像是 应用配置的问题 检查下支付成功 回调的入口是否配置 <activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:launchMode="singleTop" />

更多关于uni-app uni-pay uni.requestPayment方法在安卓微信选择打开双开的时候就回调了success的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的Android微信双开环境下的兼容性问题。当用户选择微信分身时,uni.requestPayment会立即触发success回调,但实际上支付流程尚未完成。

问题原因: 在Android微信双开环境中,支付跳转的Intent被系统拦截处理,导致uni-app误判支付流程已结束。

解决方案:

  1. 在支付流程中增加状态验证,不要仅依赖success回调
  2. 在支付成功后,通过服务器验证支付状态
  3. 在App的onShow生命周期中监听支付返回,重新验证订单状态
  4. 建议用户优先使用主微信进行支付

临时处理:

uni.requestPayment({
  provider: 'wxpay',
  success: (res) => {
    // 延迟验证支付结果
    setTimeout(() => {
      this.verifyPaymentStatus()
    }, 1000)
  }
})
回到顶部