PaymentIntent 和 SetupIntent 如何发挥作用
了解 PaymentIntent 和 SetupIntent 如何在支付流程中发挥作用。
Payment Intents API 和 Setup Intents API 的主要区别在于它们的用途:
- ** Payment Intents API**:用于收集付款信息并立即向客户收费。它会创建一笔收费并处理交易以收取款项。
- ** Setup Intents API**:用于收集和保存支付方式的详细信息,以供将来使用,但不产生任何费用。在不处理任何支付的情况下设置支付凭证。
Payment Intent API | Setup Intents API |
---|---|
立即扣款 | 不产生费用 |
跟踪支付的生命周期 | 跟踪支付方式的设置进度 |
使用 3D 安全认证为适用交易验证客户身份 | 使用 3D 安全认证验证支付方式而不收款,并为未来收款创建授权或协议 |
异步支付可能带来管理上的挑战,因为它们可能依赖于发生在您应用之外的客户操作。例如,用户可能需要使用3D 安全认证确认支付。
为简化支付管理,Stripe 使用了一个状态机,让您可以跟踪支付流程的状态。要了解每个 API 的状态,请选择下面适用的选项卡:
创建 PaymentIntent 时,其状态为 requires_
1,直到关联了支付方式为止。
建议在知道收款金额后尽快创建 PaymentIntent,以便 Stripe 记录所有的付款尝试。
客户提供了他们的支付信息后,即可开始确认 PaymentIntent。
在多数集成中会跳过此状态,原因是支付方式信息在确认付款的同时就提交了。
如果支付需要额外操作(如使用 3DS 验证进行身份验证),则 PaymentIntent 状态为 requires_
1。
处理完需要的作后,PaymentIntent 将转到 异步支付方式的 processing
状态,例如银行借记。这类支付方式可能需要长达几天的时间来处理。其他支付方式(如银行卡)处理速度更快,不会进入 processing
状态。
如果您单独授权和捕获资金,则 PaymentIntent 的状态可能变为 requires_
。在这种情况下,尝试捕获资金会将其状态转换为 processing
。
PaymentIntent 处于‘succeeded’状态即表明它驱动的付款流程已完成。
资金现已到达您的账户,可以放心地履行订单了。如果需要给客户退款,则可以使用 Refunds API。
如果支付尝试失败(例如由于拒绝),PaymentIntent 的状态会返回到requires_
,以便可以重试支付。
您可以在 PaymentIntent 变为 processing
2 或 succeeded
之前,随时将之取消。取消会使 PaymentIntent 无法用于未来的付款尝试,且无法撤销。如果已扣留任何资金,取消将释放这些资金。
PaymentIntent 也可能在确认次数过多后自动变为 canceled
状态。
1 2019-02-11 之前版本的 API 显示的是 requires_
和 requires_
,而不是 requires_
和 requires_
。
2 当关联的 Payment Method 是美国银行账户时,可以取消处于 processing
状态的 PaymentIntent。但是,由于取消时间窗口有限且可能变化,取消操作可能会失败。