支払いでオーソリ額を超える金額をキャプチャーする
オーバーキャプチャーを使用して、PaymentIntent のオーソリ額を超える金額をキャプチャーします。
オーバーキャプチャーにより、カード決済でオーソリ額よりも高い金額をキャプチャーできるようになります。増分オーソリとは異なり、オーバーキャプチャーではカードネットワークによる追加のオーソリは発生しません。PaymentIntent をオーバーキャプチャーしても、顧客のクレジットカード明細書にはすぐに反映されません。キャプチャー額が決済されると、保留中のオーソリのキャプチャー額が更新されます。
サポート状況
オーバーキャプチャーを行う際は、次の制限事項に注意してください。
- Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでのみ利用できます。
- オンラインカード決済のみ利用できます。対面カード決済については、チップの収集方法を一度ご確認ください。
- カードブランドは、オーバーキャプチャーできる金額を制限 (通常はオーソリ額の一定割合) し、国、カードタイプ、加盟店カテゴリー制限などの追加の制約を適用しています (以下を参照)。
- CheckoutSession で mode は
payment
に設定され、capture_method はmanual
に設定されます
IC+ の特長
Stripe は、IC+ 料金体系 のユーザーにオーバーキャプチャーの機能を提供しています。標準の Stripe 料金体系をご利用で、この機能の利用をご希望の場合は、support.stripe.com で詳細をご確認ください。
カードネットワーク、加盟店の所在国、加盟店カテゴリー別のサポート状況
カードブランド | 加盟店の所在国 | 加盟店カテゴリー | 上限割合 |
---|---|---|---|
Visa* | グローバル | タクシー / リムジン、飲食店 / レストラン、居酒屋 (酒類提供店)、ファーストフード店、美容院 / 理髪店、ヘルススパ / エステティックサロン | +20% |
グローバル | レンタカー | +15% または +75 USD (または現地通貨での相当額) の金額が高い方 | |
グローバル | 宿泊施設、クルーズ会社 | +15% | |
グローバル** | その他すべての加盟店カテゴリー | +15% | |
Mastercard | アメリカ*** | 飲食店 / レストラン、ファストフード店 | +30% |
アメリカン・エキスプレス | グローバル**** | 飲食店 / レストラン、居酒屋 (酒類提供店)、ファストフード店 | +30% |
グローバル | タクシー / リムジン、美容院 / 理髪店、ヘルススパ / エステティックサロン | +20% | |
グローバル | 宿泊施設、レンタカー、トラック / 多目的トレーラーレンタル、キャンピングカー / RV レンタル、食料品店、小売店 | +15% | |
ディスカバー | グローバル | タクシー / リムジン、飲食店 / レストラン、居酒屋 (酒類提供店)、ファーストフード店、美容院 / 理髪店、ヘルススパ / エステティックサロン | +20% |
グローバル | 宿泊施設、レンタカー | +15% |
** カード保有者が開始した取引の場合
*** アメリカで発行されたカードであること
**** デビットカード決済およびプリペイドカード決済の上限割合は 20%
サポートが限定されるネットワーク (ベータ)
強力な顧客認証 (SCA) 下でのオーバーキャプチャー
強力な顧客認証 (SCA) 要件が適用される国にお客様とカード保有者が所在している場合は、オーバーキャプチャーの利用制限にご注意ください。
- SCA 要件では、通常、最終的なキャプチャー額以上の金額を認証する必要があります。キャプチャーを行う際は、このページの他の項目でも説明されているようにオーバーキャプチャーを行うのではなく、最も高い見積もり額に対して認証とオーソリを行うようにしてください。その後、商品またはサービスの合計金額に応じて、認証された全額をキャプチャーできます。元のオーソリ額および認証額を超える金額をキャプチャーする場合は、元の支払いをキャンセルし、希望する金額で新しい支払いを作成する必要があります。ただし、この要件にはいくつかの例外があります (以下を参照)。
- SCA は、オーバーキャプチャーが許可される取引免除項目をいくつか設けています。たとえば、顧客が決済フローに介在しない加盟店主導の取引 (MIT) は、免除される可能性があります。取引が MIT に分類されるケースについては、こちらの記事をご覧ください。
オーバーキャプチャーと SCA 要件を総合的に理解するには、必要なドキュメントによく目を通しておく必要があります。詳しくは、SCA ガイドをご覧ください。
新しい CheckoutSession を作成する際、custom_text フィールドを使用して決済ページに追加のテキストを表示することで、法令遵守要件を満たせます。
法令遵守
オーバーキャプチャーを行うにあたり、お客様は適用されるすべての法律、規制、ネットワーク規則を遵守する責任を負うものとします。この機能を使用するカードネットワークの規則に照らし、取引の内容が適用される規則に準拠していることを確認してください。規則はネットワークごとに異なります。たとえば、一部のカードネットワークは、オーソリ時に最終取引額が判明している取引でオーバーキャプチャーを利用することを認めていません。
このページに記載されている情報のうち、これらの要件の遵守に関する情報は一般的なガイダンスであり、法律、税務、会計、その他の専門的なアドバイスではありません。自らの義務について不明な点がある場合は、専門家に相談することをお勧めします。
Checkout セッションを作成する
サーバー側のエンドポイントを呼び出す決済ボタンをウェブサイトに追加して Checkout セッションを作成します。
<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>
Checkout セッションには、顧客が支払いフォームにリダイレクトされたときに表示される内容がプログラム的に表されます。セッションは、以下のオプションを使用して設定することが可能です。
- 請求項目
- 利用通貨
success_
には、支払い完了後に Checkout で顧客が戻されるウェブページの URL を指定します。顧客が決済プロセスを完了することなく終了した場合に、Checkout が顧客を戻すウェブページの cancel_
をオプションで指定することもできます。
注
デフォルトでは、Checkout セッションは作成後 24 時間で期限切れとなります。
Checkout セッションを作成したら、レスポンスで返された URL に顧客をリダイレクトします。
オーバーキャプチャー機能を有効にするには、request_overcapture を if_
に設定します。
顧客が決済を完了したら、PaymentIntent のlatest_charge の overcapture.status フィールドを参照し、サポート状況に基づいて、その支払いにオーバーキャプチャーを適用できるかどうかを判断します。available
の場合、maximum_amount_capturable フィールドはその PaymentIntent でキャプチャーできる最大金額を示します。unavailable
の場合、maximum_amount_capturable はオーソリ額を示します。
// PaymentIntent response { "id": "pi_xxx", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, "amount_received": 0, "status": "requires_capture", ... // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "payment_method_details": { "card": { "amount_authorized": 1000 "overcapture": { "status": "available", // or "unavailable" "maximum_amount_capturable": 1200 } } } ... } ... }
PaymentIntent をキャプチャーする
PaymentIntent の現在のオーソリ額を超える金額をキャプチャーするには、capture (キャプチャー) エンドポイントを使用し、amount_to_capture (maximum_amount_capturable 上限) を指定します。
maximum_
を超える金額をキャプチャーする必要がある場合は、増分オーソリを実行してオーソリ額を増額します (サポートされている場合)。
オーバーキャプチャーが成功すると、PaymentIntent キャプチャーのレスポンスに含まれる amount_capturable と amount_received フィールドが適宜更新されます。返されるキャプチャー済みの PaymentIntent では、この決済で移動する合計金額を反映する形で amount が更新されます。関連付けられている Charge の amount_authorized フィールドを使用して、オーバーキャプチャーに成功した支払いの最初のオーソリ額を参照します。
// PaymentIntent response { "id": "pi_xxx", "object": "payment_intent", "amount": 1200, "amount_capturable": 0, "amount_received": 1200, "status": "succeeded", ... // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "payment_method_details": { "card": { "amount_authorized": 1000, "overcapture": { "maximum_amount_capturable": 1200, "status": "available" // or "unavailable" } } } ... } ... }
実装内容をテストする
以下の Stripe テストカードを、セキュリティコードと将来の有効期限とともに使用して、テスト時にオーバーキャプチャーをリクエストして実行します。テスト時に、所定のネットワークの決済でオーバーキャプチャーが可能であれば、本番環境の決済でも利用できます。
カードブランド | 番号 | 決済手段 |
---|---|---|
Visa | pm_ | |
Mastercard | pm_ | |
アメリカン・エキスプレス | pm_ | |
ディスカバー | pm_ |