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

React Stripe创建支付方法的Android/Kotlin等效实现求助

在Android Kotlin中实现Stripe获取Payment Method ID的方案

核心实现步骤及代码

首先确保项目已集成Stripe Android SDK,然后通过以下步骤获取Payment Method ID:

  1. 布局中添加卡片输入组件(可选,也可手动收集卡片信息)
    在XML布局文件中加入官方的CardInputWidget来简化卡片信息收集:
<com.stripe.android.view.CardInputWidget
    android:id="@+id/cardInputWidget"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
  1. Kotlin代码中创建Payment Method
import com.stripe.android.Stripe
import com.stripe.android.model.PaymentMethod
import com.stripe.android.model.PaymentMethodCreateParams
import com.stripe.android.view.CardInputWidget

// 初始化Stripe,替换为你的Publishable Key
val stripe = Stripe(applicationContext, "pk_test_your_publishable_key")

// 从CardInputWidget获取卡片参数
val cardInputWidget = findViewById<CardInputWidget>(R.id.cardInputWidget)
val cardParams = cardInputWidget.paymentMethodCardCreateParams ?: run {
    // 处理卡片信息未填完整的情况
    return@run
}

// 构建账单信息(对应React代码中的formData)
val billingDetails = PaymentMethodCreateParams.BillingDetails.Builder()
    .setName("用户姓名")
    .setEmail("user@example.com")
    .setPhone("13800138000")
    .setAddress(
        PaymentMethodCreateParams.BillingDetails.Address.Builder()
            .setLine1("街道地址")
            .setCity("城市")
            .setState("省份")
            .setPostalCode("邮政编码")
            .setCountry("CN")
            .build()
    )
    .build()

// 构建Payment Method创建参数
val createParams = PaymentMethodCreateParams.Builder()
    .setCard(cardParams)
    .setBillingDetails(billingDetails)
    .build()

// 请求创建Payment Method并获取ID
stripe.createPaymentMethod(
    createParams,
    object : Stripe.ApiResultCallback<PaymentMethod> {
        override fun onSuccess(paymentMethod: PaymentMethod) {
            // 成功获取Payment Method ID
            val paymentMethodId = paymentMethod.id
            // 此处可执行保存ID的逻辑
        }

        override fun onError(e: Exception) {
            // 处理创建失败的异常
            e.printStackTrace()
        }
    }
)

手动收集卡片信息的替代方案

如果不使用CardInputWidget,可手动构建卡片参数:

val cardParams = PaymentMethodCreateParams.Card.Builder()
    .setNumber("4242424242424242") // 测试卡号
    .setExpMonth(12)
    .setExpYear(2025)
    .setCvc("123")
    .build()

依赖配置

确保在app模块的build.gradle中添加Stripe依赖(使用最新版本):

dependencies {
    implementation "com.stripe:stripe-android:20.0.0"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:22