Revolut Pay による決済を受け付ける
システムに Revolut Pay のサポートを追加します。
埋め込み可能な決済フォームの Mobile Payment Element を使用して、負荷を最小限に抑えて実装に Revolut Pay (および他の支払い方法) を追加することをお勧めします。
このガイドでは、自社で構築済みのカスタムの決済フォームを使用して、ネイティブのモバイルアプリケーションから Revolut Pay を受け付ける方法について説明します。
支払いはリダイレクト中に認証されます。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが 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 を使用して STPPaymentIntentParams
オブジェクトを設定します。
client secret は、Stripe API リクエストを認証する API キーとは異なります。これは支払いを完了できるため、慎重に扱う必要があります。記録したり、URL に埋め込んだり、漏洩することがないようにしてください。
戻り先 URL を設定する
iOS SDK では、Revolut Pay による決済を完了するための WebView がアプリに表示されます。認証が終了すると、顧客が閉じなくても、自動的に WebView が閉じられるようにすることができます。この動作を有効にするには、カスタム URL スキームまたはユニバーサルリンクを設定して、URL を SDK に転送するようにアプリのデリゲートを設定します。
PaymentIntent を確定する際に、その URL を return_
として渡します。WebView での認証が終わると、Stripe はユーザーを return_
にリダイレクトします。
Revolut Pay での決済を確定する
STPPaymentHandler confirmPayment
を呼び出して支払いを完了します。これにより WebView が表示され、顧客はそこから Revolut Pay で支払いを完了できます。完了すると、支払い結果とともに、完了ブロックが呼び出されます。
実装をテストする
テスト API キーを使用して Revolut Pay の導入をテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent (支払いインテント) は requires_
から succeeded
に変化します。
ユーザーが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで Fail test payment (テスト支払い失敗) をクリックします。PaymentIntent (支払いインテント) が、requires_
から requires_
に変化します。
テスト環境で PaymentIntent を手動でキャプチャーする場合、未キャプチャーの PaymentIntent (支払いインテント) は、オーソリの成功後 7 日で自動的に期限切れになります。
失敗した支払い
Revolut Pay uses multiple data points to determine when to decline a transaction (for example, their AI model detected high fraud risk for the transaction, or the customer has revoked your permission to charge them in 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_ を指定します。 |