# 支払いと送金別方式による決済を受け付ける 支払いと送金別方式を使用して決済を受け付ける。 1 回の決済から複数の連結アカウントに、または決済時に特定のユーザーが不明な場合に資金を送金するには、「支払いと送金別方式」を作成します。プラットフォームアカウントでの決済は、連結アカウントへの送金から切り離されます。この決済方式の特徴は以下のとおりです。 - プラットフォームのアカウントで支払いを作成し、売上を連結アカウントに送金します。この支払いは、ご自身のアカウントでの支払いとして表示され、さらに連結アカウントへの送金も表示されます (金額はご自身で決定します)。この金額はアカウント残高から引き落とされます。 - 複数の連結アカウントに売上を送金できます。 - プラットフォームは *マーチャントオブレコード* (The legal entity responsible for facilitating the sale of products to a customer that handles any applicable regulations and liabilities, including sales taxes. In a Connect integration, it can be the platform or a connected account) であり、アカウント残高から Stripe 手数料、返金、チャージバックの費用が引き落とされます。 この決済方式は、マーケットプレイスが複数の当事者間で決済を分割するのに役立ちます。例えば、レストランと配達員の間で決済を分割するレストラン配達プラットフォームなどです。 > 資金分離 は、連結アカウントに送金する前に決済資金を保護された保留状態に保つプライベートプレビュー機能です。これにより、割り当て資金が無関係なプラットフォーム運営に使用されることを防ぎます。アクセスをリクエストするには、Stripe アカウントマネージャーにお問い合わせください。 ## Checkout Session を作成 [サーバー側] [Checkout Session (Checkout セッション)](https://docs.stripe.com/api/checkout/sessions.md) は、ラインアイテム、注文金額と通貨、受け付け可能な支払い方法など、支払いフォームで顧客に表示される内容を制御します。サーバー側のエンドポイントを呼び出して Checkout セッションを作成する購入ボタンをウェブサイトに追加します。 サーバー側で Checkout セッションを作成し、レスポンスで返された [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) に顧客をリダイレクトします。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=Restaurant delivery service" \ -d "line_items[0][price_data][unit_amount]=10000" \ -d "line_items[0][quantity]=1" \ -d "payment_intent_data[transfer_group]=ORDER100" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` | パラメーター | 値 | 必須か | 説明 | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [line_items](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) | 顧客が購入しているアイテムのリスト。 | 条件付きで必須 | この属性は、顧客が購入しようとしているアイテムを表します。このアイテムは Stripe がホストする決済ページに表示されます。 | | [payment_intent_data[transfer_group]](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-transfer_group) | 決済がグループの一部であることを示す一意の文字列。 | はい | Stripe は、`transfer_group` 値を指定して PaymentIntent の支払いを自動的に作成する際、同じ値を支払いの `transfer_group` に割り当てます。 | | [success_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-success_url) | 有効な URL | はい | Stripe は、顧客が決済を完了した後に成功時の URL にリダイレクトし、`{CHECKOUT_SESSION_ID}` の文字列を Checkout Session ID に置き換えます。この ID を使用して Checkout Session を取得し、ステータスを確認して、顧客に表示する内容を決定してください。独自のクエリパラメーターを追加することもできます。このパラメーターはリダイレクトプロセス全体にわたって存続します。詳細については、[Stripe がホストするページでリダイレクトの動作をカスタマイズする](https://docs.stripe.com/payments/checkout/custom-success-page.md) をご覧ください。 | (See full diagram at https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers) ## 支払いと送金別方式の決済後のイベントを処理する [サーバー側] 支払いが完了すると Stripe は [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) イベントを送信します。[Webhook を使用してこのイベントを受信](https://docs.stripe.com/webhooks/quickstart.md)し、顧客への注文確認メールの送信、データベースへの売上の記録、配送ワークフローの開始などのアクションを実行します。 クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックの実行前に顧客がブラウザーのウィンドウを閉じたり、アプリケーションを終了する可能性があります。また、一部の決済手段では決済の確定までに 2 ~ 14 日かかることがあります。導入で非同期イベントをリッスンするように設定すると、1 つの導入で複数の [決済手段](https://stripe.com/payments/payment-methods-guide) に対応できるようになります。 Checkout で支払いを回収する際には、以下のイベントを処理します。 | イベント | 説明 | 次のステップ | | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | ------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | 顧客が Checkout フォームを送信して、決済を正常に承認しました。 | 決済の成功または失敗の結果を待ちます。 | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | 顧客の決済が成功しました。 | 購入された商品やサービスのフルフィルメントを行います。 | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | 何らかの理由により決済が拒否されたか、失敗しました。 | 顧客にメールで連絡して、新たに注文を行うようリクエストします。 | これらのイベントのすべてに、[Checkout Session (Checkout セッション)](https://docs.stripe.com/api/checkout/sessions.md) オブジェクトが含まれています。決済が成功すると、基となる *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) の[ステータス](https://docs.stripe.com/payments/paymentintents/lifecycle.md)が `processing` から `succeeded` または失敗のステータスに変わります。 ## 送金を作成する [サーバー側] サーバーで、[Transfer (送金)](https://docs.stripe.com/api/transfers/create.md) を作成し、使用する `transfer_group` を指定することで、アカウントから連結アカウントに送金します。 ```curl curl https://api.stripe.com/v1/transfers \ -u "<>:" \ -d amount=7000 \ -d currency=usd \ -d "destination={{CONNECTEDACCOUNT_ID}}" \ -d transfer_group=ORDER100 ``` 送金額と支払い金額が一致している必要はありません。1 回の支払いを複数の送金に分割したり、複数の支払いを 1 回の送金に含めることができます。以下の例では、同じ `transfer_group` に関連付けられた追加の送金を作成しています。 ```curl curl https://api.stripe.com/v1/transfers \ -u "<>:" \ -d amount=2000 \ -d currency=usd \ -d destination={{OTHER_CONNECTED_ACCOUNT_ID}} \ -d transfer_group=ORDER100 ``` ### 送金オプション `transfer_group` 文字列には任意の値を指定できますが、1 つのビジネスアクションを示す必要があります。また、関連する支払いや `transfer_group` の指定がない送金を作成することもできます。これはたとえば、プロバイダーに支払いをする必要があるが、それに関連付けられた顧客の支払いがない場合などです。 > `transfer_group` は、関連付けられているオブジェクトのみを識別します。標準の機能は影響を受けません。関連する支払いの資金が利用可能になる前に送金されないようにするには、送金の `source_transaction` 属性を使用します。 デフォルトでは、金額がプラットフォームの[アカウントの利用可能残高](https://docs.stripe.com/connect/account-balances.md)を超えていると送金リクエストが失敗します。Stripe は、失敗した送金リクエストを自動的に再試行しません。 支払いに関連付けられている送金の送金リクエストが失敗しないようにします。関連する支払いを[送金の source_transaction として](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#transfer-availability)指定すると、送金リクエストは自動的に成功します。ただし、Stripe はその支払いの資金がプラットフォームアカウントで利用可能になるまで送金を実行しません。 > 支払いと送金別方式を使用する場合は、*入金* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit)スケジュールを計画する際に考慮が必要です。自動入金は、`source_transaction` が定義されていない送金に支障をきたす場合があります。 ## 各地域での提供状況 Stripe は、以下の地域で支払いと送金別方式に対応しています。 - AT - AU - BE - BG - BR - CA - CH - CY - CZ - DE - DK - EE - ES - FI - FR - GB - GR - HR - HU - IE - IT - JP - LI - LT - LU - LV - MT - MX - MY - NL - NO - NZ - PL - PT - RO - SE - SG - SI - SK - US Stripe は、アメリカ、カナダ、イギリス、EEA、スイスの決済残高での海外送金をサポートしています。その他のシナリオでは、プラットフォームと連結アカウントは同じ地域にある必要があります。資金をサポート対象外の国境または残高に送金しようとすると、エラーが返されます。他の地域間でサポートされている資金フローについては、[海外入金](https://docs.stripe.com/connect/cross-border-payouts.md)をご覧ください。 送金は、[請求](https://docs.stripe.com/connect/charges.md)、[トップアップ](https://docs.stripe.com/connect/top-ups.md)、[手数料](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#collect-fees)に対して許可されたユースケースと組み合わせてのみ使用する必要があります。支払いと送金別方式は、連結アカウントのマイナス残高に対する責任を負う場合にのみ使用することをお勧めします。 ## 次のステップ 決済を処理できるようになったら、連結アカウントから[アプリケーション手数料](https://docs.stripe.com/connect/marketplace/tasks/app-fees.md)を回収してマーケットプレイスを収益化できるようになります。