Stripe Payment Intents API: 如何在服务器端确认付款?

Stripe Payment Intents API: How to confirm the payment on the server side?

在迁移到付款意向 API 之前,用户的信用卡付款已在购买完成后使用令牌(从 stripe.createToken 收到)在服务器端得到确认和收费。这使我们可以在发生任何错误时不确认付款。

现在,有了付款意向 API,付款确认已经在客户端 (stripe.confirmCardPayment) 发生了,如果在完成购买时服务器端发生错误,这是一个问题信用卡已经收费。退款无效解决方案,您的 Stripe 费用将不予退还。

我们如何使用支付意向 API 实施卡支付,但在购买的最后结束时确认支付(如在旧工作流程中)?或者,如果在结账流程中出现错误,我们如何防止信用卡被扣款? 很遗憾,我们无法在文档中找到解决此问题的方法。

感谢帮助!

文档如下:https://stripe.com/docs/payments/payment-intents/migration

您正在寻找的是通过 PaymentIntent 的“手动确认”建模的:https://stripe.com/docs/payments/accept-a-payment-synchronously

这不是 Stripe 推荐的集成。推荐的方法是客户端确认并监听 webhooks 进行支付确认。

这是因为在手动确认的情况下,客户“离开”的可能性更高,他们会在您的网页上验证您的 PaymentIntent 但将其关闭,这意味着您失去了客户端-> 服务器的往返,从而使您的付款未经确认(尽管客户认为他们已通过身份验证并因此付款)。

此外,手动确认仅适用于卡类付款,不支持基于其他地区的其他付款方式,如 iDEAL 或 SEPA Debit 等

在我们的案例中,我们希望在收费后直接在最后验证卡支付。 Stripe 支持能够帮助我们解决以下问题:

据我了解,您希望在付款后直接在最后验证付款。有一个解决方案,将 capture_method 设置为手动 - https://stripe.com/docs/api/payment_intents/create#create_payment_intent-capture_method。这意味着,将收取费用,之后用户/客户将能够直接在控制面板中确认付款。

此方法称为身份验证和捕获。现在暂停一张卡以保留资金,但只有在您的企业完成服务后才能提取资金。授权付款后,银行会为金额提供担保,并将其保留在客户的卡上最多 7 天,如果使用终端进行亲自付款,则保留 2 天。您可以在 Link 下找到 API 的更多信息:https://stripe.com/docs/payments/capture-later#authorize-only