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