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

Android中如何通过代码以编程方式关闭Stripe PaymentSheet

解决Android Stripe PaymentSheet超时自动关闭的问题

以下是针对该问题的几种可行思路:

  • 反射调用PaymentSheet内部的cancel方法
    Stripe Android SDK的PaymentSheet内部存在cancel()方法用于关闭自身,但未对外暴露。可以通过反射机制调用该方法:

    // 假设你持有PaymentSheet实例paymentSheet
    try {
        Method cancelMethod = PaymentSheet.class.getDeclaredMethod("cancel");
        cancelMethod.setAccessible(true);
        cancelMethod.invoke(paymentSheet);
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
        e.printStackTrace();
    }
    

    注意:SDK版本更新可能会修改内部方法结构,需做好兼容性测试。

  • 后端主动终止PaymentIntent同步前端状态
    计时器结束时,调用后端接口通过Stripe官方API将对应PaymentIntent的状态设置为canceled。前端通过PaymentSheetResultCallback监听状态变化,PaymentSheet会自动响应状态变更并关闭,同时你可在回调中处理当前Activity的销毁逻辑。

  • 遍历系统窗口强制关闭PaymentSheet
    PaymentSheet本质是独立的Dialog窗口,可遍历当前应用的所有窗口,识别出Stripe的PaymentSheet窗口并关闭:

    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    for (WindowManager.LayoutParams params : windowManager.getViewRoots()) {
        View view = params.getView();
        if (view != null && view.getContext().getPackageName().equals("com.stripe.android")) {
            if (view instanceof Dialog) {
                ((Dialog) view).dismiss();
                break;
            }
        }
    }
    

    该方式需注意权限和窗口识别的准确性,不同SDK版本可能存在窗口特征差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:08