React Stripe创建支付方法的Android/Kotlin等效实现求助
在Android Kotlin中实现Stripe获取Payment Method ID的方案
核心实现步骤及代码
首先确保项目已集成Stripe Android SDK,然后通过以下步骤获取Payment Method ID:
- 布局中添加卡片输入组件(可选,也可手动收集卡片信息)
在XML布局文件中加入官方的CardInputWidget来简化卡片信息收集:
<com.stripe.android.view.CardInputWidget android:id="@+id/cardInputWidget" android:layout_width="match_parent" android:layout_height="wrap_content"/>
- 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
相关产品推荐
相关产品推荐

