iDEAL での支払い中に銀行詳細を保存する
iDEAL での支払いから顧客の IBAN 銀行詳細を保存する方法をご紹介します。
注意
支払い中に支払いの詳細を保存するためのガイドに従うことをお勧めします。すでに Elements との連携が完了している場合は、Payment Element 移行ガイドをご覧ください。
iDEAL はオランダで普及している 1 回限りの使用の支払い方法であり、顧客は支払いの認証を求められます。iDEAL を使用して支払う場合、顧客は WebView にリダイレクトされ、支払いをオーソリすると、お客様のアプリに戻されます。ここで、お客様は支払いが成功したか失敗したかについて即時の通知を受け取ります。
iDEAL を使用して、顧客の IBAN 銀行詳細を SEPA ダイレクトデビット PaymentMethod に保存することもできます。保存した SEPA ダイレクトデビット PaymentMethod は、支払いの受け付けや、サブスクリプションの設定に使用できます。これにより、顧客が IBAN の入力を繰り返す必要がなくなるため、顧客の負担が軽減されます。また、確認済みの氏名と検証済みの IBAN も受け取ります。
注意
iDEAL を使用して SEPA ダイレクトデビットの支払いを設定するには、ダッシュボードで SEPA ダイレクトデビットを有効にする必要があります。さらに、iDEAL 利用規約および SEPA ダイレクトデビット利用規約に従う必要もあります。
iDEAL での支払いの受け付けは、支払いを追跡するための PaymentIntent (支払いインテント) オブジェクトの作成、支払い方法に関する情報と同意書承認の収集、および支払いを処理するための Stripe への送信で構成されます。Stripe は、PaymentIntent を使用して、支払いが完了するまでの支払いの状態のすべてを追跡して処理します。以降の支払いの作成には、最初の iDEAL PaymentIntent から収集された SEPA ダイレクトデビット PaymentMethod の ID が使用されます。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe Android SDK はオープンソースであり、詳細なドキュメントが提供されています。
To install the SDK, add stripe-android
to the dependencies
block of your app/build.gradle file:
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリのリリースを確認してください。
Stripe の公開可能キーを使用して SDK を設定し、 Application
サブクラスなどで、Stripe API へのリクエストを実行できるようにします。
Customer を作成するサーバー側
お客様のビジネスで顧客がアカウントを作成する際に、Customer を作成し、それを、そのアカウントを表す独自の内部表記と関連付けます。このようにすると、保存されている支払い方法の詳細を後で取得して使用することができます。
PaymentIntent を作成するサーバー側
サーバーで PaymentIntent
を作成し、回収する amount
、eur
通貨、顧客 ID を指定し、setup future usage の引数として off_
を指定します。最少請求金額はありません。また、iDEAL は他の通貨に対応していません。既存の Payment Intents API の実装がある場合は、ideal
を payment method types (決済手段タイプ) のリストに追加します。
PaymentIntent には、支払い方法 ID と client secret が含まれています。これは、PaymentIntent オブジェクト全体を渡す代わりに、クライアント側で支払いプロセスを安全に完了するために使用されます。
支払い方法の詳細と同意書承認を収集するクライアント側
アプリで顧客の氏名とメールアドレスを収集します。それらの情報を使用して PaymentMethodCreateParams オブジェクトを作成します。
SEPA ダイレクトデビットの支払いを処理するには、顧客から同意書を収集する必要があります。以下に示す定型の承認用文書を表示し、顧客が黙示的にこの同意書に署名するようにしてください。
「Rocket Rides」はお客様の社名に置き換えます。
支払い方法を設定するか、PaymentIntent を確定すると、承認済みの同意書が作成されます。顧客は黙示的に同意書に署名したため、フォームまたはメールを通じて、顧客にこれらの規約を伝える必要があります。
Stripe に支払いを送信するクライアント側
ステップ 3 で作成した PaymentIntent から client secret を取得し、stripe confirmPayment メソッドを呼び出します。これにより WebView が表示され、顧客はそこから銀行のウェブサイトまたはアプリで支払いを完了できます。完了後、支払い結果とともに、onActivityResult
が呼び出されます。
後日 SEPA ダイレクトデビット PaymentMethod に請求する
顧客に再び請求する必要が生じたときは、新しい PaymentIntent を作成します。以前の PaymentIntent を 取得し、latest_
フィールドを展開して payment_
内の generated_
ID を探すことで、SEPA ダイレクトデビットの支払い方法の ID を見つけます。
SEPA ダイレクトデビットの決済手段 ID は、レスポンス内の payment_method_details にある generated_
ID になります。
{ "latest_charge": { "payment_method_details": { "ideal": { "bank": "ing", "bic": "INGBNL2A", "iban_last4": "****", "generated_sepa_debit": "pm_1GrddXGf98efjktuBIi3ag7aJQ", "verified_name": "JENNY ROSEN" }, "type": "ideal" }, }, "payment_method_options": { "ideal": {}
SEPA ダイレクトデビットと顧客 ID を使用して PaymentIntent を作成します。
導入をテストする
Use your test API keys to confirm the PaymentIntent. After confirming, you’re redirected to a test page with options to authorize or fail the payment.
- Authorize test payment (テスト支払いをオーソリする) をクリックして、支払い成功のケースをテストします。PaymentIntent が
requires_
からaction succeeded
に変わります。 - Fail test payment (テスト支払いを失敗させる) をクリックして、認証失敗のケースをテストします。PaymentIntent が
requires_
からaction requires_
に変わります。payment_ method