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

Android中onActivityResult已废弃,如何获取Stripe支付结果?

Android中替代onActivityResult获取Stripe支付结果的方案

在Android中onActivityResult已被废弃,Stripe官方推荐使用Activity Result API作为替代方案来获取支付结果,以下是具体实现步骤和代码示例:

1. 初始化ActivityResultLauncher

在你的Activity或Fragment中,先声明并初始化用于接收Stripe支付结果的ActivityResultLauncher:

private var stripe: Stripe? = null
// 声明支付结果回调启动器
private val stripePaymentLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    val data = result.data
    val resultCode = result.resultCode
    stripe?.onPaymentResult(
        requestCode = Stripe.DEFAULT_REQUEST_CODE,
        data = data,
        callback = object : ApiResultCallback<PaymentIntentResult> {
            override fun onError(e: Exception) {
                // 处理支付失败逻辑
                e.printStackTrace()
                // 示例:提示用户支付出错
            }

            override fun onSuccess(result: PaymentIntentResult) {
                // 处理支付成功逻辑
                val paymentIntent = result.intent
                when (paymentIntent.status) {
                    PaymentIntent.Status.SUCCEEDED -> {
                        // 支付完成,执行后续业务逻辑
                    }
                    PaymentIntent.Status.REQUIRES_PAYMENT_METHOD -> {
                        // 需要用户重新选择支付方式
                    }
                    else -> {
                        // 处理其他支付状态
                    }
                }
            }
        }
    )
}

2. 修改confirmPayment调用逻辑

将原来直接传入Activity/Fragment的调用方式,改为使用stripePaymentLauncher启动支付流程:

fun confirmPayment() {
    stripe = Stripe(context = this, publishableKey = publishableKey)
    val paymentMethodCreateParams = PaymentMethodCreateParams.create(myDebitCard)
    val confirmPaymentIntent = ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
        paymentMethodCreateParams = paymentMethodCreateParams,
        clientSecret = clientSecret
    )
    // 使用启动器发起支付,替代原有的stripe?.confirmPayment(this, confirmPaymentIntent)
    stripe?.confirmPayment(
        confirmPaymentIntent,
        stripePaymentLauncher
    )
}

方案说明

  • Activity Result API是AndroidX官方提供的onActivityResult替代方案,解决了原回调代码分散、生命周期关联混乱的问题。
  • 支付结果会直接回调到stripePaymentLauncher的处理逻辑中,无需再重写onActivityResult方法,代码更集中易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:49:58