Connect で Terminal を使用
Stripe Terminal を Connect プラットフォームに組み込みます。
Stripe Terminal は、Connect と互換性があり、プラットフォームおよび連結アカウントで対面支払いを受け付けられるようにします。
プラットフォームが連結アカウントの支払いを処理する方法に従って、Terminal を Connect に統合します。
- ダイレクト支払いを使用する場合は、Terminal API リクエストを送信して、連結アカウントの API キーを使用してリーダーを設定し、決済を受け付けます。プラットフォームは、
Stripe-Accountヘッダーを使用して連結アカウントを識別し、その API キーを使用できます。 - デスティネーション支払いを使用する場合は、Terminal API リクエストを送信してリーダーを設定し、プラットフォーム API キーを使用して決済を受け付け、メタデータを使用して連結アカウントを識別します。
どちらの場合も、店舗 を使用してリーダーをグループ化します。
メモ
Terminal 連結アカウントが取引を行うには、card_ ケイパビリティが必要です。
ダイレクト支払い
連結アカウントがリーダーを所有
この導入では、すべての API リソースはプラットフォームではなく連結アカウントに属します。連結アカウントが、Stripe の手数料、返金、チャージバックのコストに責任を負います。
ダッシュボードに連結アカウントとしてログインすると、Terminal データを表示することができます。
店舗とリーダーの作成 サーバー側
API リクエストに Stripe-Account ヘッダーを含めて、連結アカウントの 店舗 と Readers を作成します。
接続トークンの作成 サーバー側
メモ
Connect OAuth 認証を使用する場合、本番環境とサンドボックスでそれぞれ、各モード専用のアプリケーションクライアント ID を使用して連結アカウントを別々にオーソリする必要があります。
Terminal SDK 用に ConnectionToken を作成する際は、Stripe-Account ヘッダーで、支払いを受け付ける連結アカウントを設定します。リーダーのアクセスを制御するために、location パラメーターを指定することもできます。location を指定した場合、ConnectionToken はその場所に割り当てられたリーダーでのみ利用可能になります。location を指定しない場合、すべてのリーダーが ConnectionToken を使用できます。
PaymentIntents を作成する クライアント側 サーバー側
iOS、Android、React Native の SDK を使用すると、クライアントまたはサーバーで PaymentIntent を作成できます。JavaScript SDK は、サーバー側の作成のみに対応しています。
クライアント側
クライアント側でダイレクト支払い用の PaymentIntent を作成するときに、PaymentIntent に追加のパラメーターを指定する必要はありません。その代わり、ConnectionToken を作成するときに、決済を受け付ける連結アカウントの Stripe-Account ヘッダーで ConnectionToken を作成します。クライアントの SDK では、ConnectionToken が属する同じ連結アカウントで PaymentIntent を作成します。詳細については、クライアント側の PaymentIntents を作成するをご覧ください。
サーバー側
JavaScript SDK では、サーバー上で PaymentIntent を作成する必要があります。他のクライアントの SDK で、支払いの開始に必要な情報をアプリですぐに利用できない場合には、サーバー上に PaymentIntent を作成することをお勧めします。詳細については、PaymentIntents を作成する (サーバー側) をご覧ください。
サーバー側でダイレクト支払い用の PaymentIntent を作成するときは、Stripe-Account ヘッダーに連結アカウントを設定します。
次に、PaymentIntent を処理するために決済を徴収するステップに従います。
プラットフォーム所有のリーダー Private preview
プライベートプレビュー
ダイレクト支払いを使用したプラットフォームによるリーダーの所有と管理をご希望の場合は、お問い合わせください。このプライベートベータ版の機能は現在、スマートリーダーで利用でき、サーバー主導型連携を活用しています。この連携は、1 つのプラットフォームで管理している連結アカウントでのみ機能します。
この導入では、プラットフォームは Location や Reader などのデバイスリソースを所有し、連結アカウントは PaymentIntents などの支払いリソースを所有します。これにより、プラットフォームは、複数の連結アカウントの支払いを処理する 1 つのリーダーを管理できます。Stripe の手数料、返金、チャージバックのコストは連結アカウントが負担します。
ダッシュボードでは、プラットフォームアカウントにログインしているときに Terminal デバイス管理データを直接表示できます。連結アカウントとしてログインすることで、支払いデータを表示できます。
店舗とリーダーを作成
連結アカウント別に Reader オブジェクトをグループ化するための最適な方法は、オブジェクトを Locations に割り当てることです。プラットフォームアカウントで、アカウントを識別する表示名を使用して、連結アカウントの Location を作成します。
アプリケーションをスマートリーダーに接続するには、事前にリーダーをプラットフォームアカウントに登録しておく必要があります。
PaymentIntent を作成する
ダイレクト支払い用の PaymentIntent を作成するときは、Stripe-Account ヘッダーに連結アカウントを設定します。
メモ
単一のプラットフォームで管理する連結アカウントのために作成した PaymentIntents のみ、プラットフォームは後から処理できます。
PaymentIntents を処理する
プラットフォームは、プラットフォームが所有するリーダーを使用して、連結アカウントの PaymentIntent を処理できます。
メモ
PaymentIntent は、Stripe-Account ヘッダーを使用して作成した場合にのみ処理できます。
デスティネーション支払い
デスティネーション支払いを使用する場合、プラットフォームは PaymentIntents や店舗 などの API リソースを所有します。各支払いは、連結アカウントに送金を自動的に作成します。
ダッシュボードにプラットフォームアカウントでログインすると、Terminal データを直接表示することができます。
店舗とリーダーの作成 サーバー側
連結アカウント別に Reader オブジェクトをグループ化するには、オブジェクトを Locations に割り当てます。プラットフォームアカウントで、アカウントを識別する表示名を使用して、連結アカウントの Location を作成します。
アプリケーションをスマートリーダーに接続するには、事前にリーダーをプラットフォームアカウントに登録しておく必要があります。
接続トークンの作成 サーバー側
Terminal SDK の ConnectionToken を作成するときは、プラットフォームアカウントのシークレットキーを使用します。Stripe-Account ヘッダーは設定しないでください。リーダーへのアクセスを制御するには、location パラメーターを指定します。店舗を指定すると、ConnectionToken はその店舗に割り当てられたリーダーでのみ利用可能になります。店舗を指定しないと、ConnectionToken はすべてのリーダーで利用可能になります。
PaymentIntents を作成する クライアント側 サーバー側
デスティネーション支払いを使用して PaymentIntent を作成するときは、on_behalf_of、transfer_data[destination]、application_fee_amount の各パラメーターを指定します。
on_ パラメーターは、支払いの売上処理加盟店となる連結アカウントの ID です。Terminal の取引では、プラットフォームの国と連結アカウントの国が異なる場合、このパラメーターを設定する必要があります。on_ が設定されていると、Stripe は自動的に次のように動作します:
- 指定されたアカウントの国での売上処理。この処理によって支払い拒否を最小限に抑え、通貨換算を回避します。
- 連結アカウントの国の手数料体系を使用します。
- 顧客のクレジットカード明細書に、プラットフォームの住所と電話番号ではなく、連結アカウントの住所と電話番号を記載します (アカウントとプラットフォームの国が異なる場合のみ)。
transfer_ には、送金を受け取る連結アカウントの ID を設定します。
最後に、application_fee_amount パラメーターを指定することによって、プラットフォーム手数料を差し引くことができます。
クライアント側
iOS、Android、React Native の SDK では、クライアント側で PaymentIntent を作成して、onBehalfOf、transferDataDestination、applicationFeeAmount の各パラメーターを指定できます。
サーバー側
JavaScript SDK では、サーバー上で PaymentIntent を作成する必要があります。他のクライアントの SDK で、支払いの開始に必要な情報をアプリですぐに利用できない場合には、サーバー上に PaymentIntent を作成することをお勧めします。詳細については、PaymentIntents を作成する (サーバー側) をご覧ください。
次に、PaymentIntent を処理するために決済を徴収するステップに従います。