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

如何在服务端集成测试中确认Stripe PaymentIntent?

解决Stripe测试模式下确认PaymentIntent并传递账单详情的问题

一、修复当前代码的Type缺失问题

你遇到的「支付方式数据缺少type」错误,是因为PaymentMethodData必须指定支付方式类型。Stripe Kotlin SDK的PaymentMethodData.Type枚举里有大写的CARD选项,补充后即可正常运行:

fun confirmPaymentIntent(pi: PaymentIntent): PaymentIntent {
    val params = PaymentIntentConfirmParams.builder()
        .addExpand("latest_charge")
        .setPaymentMethod("pm_card_visa") // 这是Stripe官方测试Visa卡的有效ID,无需修改
        .setPaymentMethodData(
            PaymentIntentConfirmParams.PaymentMethodData.builder()
                .setType(PaymentIntentConfirmParams.PaymentMethodData.Type.CARD) // 补充卡类型
                .setBillingDetails(
                    BillingDetails.builder()
                        .setAddress(BillingDetails.Address.builder().setCountry("US").build())
                        .setName("My Customer")
                        .setEmail("customer@example.com")
                        .build()
                )
                .build()
        )
        .setReturnUrl("https://example.com/return")
        .build()
    return pi.confirm(params)
}

二、更优的测试实现方式

如果仅需验证Webhook能获取账单详情,无需构造复杂的PaymentMethodData,建议先创建带账单信息的测试PaymentMethod,再用它确认PaymentIntent:

  1. 创建带账单详情的测试PaymentMethod
val testPaymentMethod = PaymentMethod.create(
    PaymentMethodCreateParams.builder()
        .setType(PaymentMethod.Type.CARD)
        .setCard(PaymentMethodCreateParams.Card.builder().setNumber("4242424242424242").build()) // 测试卡卡号
        .setBillingDetails(
            BillingDetails.builder()
                .setAddress(BillingDetails.Address.builder().setCountry("US").build())
                .setName("My Customer")
                .setEmail("customer@example.com")
                .build()
        )
        .build()
)
  1. 用该PaymentMethod确认PaymentIntent
fun confirmPaymentIntent(pi: PaymentIntent): PaymentIntent {
    val params = PaymentIntentConfirmParams.builder()
        .addExpand("latest_charge")
        .setPaymentMethod(testPaymentMethod.id)
        .setReturnUrl("https://example.com/return")
        .build()
    return pi.confirm(params)
}

补充说明

  • pm_card_visa是Stripe官方提供的有效测试支付方式ID,对应一张永远支付成功的测试Visa卡,你之前的使用是正确的。
  • 测试模式下所有操作不会产生真实交易,仅用于流程验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:31:08