支払いと送金別方式による決済を受け付ける
支払いと送金別方式を使用して決済を受け付ける。
1 回の決済から複数の連結アカウントに、または決済時に特定のユーザーが不明な場合に資金を送金するには、「支払いと送金別方式」を作成します。プラットフォームアカウントでの決済は、連結アカウントへの送金から切り離されます。この決済方式の特徴は以下のとおりです。
- プラットフォームのアカウントで支払いを作成し、売上を連結アカウントに送金します。この支払いは、ご自身のアカウントでの支払いとして表示され、さらに連結アカウントへの送金も表示されます (金額はご自身で決定します)。この金額はアカウント残高から引き落とされます。
- 複数の連結アカウントに売上を送金できます。
- プラットフォームは マーチャントオブレコード であり、アカウント残高から Stripe 手数料、返金、チャージバックの費用が引き落とされます。
この決済方式は、マーケットプレイスが複数の当事者間で決済を分割するのに役立ちます。例えば、レストランと配達員の間で決済を分割するレストラン配達プラットフォームなどです。
注
資金分離 は、連結アカウントに送金する前に決済資金を保護された保留状態に保つプライベートプレビュー機能です。これにより、割り当て資金が無関係なプラットフォーム運営に使用されることを防ぎます。アクセスをリクエストするには、Stripe アカウントマネージャーにお問い合わせください。
Checkout Session を作成サーバー側
Checkout Session (Checkout セッション) は、ラインアイテム、注文金額と通貨、受け付け可能な支払い方法など、支払いフォームで顧客に表示される内容を制御します。サーバー側のエンドポイントを呼び出して Checkout セッションを作成する購入ボタンをウェブサイトに追加します。
サーバー側で Checkout セッションを作成し、レスポンスで返された URL に顧客をリダイレクトします。
| パラメーター | 値 | 必須か | 説明 |
|---|---|---|---|
| line_items | 顧客が購入しているアイテムのリスト。 | 条件付きで必須 | この属性は、顧客が購入しようとしているアイテムを表します。このアイテムは Stripe がホストする決済ページに表示されます。 |
| payment_intent_data[transfer_group] | 決済がグループの一部であることを示す一意の文字列。 | はい | Stripe は、transfer_ 値を指定して PaymentIntent の支払いを自動的に作成する際、同じ値を支払いの transfer_ に割り当てます。 |
| success_url | 有効な URL | はい | Stripe は、顧客が決済を完了した後に成功時の URL にリダイレクトし、{CHECKOUT_ の文字列を Checkout Session ID に置き換えます。この ID を使用して Checkout Session を取得し、ステータスを確認して、顧客に表示する内容を決定してください。独自のクエリパラメーターを追加することもできます。このパラメーターはリダイレクトプロセス全体にわたって存続します。詳細については、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 または失敗のステータスに変わります。
送金を作成するサーバー側
サーバーで、Transfer (送金) を作成し、使用する transfer_ を指定することで、アカウントから連結アカウントに送金します。
送金額と支払い金額が一致している必要はありません。1 回の支払いを複数の送金に分割したり、複数の支払いを 1 回の送金に含めることができます。以下の例では、同じ transfer_ に関連付けられた追加の送金を作成しています。
送金オプション
transfer_ 文字列には任意の値を指定できますが、1 つのビジネスアクションを示す必要があります。また、関連する支払いや transfer_ の指定がない送金を作成することもできます。これはたとえば、プロバイダーに支払いをする必要があるが、それに関連付けられた顧客の支払いがない場合などです。
注
transfer_ は、関連付けられているオブジェクトのみを識別します。標準の機能は影響を受けません。関連する支払いの資金が利用可能になる前に送金されないようにするには、送金の source_ 属性を使用します。
デフォルトでは、金額がプラットフォームのアカウントの利用可能残高を超えていると送金リクエストが失敗します。Stripe は、失敗した送金リクエストを自動的に再試行しません。
支払いに関連付けられている送金の送金リクエストが失敗しないようにします。関連する支払いを送金の source_transaction として指定すると、送金リクエストは自動的に成功します。ただし、Stripe はその支払いの資金がプラットフォームアカウントで利用可能になるまで送金を実行しません。
注
支払いと送金別方式を使用する場合は、入金スケジュールを計画する際に考慮が必要です。自動入金は、source_ が定義されていない送金に支障をきたす場合があります。
各地域での提供状況
Stripe は、以下の地域で支払いと送金別方式に対応しています。
多くのシナリオでは、プラットフォームと連結アカウントは同じ地域に所在している必要があります。許可されていない国境を越えて資金を送金しようとすると、エラーが返されます。複数地域にわたる場合のサポートについては、海外送金 をご覧ください。送金は、許可されたユースケース (決済、トップアップ、手数料) と併用する場合にのみ使用する必要があります。Express ダッシュボードにアクセスできる連結アカウント、またはダッシュボードにアクセスできない連結アカウントには、支払いと送金別方式を使用してください。
次のステップ
次に、連結アカウントからプラットフォーム手数料を徴収する方法をご紹介します。