コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
決済手段
決済手段を追加
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
    概要
    支払いを複数回キャプチャー
    支払いでオーソリ額を超える金額をキャプチャー
    オンラインカード決済に対する保留を延長
    オーソリを増額する
    支払いの一部オーソリ
    ベータから移行
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
Financial Connections
Climate
ホーム支払いFlexible acquiring

支払いを複数回キャプチャーする

オーソリされた金額に達するまで、PaymentIntent を複数回キャプチャーします。

マルチキャプチャーを実行すると、1 回の取引に対し、CheckoutSession の確定ステップで作成された PaymentIntent を複数回キャプチャーできるようになります (PaymentIntent の総額に達するまで)。配送が数回に分かれる注文があり、注文のフルフィルメントを部分的に実行するたびにその売上をキャプチャーしたい場合は、このマルチキャプチャーが有効です。

IC+ の特長

マルチキャプチャーは、IC+ 料金体系のユーザーに提供される機能に含まれています。現在 Stripe の料金体系を組み合わせてご利用で、この機能へのアクセスをご希望の場合は、Stripe サポートにお問い合わせください。

サポート状況

マルチキャプチャーを行う際は、次の制限事項に注意してください。

  • オンラインカード決済のみサポートしています
  • アメリカン・エキスプレス、Visa、ディスカバー、Mastercard、Cartes Bancaires、ダイナースクラブ、銀聯カード (CUP)、JCB で利用可能です。
  • source_transaction を使用する支払いと送金別方式の売上フローには対応していない
  • Stripe では 1 つの PaymentIntent に対して最大 50 回キャプチャーできます
  • CheckoutSession で mode は payment に設定され、capture_method は manual に設定されます

CUP と JCB のサポート

CUP によるマルチキャプチャーは、アメリカでのみご利用いただけます。JCB によるマルチキャプチャーは、アメリカ、カナダ、オーストラリア、ニュージーランドでのみご利用いただけます。

ベストプラクティス

1 つの注文を複数回に分けて配送する場合は、各配送の詳細を最終顧客に事前通知するようにしてください。そうすることで、銀行取引明細書に複数の取引が表示されていることに混乱した顧客からの問い合わせやチャージバックを防止できます。顧客への通知については、以下のベストプラクティスを参考にしてください。

  • 購入前の段階で、配送予定日と取引金額を顧客に通知する。
  • 配送の都度、取引金額を通知する。
  • 全額返金とキャンセルに関するポリシーを開示する。

新しい CheckoutSession を作成する際、custom_text フィールドを使用して決済ページに追加のテキストを表示することで、法令遵守要件を満たせます。

法令遵守

マルチキャプチャーを行うにあたり、お客様は適用されるすべての法律、規制、ネットワーク規則を遵守する責任を負うものとします。この機能を使用するカードネットワークの規則に照らし、取引の内容が適用されるすべての規則に準拠していることを確認してください。規則はネットワークごとに異なります。たとえば、ほとんどのカードネットワークでは、マルチキャプチャーの用途を個別配送される商品の販売に対するカード非提示取引に制限しています。一部のカードネットワークでは、業種 (旅行業など) によって企業のマルチキャプチャーを認めていますが、分割払いや入金のワークフローでマルチキャプチャーを行うことは認められない場合があります。

このページに記載されている情報のうち、これらの要件の遵守に関する情報は一般的なガイダンスであり、法律、税務、会計、その他の専門的なアドバイスではありません。自らの義務について不明な点がある場合は、専門家に相談することをお勧めします。

Checkout セッションを作成する

サーバー側のエンドポイントを呼び出す決済ボタンをウェブサイトに追加して Checkout セッションを作成します。

checkout.html
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>r

Checkout セッションには、顧客が支払いフォームにリダイレクトされたときに表示される内容がプログラム的に表されます。セッションは、以下のオプションを使用して設定することが可能です。

  • 請求項目
  • 利用通貨

success_url には、支払い完了後に Checkout で顧客が戻されるウェブページの URL を指定します。顧客が決済プロセスを完了することなく終了した場合に、Checkout が顧客を戻すウェブページの cancel_url 値をオプションで指定することもできます。

注

デフォルトでは、Checkout セッションは作成後 24 時間で期限切れとなります。

Checkout セッションを作成したら、レスポンスで返された URL に顧客をリダイレクトします。

最後に、request_multicapture を if_available に設定して、マルチキャプチャー機能を有効にします。

Ruby
# This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/create-checkout-session' do session = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], payment_method_options: { card: { request_multicapture: 'if_available', }, }, mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', }) redirect session.url, 303 end

決済手段

デフォルトでは、カードとその他の一般的な決済手段が有効になっています。Stripe ダッシュボードで個々の決済手段をオンまたはオフにできます。Checkout では、Stripe は通貨と制限事項を評価して、対応している決済手段を顧客に動的に提示します。

決済手段が顧客にどのように表示されるか確認するには、ダッシュボードで取引 ID を入力するか、または注文金額と通貨を設定します。

決済手段の設定では Apple Pay と Google Pay を有効にすることができます。デフォルトでは、Apple Pay は有効で、Google Pay は無効になっています。ただし、有効になっていても Stripe が除外する場合があります。配送先住所を収集せずに税金の自動計算を有効にした場合、Google Pay は除外されます。

Checkout の Stripe 上のオンラインページでは、Apple Pay や Google Pay を有効にするために実装内容を変更する必要はありません。Stripe は、これらの決済を他のカード決済と同じように処理します。

PaymentIntent をキャプチャーする

PaymentIntent が requires_capture 状態で、かつマルチキャプチャーが available の場合、オプションの final_capture パラメーターを false に設定すると、キャプチャー用の API を呼び出す際に未キャプチャーの残額をリリースしないよう Stripe に指示が送られます。たとえば、10 USD の PaymentInent を確定した場合に、7 USD を final_capture=false にしてキャプチャーすると、残りの 3 USD はオーソリ状態が維持されることになります。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents/pi_xxx/capture \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount_to_capture=700 \ -d final_capture=false \ -d "expand[]"=latest_charge

PI キャプチャーのレスポンスに含まれる amount_capturable と amount_received フィールドは適宜更新されます。

// PaymentIntent Response { "id": "pi_ANipwO3zNfjeWODtRPIg", "object": "payment_intent", "amount": 1000, "amount_capturable": 300, // 1000 - 700 = 300 "amount_received": 700, // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "amount": 1000, "amount_captured": 700, "amount_refunded": 0, ... } ... }

最終キャプチャー

以下のいずれかが実行されるまで、PaymentIntent のステータスは requires_capture のままです。

  • final_capture を true に設定する。
  • final_capture パラメーターを使わずにキャプチャーする (final_capture はデフォルトで true に設定されているため)。
  • オーソリの有効期間が切れる。

この時点で Stripe は残りの売上をリリースし、PaymentIntent のステータスが succeeded に変わります。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents/pi_xxx/capture \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount_to_capture=200 \ -d final_capture=true \ -d "expand[]"=latest_charge

PI キャプチャーのレスポンスに含まれる amount_capturable と amount_received フィールドは適宜更新されます。

// PaymentIntent Response { "id": "pi_ANipwO3zNfjeWODtRPIg", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, // not 100 due to final_capture=true "amount_received": 900, // 700 + 200 = 900 // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "amount": 1000, "amount_captured": 900, "amount_refunded": 0, ... } ... }

未キャプチャーの PaymentIntent は canceled になりますが、一部キャプチャーされた PaymentIntent は succeeded になります。

オプションキャプチャーされていない売上をリリースする

構築したシステムをテストする

Stripe テストカードと任意のセキュリティコード、郵便番号、将来の日付の有効期限を使用して、マルチキャプチャーによる決済をテストします。

番号決済手段説明
pm_card_visaこのテストカードは、マルチキャプチャーをサポートしています。
pm_card_visa_cartesBancairesマルチキャプチャーをサポートする Cartes Bancaires または Visa のテストカード。

返金

PaymentIntent のステータスが requires_capture の場合、キャプチャー合計額から返金合計額を引いた金額 (amount_received — amount_refunded に達するまで、何度でも返金できます。charge.refunded フィールドは、最後のキャプチャーが実行され、amount_received の全額が返金された場合にのみ true に移行します。

Stripe は、refund_application_fee=true または reverse_transfer=true を指定した一部返金に対応していません。代わりに、application fee refund (プラットフォーム手数料の返金) エンドポイントと transfer reversal (送金の差戻し) エンドポイントを使用して、手数料の一部返金と送金の差戻しを手動で実行できます。application fee refund エンドポイントまたは transfer reversal エンドポイントを使用すると、Stripe は refund_application_fee=true または reverse_transfer=true の返金に対応できなくなります。

Connect

Multicapture は、source_transaction パラメーターを伴う支払いと送金別方式を除き、Connect のすべてのユースケースに対応します。application_fee_amount と transfer_data[amount] パラメーターにはいくつかの追加検証があります。Multicapture を Connect に実装する際は以下の検証を考慮してください。

  • 最初のキャプチャー時に application_fee_amount または transfer_data[amount] を設定した場合、後続のすべてのキャプチャーで同じ値が要求されます。キャプチャー時に渡される application_fee_amount または transfer_data[amount] は、PaymentIntent の作成、確定、更新時に渡される値を上書きします。
  • Stripe は、refund_application_fee=true または reverse_transfer=true を指定したマルチキャプチャーに対する一部返金に対応していません。application fee refund (プラットフォーム手数料の返金) エンドポイントと transfer reversal (送金の差戻し) エンドポイントを使用すると、手数料の一部返金や送金の差戻しを実行できます。

Webhook

支払いの更新 Webhook

Stripe は、支払いのキャプチャーが行われるたびに、charge.updated Webhook を送信します。

たとえば、application_fee_amount が指定されたデスティネーション支払いをマルチキャプチャーする場合、最初のキャプチャーが行われると、Stripe はこれらの空のフィールドに値を入力します。

// charge.updated { "data": { "id": "ch_xxx", "object": "charge", "amount": 1000, "balance_transaction": "txn_xxx", // applicable to all charges "transfer": "tr_xxx", // applicable to destination charges only "application_fee": "fee_xxx", // applicable to Connect only ... }, "previous_attributes": { "balance_transaction": null, // applicable to all charges "transfer": null, // applicable to destination charges only "application_fee": null, // applicable to Connect only } }

payment_intent.amount_capturable_updated

Stripe は、amount_to_capture と final_capture の値に関係なく、キャプチャーのたびに payment_intent.amount_capturable_updated を送信します。

たとえば、10 USD の金額の PaymentIntent から 1 USD をキャプチャーすると、PaymentIntent の amount_capturable フィールドが 9 USD に更新されます。

// payment_intent.amount_capturable_updated { "data": { "id": "pi_xxx", "object": "payment_intent", "amount": 1000, "amount_capturable": 900 // 1000 - 100 = 900 ... }, "previous_attributes": { "amount_capturable": 1000 } }

支払いのキャプチャーイベント

Stripe は 最後のキャプチャー、またはオーソリ期間の終了時に、未キャプチャーの金額のオーソリを差戻すために charge.captured イベントを送信します。支払いの captured フィールドは、最後のキャプチャーまたはオーソリの差戻しが終わった時にのみ true になります。

たとえば、amount=0 と final_capture=true を指定してキャプチャーを行うと、支払いの captured 属性は false から true に変わります。

// charge.captured { "data": { "id": "ch_xxx", "object": "charge", "captured": true ... }, "previous_attributes": { "captured": false } }

返金 Webhook

マルチキャプチャーの返金 Webhook は、マルチキャプチャー以外の返金 Webhook と同じです。

部分返金が行われるたびに、refund.created イベントが送信されます。連結アカウントの場合、これに加えてプラットフォーム手数料を返金する際には application_fee.refunded イベント、また送金を差戻す際には transfer.reversed イベントも送信されます。

このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc