Revolut Pay による決済を受け付ける
システムに Revolut Pay のサポートを追加します。
埋め込み可能な決済フォームの Mobile Payment Element を使用して、負荷を最小限に抑えて実装に Revolut Pay (および他の支払い方法) を追加することをお勧めします。
このガイドでは、自社で構築済みのカスタムの決済フォームを使用して、ネイティブのモバイルアプリケーションから Revolut Pay を受け付ける方法について説明します。
支払いはリダイレクト中に認証されます。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases (リリース) ページをご覧ください。リポジトリのリリースをウォッチして、新しいリリースの公開時に通知を受け取ることも可能です。
アプリの起動時に 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 で支払いを完了できます。完了すると、支払い結果とともに、完了ブロックが呼び出されます。
オプションオーソリとキャプチャーを分離する
支払いをすぐ作成して、売上は後でキャプチャーするように、オーソリとキャプチャーを分離できます。7 日の期間内に支払いがキャプチャーされない場合、Stripe は PaymentIntent をキャンセルし、payment_intent.canceled イベントを送信します。
支払いをキャプチャーできないことが分かっている場合は、7 日間経過するのを待つのではなく、PaymentIntent をキャンセルすることをお勧めします。
オーソリのみを行うよう Stripe に指示する 
オーソリとキャプチャーの分離を指定するには、PaymentIntent の作成時に capture_method を manual に設定します。このパラメーターは、顧客の Revolut Pay アカウントの金額のみをオーソリするように Stripe に指示します。
売上をキャプチャーする 
オーソリが成功すると、PaymentIntent のステータスは requires_ に移行します。オーソリされた売上をキャプチャーするには、PaymentIntent のキャプチャーリクエストを作成します。
デフォルトでは、オーソリされた合計金額がキャプチャーされます。amount_ を指定して、合計金額以下の金額を指定することもできます。
任意オーソリをキャンセルする
オーソリをキャンセルする必要がある場合は、PaymentIntent をキャンセルしてください。
オプション支払い後のイベントを処理する
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。サポートされているすべての決済手段の違いをご確認ください。
ダッシュボードでイベントを手動で処理する
ダッシュボードを使用して、テスト決済をダッシュボードで表示したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。
Custom Webhook を構築する
Custom Webhook ハンドラを構築してイベントをリッスンし、カスタム非同期型の決済フローを作成します。Stripe CLI を使用して、ローカルで Webhook の導入のテストとデバッグを行います。
構築済みアプリを導入する
パートナーアプリケーションを統合することで、自動化やマーケティング/セールスなどの一般的なビジネスイベントを処理します。
実装をテストする
テスト 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 にリダイレクトされてから 1 時間以内に支払いを完了する必要があります。1 時間経過しても何もアクションが行われなかった場合は、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_ に移行します。
これが発生すると、Payment Element はエラーメッセージを表示し、顧客に別の支払い方法で再試行するように求めます。
エラーコード
次の表は、一般的なエラーコードと推奨アクションの詳細を示しています。
| エラーコード | 推奨アクション |
|---|---|
missing_ | 必須のパラメーターの詳細については、エラーメッセージを確認してください。 |
payment_ | このコードは PaymentIntent の last_payment_error.code フィールドに表示されることがあります。エラーメッセージで失敗の詳細な理由と推奨されるエラー処理を確認します。 |
payment_ | Revolut Pay で PaymentIntent を確定する際は、return_ を指定します。 |