非同期キャプチャー
非同期キャプチャーを使用して PaymentIntent 確定の高速化を有効にします。
非同期キャプチャーは、キャプチャー操作をバックグラウンドで実行することで、PaymentIntent の確定の遅延を短縮します。キャプチャーリクエストを行うと、システムは成功のレスポンスを受け取り、Stripe はバックエンドで支払いのキャプチャーを完了します。この PaymentIntent キャプチャーの高速化を使用するには、PaymentIntent の確定時に capture_
パラメーターを設定します。
非同期キャプチャーを選択する
既存の実装をアップグレードして非同期キャプチャーのサポートを追加するには、PaymentIntent を作成する際に、キャプチャー方法として automatic_
を使用します。Stripe は最新バージョンの API でその機能をデフォルトで有効にしているため、capture_
パラメーターの指定は必須ではありません。
非同期キャプチャーを選択すると、API レスポンスと一部の Webhook は他のキャプチャー方法とは動作が異なるため、追加の変更が必要になる場合があります。
すべての支払いで、以下のオブジェクトの balance_transaction は null
です。Connect の支払いの場合は、以下のオブジェクトの transfer と application_fee も null
です。
- API レスポンスの関連付けられた Charge オブジェクト
- charge.succeeded Webhook
- payment_intent.succeeded Webhook
charge.succeeded Webhook の変更された Charge オブジェクト:
# Charge Object { "id": "ch_123", "object": "charge", "amount_captured": 1000, # the capture has happened "application_fee_amount": 100, "captured": true, "balance_transaction": "txn_123", # applicable to all charges. "transfer": "tr_123", # applicable to destination charge only. "application_fee": "fee_123", # applicable to destination charge only. "balance_transaction": null, # object might not be created yet, might be shown as nil. "transfer": null, # object might not be created yet, might be shown as nil. "application_fee": null, # object might not be created yet, might be shown as nil. ... }
変更された API レスポインスと payment_intent.succeeded Webhook: (API バージョンによって異なります)
Webhook をリッスンして、追加データが利用可能になったときに通知を受け取ります
警告
charge.updated Webhook の SLA は、PaymentIntent が正常に確定されてから 1 時間後です。
非同期キャプチャーを使用する場合は、Webhook をリッスンして、最初は null
であったオブジェクトのステータスを確認できます。
- balance_transaction を取得するには、charge.updated Webhook イベントに登録します。
- application_fee を取得するには、application_fee.created Webhook イベントに登録します。
- transfer を取得するには、transfer.created Webhook イベントに登録します。
非同期キャプチャーの Webhook
# charge.updated events { "data": { "id": "ch_123", "object": "charge", "amount": 100, "balance_transaction": "txn_123", # applicable to all charges. "transfer": "tr_123", # applicable to destination charge only. "application_fee": "fee_123", # applicable to destination charge only. ... }, previous_attributes: { "balance_transaction": null, # applicable to all charges. "transfer": null, # applicable to destination charge only. "application_fee": null, # applicable to destination charge only. } }
# transfer.created events { "data": { "id": "tr_123", "object": "transfer", "amount": 1000, ... } }
# application_fee.created events { "data": { "id": "fee_123", "object": "application_fee", "amount": 100, ... } }