iDEAL による支払いを受け付ける
オランダで良く使われている支払い方法である、iDEAL を受け付ける方法を紹介します。
iDEAL は 1 回限りの使用の決済手段であり、顧客は支払いの認証を求められます。iDEAL を使用して支払う場合、顧客はお客様のウェブサイトからリダイレクトされ、支払いを承認するとウェブサイトに戻されます。ここで、お客様は支払いが成功したか失敗したかに関する即時通知を受け取ります。
Use the Payment Element to embed a custom Stripe payment form in your website or application. The Payment Element allows you to support iDEAL and other payment methods automatically. For advanced configurations and customizations, refer to the Accept a payment integration guide.
Note
iDEAL を受け付けるには、Stripe の iDEAL 利用規約に従う必要があります。
PaymentIntent を作成するサーバー側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトであり、決済プロセスのライフサイクルをステージごとに追跡します。最初に、サーバーで PaymentIntent を作成し、回収する金額と eur 通貨 (iDEAL は他の通貨には対応していません) を指定します。iDEAL に最少請求金額はないため、支払いの amount は 1 まで下げられます。Payment Intents API を使用したシステムがすでにある場合は、ideal を PaymentIntent の決済手段タイプのリストに追加します。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
支払い方法の詳細を収集するクライアント側
Payment Element を使用してクライアント側で支払い詳細を収集します。Payment Element は事前構築された UI コンポーネントであり、さまざまな決済手段の詳細の収集をシンプルにします。
Payment Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。一部の支払い方法では、支払いを確定するために別のページにリダイレクトする必要があるため、Payment Element を別の iframe 内に配置しないでください。
構築済みのシステムを機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。HTTPS を使用しなくてもシステムをテストできますが、本番環境で決済を受け付ける準備が整ったら、必ず、HTTPS を有効にしてください。
Stripe に支払いを送信するクライアント側
Payment Element からの詳細を指定して stripe.confirmPayment を使用し、支払いを完了します。ユーザーが支払いを完了した後に Stripe がユーザーをリダイレクトする場所を指定するには、この関数に return_url を指定します。ユーザーはまず、銀行のオーソリページなどの中間サイトにリダイレクトされ、その後 return_ にリダイレクトされます。カード支払いでは、支払いが正常に完了するとすぐに return_ にリダイレクトします。
return_ が、Web サイト上の支払いステータスを表示するページと対応していることを確認します。Stripe が顧客を return_ にリダイレクトするときは、以下の URL クエリーパラメーターが指定されます。
| パラメーター | 説明 |
|---|---|
payment_ | PaymentIntent の一意の識別子。 |
payment_ | PaymentIntent オブジェクトの client secret。 |
注意
顧客のブラウザーセッションを追跡するツールを利用している場合、リファラー除外リストに stripe. ドメインの追加が必要になる場合があります。リダイレクトを行うと、一部のツールでは新しいセッションが作成され、セッション全体の追跡ができなくなります。
クエリパラメーターのいずれか 1 つを使用して PaymentIntent を取得します。PaymentIntent のステータスを調べて、顧客に表示する内容を決定します。また、return_ を指定するときにカスタムのクエリパラメーターを追加することもできます。このパラメーターはリダイレクトプロセスの間維持されます。
構築したシステムをテストする
テスト API キーを使用して PaymentIntent を確定します。確定すると、決済を承認または失敗させるオプションのあるテストページにリダイレクトされます。
- Authorize test payment (テスト支払いをオーソリする) をクリックして、支払い成功のケースをテストします。PaymentIntent が
requires_からaction succeededに変わります。 - Fail test payment (テスト支払いを失敗させる) をクリックして、認証失敗のケースをテストします。PaymentIntent が
requires_からaction requires_に変わります。payment_ method
オプション支払い後のイベントを処理する
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。サポートされているすべての決済手段の違いをご確認ください。
ダッシュボードでイベントを手動で処理する
ダッシュボードを使用して、テスト決済をダッシュボードで表示したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。
Custom Webhook を構築する
Custom Webhook ハンドラを構築してイベントをリッスンし、カスタム非同期型の決済フローを作成します。Stripe CLI を使用して、ローカルで Webhook の導入のテストとデバッグを行います。
構築済みアプリを導入する
パートナーアプリケーションを統合することで、自動化やマーケティング/セールスなどの一般的なビジネスイベントを処理します。
オプションiDEAL リダイレクトの手動処理
confirmIdealPayment で iDEAL リダイレクトと支払いを処理するには、Stripe.js を使用することをお勧めします。ただし、サーバーで支払位を完了し、顧客を手動でリダイレクトすることもできます。
- 決済手段の詳細を収集したら、stripe.createPaymentMethod を呼び出して PaymentMethod を作成します。
const paymentMethod = await stripe.createPaymentMethod({ type: 'ideal', billing_details: { name: accountholderName.value, }, }); - サーバーで PaymentIntent と PaymentMethod ID を確認し、支払い完了後に顧客をリダイレクトする return_url を指定します。
PaymentIntentのステータスがrequires_であり、action next_がaction redirect_であることを確認します。to_ url { "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "charges": { "data": [ { "payment_method_details": { "ideal": { "bank": "ing", "bic": "INGBNL2A", next_プロパティに指定されている URL に顧客をリダイレクトします。これで、顧客は認証して支払いを完了できます。action 顧客は支払いを完了すると、const action = intent.next_action; if (action && action.type === 'redirect_to_url') { window.location = action.redirect_to_url.url; }return_にリダイレクトされます。この URL には、クエリパラメーターurl payment_およびintent payment_が含まれています。上記のように独自のクエリパラメーターを追加することもできます。intent_ client_ secret
取引銀行
| 銀行名 | 値 |
|---|---|
| ABN AMRO | abn_ |
| ASN Bank | asn_ |
| Bunq | bunq |
| ING | ing |
| Knab | knab |
| N26 | n26 |
| Nationale-Nederlanden | nn |
| Rabobank | rabobank |
| Revolut | revolut |
| RegioBank | regiobank |
| SNS Bank (De Volksbank) | sns_ |
| Triodos Bank | triodos_ |
| Van Lanschot | van_ |
| Yoursafe | yoursafe |