PaymentIntent 的运作方式
了解 PaymentIntents 在支付流程中的运作方式。
涉及异步流程的付款管理起来可能很复杂。例如,用户可能需要用 3DS 验证来确认付款。异步付款流程难以管理,因为它们依赖发生在应用程序之外的客户交互。PaymentIntents 和 SetupIntents 通过跟踪_state machine_中流程的状态简化了管理。
创建 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。但是,由于取消时间窗口有限且可能变化,取消操作可能会失败。