You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Stripe PaymentSheet回调未触发问题求助

Android Stripe PaymentSheet 回调未触发排查方案

以下是针对你遇到的「同代码下一个项目PaymentSheet回调正常,另一个项目回调完全不触发(后端支付已完成)」问题的排查方向:

1. 检查Activity生命周期与实例持有

  • 确保mPaymentSheet是Activity的全局成员变量,而非局部变量(避免被GC回收),且在onCreate中初始化,不要在异步请求回调里重复创建。
  • 对比两个项目的Activity配置:若异常项目的Activity未配置android:configChanges处理屏幕旋转等变更,支付过程中Activity被销毁重建会导致回调丢失。可添加android:configChanges="orientation|screenSize|smallestScreenSize"到对应Activity的Manifest配置中。

2. 对齐Stripe SDK版本

异常项目可能使用了存在回调bug的旧版本SDK,直接将其Stripe依赖版本修改为与正常项目完全一致,再测试回调是否恢复。

3. 检查Activity启动模式

若异常项目的Activity使用了singleInstance/singleTask等特殊启动模式,会干扰PaymentSheet的结果回调传递。暂时将启动模式改为standard,验证是否解决问题。

4. 排查Activity结果拦截逻辑

  • 检查异常项目中是否重写了onActivityResult但未调用super.onActivityResult,这会阻断Stripe的回调传递。
  • 排查是否有第三方框架(如路由、权限库)拦截了Activity结果,需确保Stripe的结果能正常传递到目标Activity。

5. 验证初始化上下文与混淆规则

  • 初始化PaymentSheet时传入的上下文必须是当前活跃的Activity实例,避免传入Application Context或已销毁的Activity引用。
  • 检查异常项目的ProGuard/R8混淆规则,确保未混淆Stripe相关类:
    -keep class com.stripe.android.** { *; }
    -keep class com.stripe.android.view.** { *; }
    

6. 开启详细日志排查

手动开启Stripe SDK的详细日志,查看是否有隐藏的错误信息:

// 在Application初始化或PaymentSheet初始化前调用
Stripe.api.setLogLevel(java.util.logging.Level.VERBOSE);

额外验证步骤

  • 暂时移除Google Pay配置,使用最基础的PaymentSheet参数发起支付,排除Google Pay相关配置冲突。
  • 测试在异常项目中创建一个全新的空白Activity,仅实现PaymentSheet逻辑,看回调是否触发,排查原有Activity的其他代码干扰。

内容的提问来源于stack exchange,提问作者AndreiBogdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:07:07