# 暂停某一支付方式 分开进行支付授权和捕获,以立即创建费用,但稍后捕获资金。 创建付款时,您可以暂时保留符合条件的支付方式,以保留可供以后捕获的资金。例如,酒店通常会在顾客到达前全额授权付款,然后在顾客结账时扣款。这有时也称为*手动捕获* (Manually capture funds separately from an authorization)。 授权付款通过在客户的付款方式上冻结金额来保证该金额。如果您使用的是 API,则收款上的 [payment_method_details.card.capture_before](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) 属性指示授权何时过期。 您需要在授权过期前捕获资金。如果授权在您捕获资金之前过期,资金将被释放,付款状态变为 `canceled`。了解有关[异步付款状态](https://docs.stripe.com/payments/paymentintents/lifecycle.md)的更多信息。 ## 授权的有效窗口期 下表概述了授权不同交易类型的有效窗口期。 ### 无卡交易 | 卡品牌 | [商家发起的交易](https://docs.stripe.com/payments/cits-and-mits.md)授权有效期窗口 | [客户发起的交易](https://docs.stripe.com/payments/cits-and-mits.md)授权有效期窗口 | | -------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Visa** | 5 天* | 7 天 | | **Mastercard** | 7 天 | 7 天 | | **American Express** | 7 天 | 7 天 | | **Discover** | 7 天 | 7 天 | 确切的授权窗口为 4 天 18 小时以留出清算时间。 ### 有卡交易(线下付款) | 卡品牌 | 授权有效期窗口 | | -------------------- | ------- | | **Visa** | 5 天* | | **Mastercard** | 2 天 | | **American Express** | 2 天 | | **Discover** | 2 天 | 确切的授权窗口为 4 天 18 小时以留出清算时间。 ### 日本的 30 天授权窗口期 如果您的账户位于日本,则您可以将使用 Visa、Mastercard、JCB、Diners Club 和 Discover 的日元计价交易保留长达 30 天。非 JPY 和 American Express 交易在标准的 7 天窗口期后过期。 > 自 2024 年 4 月 14 日起,Visa 将在线[商家发起的交易](https://docs.stripe.com/payments/cits-and-mits.md)的授权窗口从 7 天缩短为 5 天。Visa 还将线下 (Terminal) 交易的授权窗口从 2 天延长至 5 天。 ## 支付方式限制 在实施之前,请了解以下单独授权和捕获的限制。 - 只有部分支付方式支持单独授权和*捕获* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected)。支持此功能的支付方式包括银行卡、Affirm、Afterpay、Cash App Pay、Klarna 和 PayPal。不支持此功能的一些支付方式包括 [ACH](https://docs.stripe.com/payments/ach-direct-debit.md) 和 [iDEAL](https://docs.stripe.com/payments/ideal.md)。详细了解[支付方式功能支持](https://docs.stripe.com/payments/payment-methods/payment-method-support.md)。 - 除了上文表格中所述外,其他支付方式也有不同的规则和授权窗口: - 银行卡支付:线上支付通常保留 7 天,线下 Terminal 支付通常保留 2 天(取决于交易类型和银行卡组织)。您可以为某些符合延长有效期的[在线](https://docs.stripe.com/payments/extended-authorization.md)和 [Terminal 支付授权](https://docs.stripe.com/terminal/features/extended-authorizations.md)申请延长有效授权期限。卡组织也可能会限制您不打算捕获的 1 美元授权。 - [Affirm](https://docs.stripe.com/payments/affirm/accept-a-payment.md?platform=web#manual-capture):如果 Affirm 对金额非常大的订单要求首付,他们会在授权期间收取该金额,并在未收取付款时退款。然后您有 30 天的时间来收取剩余的付款。 - [Afterpay / Clearpay](https://docs.stripe.com/payments/afterpay-clearpay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture):在授权过程中,客户支付第一笔分期还款款项。如果从未捕获过付款,则 Afterpay 进行退款。然后,您有 13 天的时间来捕获付款余额。 - [Cash App Pay](https://docs.stripe.com/payments/cash-app-pay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture):必须在 7 天内捕获有效授权才能完成付款。 - [Klarna](https://docs.stripe.com/payments/klarna/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture):您必须在发出收款请求后的第 28 个日历日午夜之前捕获收款,否则授权将过期。例如,您需要在 UTC 2020-10-01 14:00 至 UTC 2020-10-29 00:00 之前捕获收款请求。 - [PayPal](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture):将金额保留 10 天。Stripe 会自动尝试将扣留期再延长 10 天,共计 20 天。您的[结算首选项](https://docs.stripe.com/payments/paypal/choose-settlement-preference.md)可能会影响授权期限。有关更多信息,请参见[单独授权和捕获](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture)。 ## 使用管理平台进行授权并捕获 您无需编写代码即可分别授权付款和捕获资金。 1. 在管理平台中,[创建新付款](https://dashboard.stripe.com/test/payments/new)。选择**一次性**。 1. 输入或选择支付方式时,选择**更多选项**,然后选择**稍后捕获资金**。 这笔付款在您的[支付页面](https://dashboard.stripe.com/test/payments)上显示为**未捕获**。 要捕获资金,请前往付款详情页面,然后点击**捕获**。 ## 告诉 Stripe 仅授权 #### Checkout Sessions API 要表明您希望分离授权和捕获,请在创建 Checkout Session 时将 [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) 指定为 `manual`。该参数将指示 Stripe 授权金额,但不从客户的支付方式上捕获。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]"="{{PRICE_ID}}" \ -d "line_items[0][quantity]"=2 \ -d mode=payment \ -d ui_mode=custom \ -d "payment_intent_data[capture_method]"=manual ``` 使用上述方法时,您告诉 Stripe,对于具有合格支付方式的 Checkout Session,只能使用“之后捕获”。 #### Payment Intents API 要表明您希望分离授权和捕获,请在创建 PaymentIntent 时将 [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-capture_method) 指定为 `manual`。该参数将指示 Stripe 授权金额,但不从客户的支付方式上捕获。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d capture_method=manual ``` 使用上述方法时,您告诉 Stripe,对于具有合格支付方式的 PaymentIntent,只能使用“之后捕获”。例如,您不能接受单个 PaymentIntent 的银行卡付款和 SEPA 直接借记(不支持之后捕获)。要接受可能并不都支持之后捕获的支付方式,可以通过对 `payment_method_options[]` 对象配置 `capture_method=manual`,为每笔付款方式配置 capture-after-per-payment-method。 例如,通过配置 `payment_method_options[card][capture_method]=manual`,您可以仅将银行卡付款置于暂停状态。您可以从[管理平台](https://dashboard.stripe.com/settings/payment_methods)管理支付方式。Stripe 处理逻辑,根据交易金额、货币和支付流程等因素,向每个客户[动态显示](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md)最相关的合格支付方式。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d "payment_method_options[card][capture_method]"=manual ``` 也可以如以下示例所示,用[支付方式类型](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types)列出 `card` 和 `sepa_debit`。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=card \ -d "payment_method_types[]"=sepa_debit \ -d "payment_method_options[card][capture_method]"=manual ``` 在继续捕获之前,将一个带有银行卡详情的 Payment Method 绑定到 PaymentIntent,并通过确认 PaymentIntent 来授权银行卡。您可以通过在 PaymentIntent 上设置 `payment_method` 和 `confirm` 字段来实现这一点。 > #### 扩展授权 > > 通常,在线银行卡支付的授权有效期为 7 天。要延长有效期,您可以[延长线上银行卡付款的暂停时间](https://docs.stripe.com/payments/extended-authorization.md)。 ## 捕获资金 > #### Checkout Sessions 有一个 PaymentIntent ID > > 如果您使用的是 Checkout Sessions API,请确保使用在 Checkout Session 对象中返回的 [PaymentIntent ID](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-payment_intent)。 支付方式被授权后,PaymentIntent 的[状态](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status)变为 `requires_capture`。要捕获授权资金,请发出 PaymentIntent [捕获](https://docs.stripe.com/api/payment_intents/capture.md)请求。默认情况下,这会捕获全部授权金额。要捕获少于或(对于某些在线卡付款)多于初始金额,请传递 [amount_to_capture](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-amount_to_capture) 选项。部分捕获会自动释放剩余金额。如果尝试为在线卡付款捕获多于初始金额,请参阅[超额捕获文档](https://docs.stripe.com/payments/overcapture.md)。 以下示例演示如何从已授权的 10.99 美元付款中捕获 7.50 美元: ```curl curl https://api.stripe.com/v1/payment_intents/pi_123/capture \ -u "<>:" \ -d amount_to_capture=750 ``` 虽然某些银行卡付款符合[多次捕获](https://docs.stripe.com/payments/multicapture.md)条件,但对于大多数付款,您只能对已授权的付款执行一次捕获。如果部分捕获了一笔付款,则不能再次捕获差额。(相反,请考虑[保存客户的支付方式信息供以后使用](https://docs.stripe.com/payments/save-during-payment.md#save-payment-details-for-future-use),然后根据需要创建未来付款。) 某些发卡行的银行卡对账单和支付方式的界面并不总是能区分授权和捕获(已结算)的付款,这有时会给客户造成混淆。 此外,当客户通过手动捕获完成 PaymentIntent 的付款流程时,会触发 `payment_intent.amount_capturable_updated` 事件。您可以检查 PaymentIntent 的 [amount_capturable](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-amount_capturable) 属性,以查看可以从 PaymentIntent 捕获的总金额。 ## 取消授权 如果需要取消授权,您可以[取消 PaymentIntent](https://docs.stripe.com/refunds.md#cancel-payment)。 ## 授权到期前捕获付款 (Private preview) 可以指示 Stripe 在授权到期前自动捕获,而非手动触发银行卡支付方式的捕获。使用自动延迟捕获,可以避免错过捕获授权付款。也可以自定义从授权到捕获这一过程的延迟时间段。 要启用自动延迟捕获,请在 PaymentIntent 中将 [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card) 设置为 `automatic_delayed`: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed ``` 通过这种方法,Stripe 会在授权到期前约 6 小时触发银行卡付款捕获,从而在授权到期前捕获付款。由此,作为一个备份过程,可以确保到期前完成授权付款捕获。也可以在自动捕获前,手动 [捕获](https://docs.stripe.com/api/payment_intents/capture.md) 或[取消](https://docs.stripe.com/refunds.md#cancel-payment) PaymentInten。 您可以通过纳入 `capture_delay_days` 参数来指定自定义的捕获延迟时间。该参数表示授权成功后延迟捕获的天数: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed \ -d "payment_method_options[card][capture_delay_days]"=3 ``` 在本例中,Stripe 会在授权成功后 3 天自动捕获 PaymentIntent。如果您知道在授权和捕获之间执行操作所需的时间,同时确保在授权到期前捕获,这将非常有用。 > 使用 `capture_method=automatic_delayed` 时,Stripe 会优先在授权到期前捕获付款。如果授权窗口短于指定的延迟时间,我们会在过期前捕获 PaymentIntent,并忽略延迟时间。 ## See also - [使用 Checkout 分离授权与捕获](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#auth-and-capture) - [延长在线银行卡付款的暂停时间](https://docs.stripe.com/payments/extended-authorization.md)