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



我有一个连接到Stripe(测试模式)的集成测试,我想测试完整的流程,即创建支付意图和处理succeeded事件的webhook。第一部分非常简单。现在,对于第二部分,显然我不能在Element小部件上执行实际的流程。所以我尝试用以下调用手动确认支付意图(作为测试代码的一部分):

fun confirmPaymentIntent(pi: PaymentIntent): PaymentIntent {
val params = PaymentIntentConfirmParams.builder()
.addExpand("latest_charge")
.setPaymentMethod("pm_card_visa") // Don't know what's the correct value!
.setReturnUrl("https://example.com/return")
.build()
return pi.confirm(params)
}

它工作正常,我收到"付款意图成功";事件。现在的问题是,实际的支付流将包含账单细节。所以我尝试了以下操作:

.setPaymentMethodData(
PaymentIntentConfirmParams.PaymentMethodData.builder()
.setBillingDetails(
BillingDetails.builder()
.setAddress(BillingDetails.Address.builder().setCountry("US").build())
.setName("My Customer")
.setEmail("customer@example.com")
.build()
)
.build()
)

但是当我运行代码时,它抱怨在支付方式数据中缺少typeTypeenum没有card,我不知道什么是正确的值。在我的情况下,应用程序只支持卡,它不关心卡的详细信息以任何方式(所以任何工作,像假卡,令牌等,只要我得到支付意图事件与名称和电子邮件信息在webhook)
首先,有没有更好的方法来做到这一点?其次,如果没有,那么我如何在测试中手动确认支付意图,以便能够验证webhook调用?谢谢。

可以通过Stripe命令行直接触发payment_intent.succeeded事件。如果这仍然不能提供要测试的信息,您可能希望使用PaymentElement构建一个端到端的前端确认流。没那么复杂。

最新更新