デスティネーション支払いを使用した決済を受け付ける
デスティネーション支払いを使用して決済を受け付ける。
顧客が連結アカウントが提供する商品またはサービスのためにプラットフォームと取引し、連結アカウントに即座に資金を送金する場合は、デスティネーション支払いを作成します。この決済方式の場合:
- プラットフォームのアカウントで支払いを作成します。
- 売上の一部または全額を、連結アカウントに送金するかどうかを決定します。
- プラットフォームは マーチャントオブレコード であり、アカウント残高から Stripe 手数料、返金、チャージバックの費用が引き落とされます。
特定の例外を除き、プラットフォームと連結アカウントが同じ地域にない場合は、Payment Intent で on_behalf_of パラメーターを使用して、連結アカウントを売上処理加盟店として指定する必要があります。
このガイドでは、Stripe がホストする Checkout Session の作成方法を説明します。また、Stripe Elements または API を使用することもできます。
Checkout Session を作成サーバー側
Checkout Session (Checkout セッション) は、ラインアイテム、注文金額と通貨、受け付け可能な支払い方法など、支払いフォームで顧客に表示される内容を制御します。サーバー側のエンドポイントを呼び出して Checkout セッションを作成する購入ボタンをウェブサイトに追加します。
サーバー側で Checkout セッションを作成し、レスポンスで返された URL に顧客をリダイレクトします。
| パラメーター | 値 | 必須か | 説明 |
|---|---|---|---|
| payment_intent_data[transfer_data] | destination | はい | デスティネーション支払いであることを示しています。デスティネーション支払いでは、支払いがプラットフォームで処理され、売上が即時かつ自動的に連結アカウントの保留中の残高に送金されます。 |
| line_items | 最大 100 アイテムのリスト | はい | 顧客が購入しようとしているアイテムを表します。このアイテムは埋め込みの支払いフォームに表示されます。 |
| success_url | 有効な URL | はい | 顧客が支払いを完了した後にリダイレクトされる URL。値 {CHECKOUT_ を使用して Checkout セッションを取得し、そのステータスを調べて顧客に表示する内容を決定します。Custom クエリパラメーター を追加することもできます。これはリダイレクト プロセス全体にわたって存続します。 |
| payment_intent_data[application_fee_amount] | 金額 | Connect に必須 | プラットフォームが取引で受け取る予定の金額。支払いがキャプチャーされると、プラットフォームから、transfer_ で指定された連結アカウントに支払い金額の全額が即時送金されます。その後 application_ がプラットフォームに返金され、プラットフォームの金額から Stripe 手数料が差し引かれます。 |
デスティネーション支払いの決済後のイベントを処理するサーバー側
支払いが完了すると Stripe は checkout.session.completed イベントを送信します。Webhook を使用してこのイベントを受信し、顧客への注文確認メールの送信、データベースへの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックの実行前に顧客がブラウザーのウィンドウを閉じたり、アプリケーションを終了したりする可能性があります。また、一部の支払い方法では支払いの確定までに 2 ~ 14 日かかることがあります。実装で非同期イベントをリッスンするように設定すると、1 つの実装で複数の支払い方法に対応できるようになります。
Checkout で支払いを回収する際には、以下のイベントを処理します。
| イベント | 説明 | 次のステップ |
|---|---|---|
| checkout.session.completed | 顧客が Checkout フォームを送信して、決済を正常に承認しました。 | 決済の成功または失敗の結果を待ちます。 |
| checkout.session.async_payment_succeeded | 顧客の決済が成功しました。 | 購入された商品やサービスのフルフィルメントを行います。 |
| checkout.session.async_payment_failed | 何らかの理由により決済が拒否されたか、失敗しました。 | 顧客にメールで連絡して、新たに注文を行うようリクエストします。 |
これらのイベントのすべてに、Checkout Session (Checkout セッション) オブジェクトが含まれています。決済が成功すると、基となる PaymentIntent のステータスが processing から succeeded または失敗のステータスに変わります。
次のステップ
次に、連結アカウントから プラットフォーム手数料を徴収 する方法をご紹介します。