将来の支払いを設定する
Checkout セッションで支払い情報を保存し、後で顧客に請求する方法をご紹介します。
Checkout セッションのセットアップモードを使用すると、最初の支払いを回収せずに、後で使用するために顧客の支払い情報を保存できます。これは、すぐに顧客のアカウントを登録して、支払いを行えるように設定し、将来、顧客がオフラインのときに請求する場合に役立ちます。
決済手段を取得するサーバー側
顧客が Checkout セッションを正常に完了した後に、貴社にて checkout.session.completed Webhook を処理します。この Webhook には Session オブジェクトが含まれています。詳細は Webhook を設定するをご覧ください。
Session オブジェクトを取得したら、次の操作を行います。
- Checkout セッションの際に作成された SetupIntent の ID である setup_intent キーの値を入手します。
setup_
ID を使用し、SetupIntent オブジェクトを取得します。返されるオブジェクトには、次のステップで顧客に関連付けることができる payment_method ID が含まれています。intent
決済手段を顧客に関連付けるサーバー側
既存の顧客を設定して Checkout セッションを作成しなかった場合は、PaymentMethod の ID を使用して、PaymentMethod を Customer に関連付けます。
それ以外の場合、PaymentMethod は Checkout セッションの作成時に指定した Customer に自動的に関連付けられます。
後で決済手段に請求するサーバー側
PaymentMethod を顧客に関連付けた後、PaymentIntent を使用して、オフセッションの支払いを行うことができます。
- customer を 顧客の ID に、payment_method を PaymentMethod の ID に設定します。
- off_session を
true
に設定して、支払いの試行時に顧客が決済フローを実行中でなく、カード発行会社、銀行、その他の決済機関といった提携機関からの認証リクエストに対応できないことを示します。決済フロー中に提携機関から認証をリクエストされた場合、Stripe は以前のオンセッション取引の顧客情報を使用して免除をリクエストします。免除の条件が満たされていない場合、PaymentIntent はエラーをスローする可能性があります。 - PaymentIntent の confirm プロパティの値を
true
に設定します。これにより、PaymentIntent が作成されると直ちに確定が行われます。
支払いが失敗すると、リクエストも 402 HTTP ステータスコードで失敗し、PaymentIntent のステータスが requires_payment_method になります。アプリケーションに戻って支払いを完了するよう (メールやアプリ内通知を送信するなどして) 顧客に通知し、顧客を新しい Checkout セッションに誘導して別の決済手段を選択するよう促します。