Cash App Pay 支払い
システムに Cash App Pay のサポートを追加します。
埋め込み可能な決済フォームの Mobile Payment Element を使用して、負荷を最小限に抑えて実装に Cash App Pay および他の支払い方法を追加することをお勧めします。
このガイドでは、自社で構築済みのカスタムの決済フォームを使用して、ネイティブのモバイルアプリケーションから Cash App Pay を受け付ける方法について説明します。
ネイティブのモバイルアプリケーションから Cash App Pay を受け付けている場合、顧客は Cash App Pay モバイルアプリケーションにリダイレクトされ、そこで認証を行います。購入が Cash App Pay モバイルアプリケーションで完了すると、顧客はネイティブのモバイルアプリケーションにリダイレクトされます。
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 を作成するサーバー側クライアント側
サーバー側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスのライフサイクルの各段階を追跡します。
サーバーで PaymentIntent
を作成して確定するには、以下の手順に従います。
- 回収する金額と通貨を指定します。
PaymentIntent
の支払い方法のタイプのリストにcashapp
を追加します。ダッシュボードで Cash App Pay が有効になっていることを確認してください。payment_
をmethod_ data[type] cashapp
に設定して、PaymentMethod を作成し、この PaymentIntent ですぐに使用します。
返される PaymentIntent には client secret が含まれ、これは PaymentIntent の確定に使用されます。次のステップで使用できるように、クライアントに client secret を送り返します。
クライアント側
クライアント側で、サーバーの PaymentIntent をリクエストし、その client secret を保存します。
Stripe に支払いを送信するクライアント側
顧客が支払いのために Cash App Pay をタップしたら、PaymentIntent
を確定して支払いを完了します。PaymentIntent
の client secret を使用して ConfirmPaymentIntentParams
オブジェクトを設定します。
client secret は、Stripe API リクエストを認証する API キーとは異なります。これは支払いを完了できるため、慎重に扱う必要があります。記録したり、URL に埋め込んだり、当該の顧客以外に漏洩したりすることがないようにしてください。
Cash App Pay での決済を確定する
PaymentLauncher confirm を呼び出して、支払いを完了します。これにより、WebView が表示され、顧客はここで Cash App Pay での決済を完了できます。完了すると、支払い結果とともに、指定された PaymentResultCallback
が呼び出されます。
導入をテストする
テスト API キーを使用して Cash App Pay の導入をテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent (支払いインテント) は requires_
から succeeded
に変化します。
ユーザーが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで Fail test payment (テスト支払い失敗) をクリックします。PaymentIntent (支払いインテント) が、requires_
から requires_
に変化します。
テスト環境で PaymentIntents を手動でキャプチャする場合、キャプチャされていない PaymentIntent は、認証が成功してから 7 日後に自動的に期限切れになります。
サンドボックスと本番環境の決済の仕組みにはいくつかの違いがあります。たとえば、本番環境で支払うをタップすると、Cash App モバイルアプリケーションにリダイレクトされます。Cash App 内では、Cash App 内で支払いを承認または拒否するオプションはありません。リダイレクト後、支払いは自動的に承認されます。
失敗した支払い
Cash App Pay は複数のデータポイントを使用して、取引を拒否する状況を判断します (たとえば、AI モデルが取引において消費者の高い不正利用リスクを検出した場合や、Cash App で請求する許可を消費者が取り消した場合など)。
このケースでは、PaymentMethod (支払い方法) は切り離され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_
に移行します。
支払いが拒否された場合を除き、Cash App Pay の PaymentIntent (支払いインテント) が requires_
ステータスである場合、顧客は Cash App にリダイレクトされてから 10 分以内に支払いを完了する必要があります。10 分経過してもアクションが行われない場合、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent オブジェクトのステータスは自動的に requires_
に移行します。
これが発生すると、Payment Element はエラーメッセージを表示し、顧客に別の支払い方法で再試行するように求めます。
エラーコード
次の表は、一般的なエラーコードと推奨アクションの詳細を示しています。
エラーコード | 推奨される対応 |
---|---|
payment_ | 適切な通貨を入力します。Cash App Pay は usd にのみ対応しています。 |
missing_ | 必須パラメーターの詳細については、エラーメッセージをご確認ください。 |
payment_ | このコードは PaymentIntent の last_payment_error.code フィールドに表示されることがあります。エラーメッセージで失敗の詳細な理由と推奨されるエラー処理を確認します。 |
payment_ | Cash App Pay で PaymentIntent を確定する際は、return_ を指定します。 |