デスティネーション支払いを作成する
プラットフォームアカウントで支払いを作成し、手数料を回収し、残りの売上を連結アカウントに即時に送金します。
連結アカウントが提供する商品またはサービスについて、顧客がプラットフォームと取引するときに「デスティネーション支払い」を作成し、連結アカウントに売上を即時に送金します。この支払いタイプの特徴は以下のとおりです。
- プラットフォームのアカウントで支払いを作成します。
- 売上の一部または全額を、連結アカウントに送金するかどうかを決定します。
- Stripe の手数料、返金、チャージバックは、お客様のアカウント残高から引き落とされます。
この支払いタイプは、住宅賃貸マーケットプレイスの Airbnb や、ライドシェアアプリの Lyft などのマーケットプレイスに最適です。
ただし例外があります。貴社のプラットフォームと連結アカウントの所在地が同じではない場合、Payment Intent の on_ パラメータまたは Checkout Session の payment_ パラメータを用いて、連結アカウントを settlement merchant に設定する必要があります。
Stripe ダッシュボードの全機能を利用できない連結アカウントの場合には、デスティネーション支払いを使用することをお勧めします。

PaymentSheet クラスを使用して、Stripe の構築済み決済 UI を Android アプリの決済フローに組み込みます。
Stripe を設定するサーバー側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバー側
この接続方法では、Stripe API と通信するエンドポイントがサーバー上に必要です。サーバーから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe Android SDK はオープンソースであり、詳細なドキュメントが提供されています。
SDK をインストールするには、app/build.gradle ファイルの dependencies ブロックに stripe-android を追加します。
メモ
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリのリリースを確認してください。
Stripe の公開可能キーを使用して SDK を設定し、 Application サブクラスなどで、Stripe API へのリクエストを実行できるようにします。
エンドポイントを追加するサーバー側
注
PaymentIntent の作成前に PaymentSheet を表示するには、インテントを作成する前に支払いの詳細を収集するをご覧ください。
この接続方法では、以下の 3 つの Stripe API オブジェクトを使用します。
PaymentIntent (支払いインテント): Stripe はこれを使用して、顧客から支払いを回収する意図を示し、プロセス全体を通して支払いの試行と支払い状態の変化を追跡します。
(オプション) Customer (顧客): 今後の支払いに備えて決済手段を設定するには、決済手段をCustomer に関連付ける必要があります。Customer オブジェクトは、顧客がビジネスでアカウントを作成するときに作成します。顧客がゲストとして支払いを行う場合は、支払いの前に Customer オブジェクトを作成し、後でこのオブジェクトを顧客のアカウントを表す内部表現に関連付けることができます。
(オプション) CustomerSession: Customer オブジェクトの情報は機密情報であるため、アプリから直接取得することはできません。CustomerSession により、SDK に Customer への範囲を設定した一時的なアクセス権が付与され、また追加の設定オプションが提供されます。すべての設定オプションのリストをご覧ください。
メモ
Customer にカードを保存したことがなく、リピート顧客に保存されたカードの再利用を許可しない場合は、実装で Customer オブジェクトおよび CustomerSession オブジェクトを省略できます。
セキュリティ上の理由により、アプリでこれらのオブジェクトを作成することはできません。代わりに、サーバー側で以下を行うエンドポイントを追加します。
- Customer を取得するか、新規作成する。
- 顧客の CustomerSession を作成します。
- amount、currency、customer を指定して PaymentIntent を作成します。
- PaymentIntent の client secret、CustomerSession の
client_、Customer の id、および貴社の公開可能キーをアプリに返します。secret
決済プロセス中に顧客に表示される支払い方法は、PaymentIntent にも含まれています。Stripe にダッシュボードの設定から支払い方法を取得するよう指定することも、手動でリストに表示することもできます。選択したオプションにかかわらず、顧客に表示される支払い方法は、PaymentIntent で渡す通貨によって絞り込まれることにご注意ください。たとえば、PaymentIntent で eur を渡し、ダッシュボードで OXXO が有効になっている場合、OXXO は eur による決済に対応していないため、顧客に表示されません。
構築済みのシステムで、決済手段を提供するためにコードベースのオプションが必要になる場合を除き、自動化されたオプションを使用することをお勧めします。これは、Stripe が通貨、決済手段の制約、その他のパラメーターを評価して、対応可能な決済手段を決定するためです。自動化されたオプションでは、購入完了率の向上につながり、使用通貨と顧客の所在地に最適な決済手段が優先的に表示されます。
決済画面を導入するクライアント側
決済ページでは、Mobile Payment Element を表示する前に以下を実行する必要があります。
- 購入商品と合計金額を表示する
- Address Element を使用して必要な配送先情報を収集する
- Stripe の UI を表示する決済ボタンを含める
allowsDelayedPaymentMethods を true に設定すると、アメリカの銀行口座などの 遅延通知型の支払い方法を使用できます。これらの支払い方法では、PaymentSheet が完了した時点では最終的な支払いステータスが判明せず、後になって成功または失敗が確定します。このようなタイプの支払い方法に対応する場合は、注文が確定済みであることを顧客に通知し、支払いが成功した場合にのみ注文のフルフィルメント (商品の発送など) を実行するようにします。
支払い後のイベントを処理するサーバー側
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボードの Webhook ツールを使用するか Webhook のガイドに従ってこれらのイベントを受信し、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアントでは、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了する場合、また悪意を持つクライアントがレスポンスを不正操作する場合もあります。非同期型のイベントをリッスンするよう組み込みを設定すると、単一の組み込みで複数の異なるタイプの支払い方法を受け付けることができます。
Payment Element を使用して支払いを回収する場合は、payment_ イベントのほかにこれらのイベントを処理することをお勧めします。
| イベント | 説明 | アクション |
|---|---|---|
| payment_intent.succeeded | 顧客が正常に支払いを完了したときに送信されます。 | 顧客に注文の確定を送信し、顧客の注文のフルフィルメントを実行します。 |
| payment_intent.processing | 顧客が正常に支払いを開始したが、支払いがまだ完了していない場合に送信されます。このイベントは、多くの場合、顧客が口座引き落としを開始するときに送信されます。その後、payment_ イベント、また、失敗の場合は payment_ イベントが送信されます。 | 顧客に注文確認メールを送信し、支払いが保留中であることを示します。デジタル商品では、支払いの完了を待たずに注文のフルフィルメントを行うことが必要になる場合があります。 |
| payment_intent.payment_failed | 顧客が支払いを試みたが、支払いに失敗する場合に送信されます。 | 支払いが processing から payment_ に変わった場合は、顧客に再度支払いを試すように促します。 |
実装内容をテストする
実装内容をテストするためのその他の情報については、テストをご覧ください。
オプションGoogle Pay を有効にする
実装方法を設定する
Google Pay を使用するには、まず以下を AndroidManifest.xml の <application> に追加し、Google Pay API を有効化します。
<application> ... <meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true" /> </application>
詳細は、Google Pay の Android 向け Google Pay API を設定する を参照してください。
Google Pay を追加する
組み込みに Google Pay を追加するには、PaymentSheet.Configuration を初期化する際に、お客様の Google Pay 環境 (本番またはテスト) とビジネスの国コードを指定して PaymentSheet.GooglePayConfiguration を渡します。
Google Pay をテストする
Google では、テストクレジットカードスイート を使用してテスト決済を行うことができます。Stripe テストカード をテストスイートと併用できます。
Google Pay がサポートされている国では、シミュレーションされたデバイスではなく、物理的な Android デバイスを使用して Google Pay をテストする必要があります。Google ウォレットに保存した実際のクレジットカードを使用して、テスト用デバイスの Google アカウントにログインします。
オプション画面をカスタマイズする
すべてのカスタマイズは、PaymentSheet.Configuration オブジェクトを使用して設定されます。
デザイン
Customize colors, fonts, and more to match the look and feel of your app by using the appearance API.
決済手段のレイアウト
paymentMethodLayout を使用して、画面上の決済手段のレイアウトを設定します。横や縦に表示することも、Stripe がレイアウトを自動で最適化するように設定することもできます。

ユーザーの住所を収集する
Address Element を使用して、顧客から国内および国外の配送先住所や請求先住所を収集します。
ビジネス表示名
merchantDisplayName を設定し、顧客に表示するビジネス名を指定します。デフォルトではアプリ名になります。
ダークモード
PaymentSheet は、ユーザーのシステム全体の表示設定 (ライト/ダークモード) に合わせてデフォルトで自動的に調整されます。これを変更するには、アプリでライトモードまたはダークモードを設定します。
デフォルトの請求詳細
支払い画面で収集される請求詳細のデフォルト値を設定するには、defaultBillingDetails プロパティーを設定します。PaymentSheet の各フィールドに、指定したそれらの値が事前に読み込まれます。
請求先情報の収集を設定する
BillingDetailsCollectionConfiguration を使用して、PaymentSheet で請求詳細を収集する方法を指定します。
顧客の名前、メールアドレス、電話番号、住所を収集できます。
UI でデフォルトの請求詳細が収集されない場合でも、それらの詳細を PaymentMethod オブジェクトに関連付けるには、billingDetailsCollectionConfiguration. を true に設定します。
メモ
情報の収集に適用される法律については、弁護士に相談してください。電話番号は、取引に必要な場合にのみ収集してください。
オプションUI で支払いを完了する
支払い画面を表示して支払い方法の詳細のみを収集し、アプリの UI に戻って支払いを完了できます。これは、カスタムの購入ボタンがある場合や、支払いの詳細を収集した後で追加のステップが必要な場合に便利です。

メモ
導入サンプルはGitHubで入手できます。
- 最初に、Builder メソッドのいずれかを使用して、
PaymentSheetではなく PaymentSheet.FlowController を初期化します。
- 次に、バックエンドから取得した Stripe オブジェクトキーで
configureWithPaymentIntentを呼び出し、getPaymentOption() を使用してコールバックで UI を更新します。ここには、顧客が現在選択している決済手段を表す画像とラベルが含まれています。
- 次に、presentPaymentOptions を呼び出して、決済の詳細を収集します。顧客が操作を完了すると、画面は閉じ、すでに
createで渡されている paymentOptionCallback が呼び出されます。このメソッドを実装し、返されたpaymentOptionで UI を更新します。
- 最後に、confirm を呼び出して支払いを完了します。顧客が操作を完了すると、画面は閉じ、すでに
createで渡されている paymentResultCallback が呼び出されます。
allowsDelayedPaymentMethods を true に設定すると、アメリカの銀行口座などの 遅延通知型の支払い方法を使用できます。これらの支払い方法では、PaymentSheet が完了した時点では最終的な支払いステータスが判明せず、後になって成功または失敗が確定します。このようなタイプの支払い方法に対応する場合は、注文が確定済みであることを顧客に通知し、支払いが成功した場合にのみ注文のフルフィルメント (商品の発送など) を実行するようにします。
手数料を回収する
支払いが処理される際に、取引の全額を連結アカウントに送金するのではなく、プラットフォームが取引金額の一部を手数料という形で受け取ることを決定できます。手数料の料金体系は、次の 2 つの方法で設定できます。
プラットフォームの料金設定ツールを使用して、プラットフォーム手数料の料金体系ルールを設定してテストします。この Stripe ダッシュボードのノーコード機能は、現時点では Stripe 手数料の支払い責任を負うプラットフォームでのみ利用できます。
社内で料金体系ルールを設定し、application_fee_amount または transfer_data[amount] パラメーターを使用して、PaymentIntent で直接手数料を指定します。この方法で設定された手数料は、プラットフォーム料金設定ツールで指定された料金体系ロジックを上書きします。
売上処理加盟店を指定する
売上処理加盟店は、アカウントに設定されたケイパビリティと支払いの作成方法によって決まります。売上処理加盟店は、支払いの作成に誰の情報を使用するかを決定します。これには、その支払いに使用される顧客のクレジットカードまたは銀行口座の明細に表示される明細書表記 (プラットフォームまたは連結アカウントのもの) が含まれます。
売上処理加盟店を指定することにより、誰に対して支払いを作成するかをより明確にすることができます。たとえば、一部のプラットフォームは最終顧客がプラットフォーム (オンデマンドプラットフォームなど) と直接やり取りすることを理由として、売上処理加盟店となることを希望します。ただし、これと異なり最終顧客と直接やり取りする連結アカウントが存在するプラットフォームもあります (E コマースプラットフォーム上のストアなど)。こうしたシナリオでは、連結アカウントを売上処理加盟店にするのが合理的です。
連結アカウントの ID に on_ パラメーターを設定して、そのアカウントを支払いの売上処理加盟店にすることができます。on_ を使用すると、以下のようになります。
- 連結アカウントの国と売上処理通貨を使用して、支払いが売上として処理されます。
- 連結アカウントの国の手数料体系が使用されます。
- 連結アカウントの明細書表記が顧客のクレジットカード明細書に表示されます。
- 連結アカウントがプラットフォームと異なる国に所在する場合、連結アカウントの住所と電話番号が顧客のクレジットカード明細書に表示されます。
- 入金前の保留中の残高が保持される日数は、連結アカウントの delay_days 設定によって異なります。
Accounts v2 API
Accounts v2 API を使用して入金設定を管理することはできません。Accounts v1 API を使用してください。
on_ が省略された場合、プラットフォームが取引に関する金銭的責任を負います。
注意
on_ パラメーターは、card_payments などの支払いケイパビリティを持つ連結アカウントのみで利用できます。受取人利用規約 が適用されているアカウントは、card_ やその他の支払いケイパビリティをリクエストできません。
返金する
Payment Intents API を使用している場合は、作成された最新の決済に対して返金を発行する必要があります。
プラットフォームアカウントで作成された支払いは、プラットフォームアカウントのシークレットキーを使用して返金できます。transfer_ が設定された支払いを返金する場合、デフォルトではデスティネーションアカウントがそこに送金された売上を保持し、プラットフォームアカウントがその返金からマイナスの残高をカバーします。その返金をカバーするために連結アカウントから売上を取り戻すには、返金を作成する際に reverse_ パラメータを true に設定します。
デフォルトでは支払い額すべてが返金されますが、amount 値を正の整数に設定することで、一部返金を作成することができます。
その払い戻しによって支払い額全額が返金される場合、送金額全額が差し戻しされます。それ以外の場合には、送金額の比例配分された部分が差し戻しされます。
プラットフォーム手数料を返金する
プラットフォーム手数料が含まれる支払いを返金すると、デフォルトではプラットフォームアカウントがプラットフォーム手数料の売上を確保します。プラットフォーム手数料の売上を連結アカウントに戻すには、返金を作成する際に refund_application_fee パラメーターに true を設定します。
デスティネーション支払いのプラットフォーム手数料を返金する場合には、送金も差し戻す必要があることに注意します。その返金によって支払い額全額が返金される場合、プラットフォーム手数料の全額も払い戻されます。それ以外の場合には、プラットフォーム手数料の比例配分された部分が返金されます。
別の方法として、false 値の refund_ を指定し、API を通じてプラットフォーム手数料を別途返金することもできます。
失敗した返金
返金が失敗した場合、またはキャンセルした場合、失敗した返金額はプラットフォームアカウントの Stripe 残高に戻されます。必要に応じて、送金を作成して、資金を連結アカウントに移動します。
不審請求の申請を処理する
デスティネーション支払いでは、on_ の有無にかかわらず、プラットフォームアカウントから不審請求の申請に係る金額と手数料が引き落とされます。
不審請求の申し立て作成イベントをリッスンするために、Webhook を設定することをお勧めします。このような状況が発生した場合は、ダッシュボードから送金を差戻すか、送金の差戻しを作成して、連結アカウントから売上の回収を試みることができます。
連結アカウントの残高がマイナスの場合、debit_ が true に設定されていれば、Stripe はその外部口座からの引き落としを試みます。
不審請求の申し立てに反論して主張が認められた場合は、以前に差戻した売上を連結アカウントに送金できます。プラットフォームの残高が不足している場合、送金は失敗します。Stripe 残高に資金を追加して、残高不足によるエラーを防止してください。
よくある間違い
以前差戻した売上を再送金する場合、海外送金に関する制限の対象となるため、連結アカウントに返済する方法がなくなる可能性があります。その場合は代わりに、不審請求の申し立てがなくなるまで、on_ を指定したデスティネーション支払いで、不審請求の申し立てが行われた海外への支払い送金が回復されるのを待ちます。
非同期決済の失敗
非同期の決済手段 (ACH デビットや SEPA デビットなど) を使用するデスティネーション支払いでは、支払いが開始されてから資金が確定されるまでに遅延が発生します。この間、支払いと連結アカウントの保留中の残高への送金の両方が保留状態になります。
非同期決済が失敗した場合、Stripe は自動的に送金を差し戻します。資金は連結アカウントに永久に移動されません。
アカウントステータスによる送金のスキップ
非同期決済手段 (ACH や SEPA デビットなど) を使用した決済では、決済が承認されてから資金が利用可能になるまでに遅延が発生します。この間、送金先アカウントが必要な送金機能を失うか閉鎖されると、Stripe は当初のリクエスト通りに送金を完了できません。
Stripe が送金を作成しようとしても、ケイパビリティの喪失やアカウントの削除により作成できない場合、送金の作成はスキップされ、資金はプラットフォームの残高に残ります。
スキップされた送金を検出するには、charge. Webhook イベントをリッスンします。Charge オブジェクトの transfer_data の値が null の場合、送金がスキップされたことを示します。
送金がスキップされたことを検出した場合、ビジネスにとって適切であれば、問題が解決した後に送金を作成できます。
Connect の埋め込みコンポーネント
デスティネーション支払いは Connect 埋め込みコンポーネント でサポートされています。決済埋め込みコンポーネント を使用することで、連結アカウントがサイト内から決済情報を表示できるようになります。on_ を含むデスティネーション支払いの場合、destination_on_behalf_of_charge_management 機能を使用して、連結アカウントが追加の詳細情報を表示し、返金や不審請求の申し立てを管理し、決済をキャプチャーできるようにすることができます。
以下のコンポーネントには、デスティネーション支払いの情報が表示されます。
支払いコンポーネント:アカウントのすべての支払いと紛争を表示します。
決済の詳細:アカウントのすべての決済と不審請求の申し立てを表示します。
紛争一覧コンポーネント:アカウントのすべての紛争を表示します。
支払いに関する紛争コンポーネント:特定の支払いに関する紛争を表示します。これを使って、支払い用 UI があるページに紛争管理機能を組み込むことができます。
