Bacs ダイレクトデビット支払い
イギリスの銀行口座を持つ顧客からの Bacs ダイレクトデビット決済を受け付けてください。
Web サイトでの Bacs ダイレクトデビットによる決済の受け付けプロセスは、支払いを追跡するオブジェクトの作成、支払い方法に関する情報と同意書承認の収集、Stripe への支払いの送信 (処理のため)、および顧客の銀行口座の確認で構成されます。
Stripe では、PaymentIntent と呼ばれる決済オブジェクトを使用して、支払いが完了するまでの状態のすべてを追跡および処理します。
Customer を作成または取得するサーバ側
将来の決済に銀行口座を再利用するには、その口座を 顧客 に紐付ける必要があります。
顧客がビジネスでアカウントを作成する際に、Customer
オブジェクトを作成します。この Customer
オブジェクトの ID を、顧客を表す社内の内部表記と関連付けることで、保存されている支払い方法の詳細を後で取得して使用することができます。
新しい Customer
を作成するか、または既存の Customer
を取得して、この決済に紐付けます。サーバーに以下のコードを含め、新しい Customer
を作成します。
支払い方法の詳細を収集する
注
Bacs ダイレクトデビットのスキームルールでは、顧客は Stripe が顧客の口座から引き落とすことへの同意書に同意するよう定められています。Payment Element は、顧客の支払い詳細を受け付けるときにこの同意書を収集します。そのため、お客様はこの要件に従うために特別な対策を取る必要はありません。
Payment Element を使用してクライアントで支払い詳細を収集する準備ができました。Payment Element は事前構築された UI コンポーネントであり、多様な支払い方法の支払い詳細の収集を容易にします。
Payment Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。決済手段によっては、支払い確認のために別のページにリダイレクトする必要があるため、Payment Element を別の iframe 内に配置しないでください。
実装を機能させるには、決済ページのアドレスの先頭を http://
ではなく https://
にする必要があります。HTTPS を使用せずに実装をテストすることはできますが、本番環境で支払いを受け付ける準備が整ったら、忘れずに有効にしてください。
Elements
プロバイダーを作成する際に Appearance (デザイン) オブジェクト を options
に渡すことで、サイトのデザインに合わせて Payment Element をカスタマイズできます。
住所を収集
デフォルトでは、Payment Element は必要な請求先住所情報のみを収集します。(たとえば、デジタル商品およびサービスの税金を計算するなどの目的で) 顧客の詳細な請求先住所または配送先住所を収集するには、Address Element を使用します。
PaymentIntent を作成するサーバ側
支払い確定の直前にカスタムのビジネスロジックを実行する
支払いの確定ガイドのステップ 5 に移動して、支払い確定の直前にカスタムのビジネスロジックを実行します。または、以下のステップに従って既存のシステムをシンプルにします。ここでは、クライアント側で stripe.
を使用して、支払いの確定と次のアクションの処理の両方を行います。
Stripe に支払いをするクライアント側
stripe.confirmPayment を使用して、Payment Element の詳細を使って支払いを完了します。
この関数に return_url を指定して、支払い完了後に Stripe がユーザーをリダイレクトする場所を示します。ユーザーは、最初に銀行の認証ページなどの中間サイトにリダイレクトされてから、return_
にリダイレクトされる場合があります。カード支払いでは、支払いが成功するとすぐに return_
にリダイレクトされます。
支払い完了後にカード支払いのリダイレクトを行わない場合は、redirect を if_
に設定できます。これにより、リダイレクトベースの決済手段で購入した顧客のみがリダイレクトされます。
支払い後のイベントを処理する
Bacs ダイレクトデビットは遅延通知型の支払い方法であるため、資金は即座には利用できません。
タイムライン
Bacs Direct Debit では、売上が Stripe 残高で利用可能になるまでに数営業日かかる場合があります。売上が利用可能になるまでにかかる営業日数は、資金追加のタイミングと呼ばれます。1 日の締め切り時刻以降に送信された支払いは、翌営業日に処理されます。
同意書がすでに設定されている場合は、Bacs ダイレクトデビットによる決済の成功または失敗を確認するのに 4 営業日かかります。新しい同意書を収集する必要がある場合は、7 営業日かかります。
場合によっては、お客様の Stripe アカウントで支払い成功としてマークされた後に、銀行が支払いの失敗を通知してくることがあります。この場合には、その支払いの失敗は、適切な理由コードを持つ不審請求の申請として識別されます。
次の表は、Stripe が提供する Bacs Direct Debit 決済の売上処理のタイミングを示しています。
売上処理のタイプ | 支払い完了 | 利用可能な資金 | カットオフ時間 |
---|---|---|---|
標準の売上処理 | T+3 at 21:00 UTC | T+4 at 00:00 UTC | 20:00 Europe/London |
Webhook を設定する
支払いプロセス中と支払い完了後に、Stripe は複数のイベントを送信します。ダッシュボードの Webhook ツールを使用するか、Webhook のガイドに従って、これらのイベントを受信し、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行してください。
Bacs ダイレクトデビットの場合、payment_intent.succeeded イベントを処理して、支払いが成功したことを確認する必要があります。また、payment_intent.processing イベントと payment_intent.payment_failed イベントも処理することをお勧めします。
Webhook をローカルでテストするには、Stripe CLI を使用します。Stripe CLI をインストールすると、イベントをサーバーに転送できます。
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Webhook の設定についてもっと知る。
組み込みをテストする
この実装の準備ができていることを確認するために、サンドボックスで使用できるテスト用銀行口座番号が複数用意されています。
銀行コード | 口座番号 | 説明 |
---|---|---|
108800 | 00012345 | 支払いが成功し、PaymentIntent が processing から succeeded に変化します。 |
108800 | 90012345 | 支払いが 3 分後に成功し、PaymentIntent が processing から succeeded に変化します。 |
108800 | 33333335 | 支払いが承認されますが、すぐに debit_ エラーコードによって失敗し、PaymentIntent が processing から requires_ に変わります。同意書は inactive になり、この PaymentMethod を再び使用することはできません。 |
108800 | 93333335 | 支払いが debit_ エラーコードによって 3 分後に失敗し、PaymentIntent が processing から requires_ に変化します。同意書は inactive になり、この PaymentMethod を再び使用することはできません。 |
108800 | 22222227 | 支払いが insufficient_ エラーコードによって失敗し、PaymentIntent が processing から requires_ に変化します。同意書は active のままで、この PaymentMethod は再使用が可能です。 |
108800 | 92222227 | 支払いが insufficient_ エラーコードによって 3 分後に失敗し、PaymentIntent が processing から requires_ に変化します。同意書は active のままで、この PaymentMethod は再使用が可能です。 |
108800 | 55555559 | 支払いが 3 分後に成功し、PaymentIntent が processing から succeeded に変わりますが、不審請求の申請が直ちに作成されます。 |
108800 | 00033333 | 支払い方法の作成は成功しますが、同意書が顧客の銀行によって拒否され、即座に inactive に変化します。 |
108800 | 00044444 | Bacs ダイレクトデビットの設定を求めるリクエストが、口座番号が無効なため即座に失敗し、顧客は送信前に情報を更新するように求められます。支払いの詳細は収集されません。 |
108800 | 34343434 | 支払い額がアカウントの週次支払い額の上限を超えているため、支払いは charge_ エラーコードで失敗します。 |
108800 | 12121212 | 支払い額がアカウントの取引金額の上限を超えているため、支払いは charge_ エラーコードで失敗します。 |
テストの実行には前述の任意の口座番号を使用できます。ただし、Bacs ダイレクトデビットによる支払いは処理に数日かかるため、3 分の遅延で動作するテスト用口座番号を使用して、本番環境の支払いの動作のシミュレーションをしやすくします。
注
デフォルトでは、Stripe は決済情報が初めて収集されたときと、顧客の口座から引き落としが行われるたびに、顧客にメールを送信します。これらの通知は、サンドボックスでは送信されません。
支払いの失敗
決済はさまざまな原因で失敗する可能性があります。失敗の理由は、charge.failure_code から確認できます。特定の失敗コードの支払いのみを再試行できます。支払いを再試行できない場合は、顧客に連絡して、別の銀行口座または別の決済手段を使用して再度支払うように依頼することをお勧めします。
以下は、現時点で送信される Bacs ダイレクトデビット用の失敗コードの一覧です。コードは随時追加される可能性があるため、コードを開発、保守する際には、これらのタイプがすべてではないことに注意してください。
失敗コード | 説明 | 再試行の可否 |
---|---|---|
account_ | 銀行口座が解約されています。 | いいえ |
bank_ | アカウントが新しい決済サービスプロバイダー (PSP) に移管されました。新しい PSP の詳細が通知されているかどうかを確認してください。通知されていない場合は、顧客から新しい同意書を収集する必要があります。 | いいえ |
debit_ | 顧客が銀行に対して、この支払いが未承認であったか、支払い銀行の同意書がないことを通知しました。 | いいえ |
generic_ | この支払いは処理できませんでした。 | はい |
insufficient_ | 顧客の口座には、この支払いに充当できるだけの資金がありません。 | はい |
invalid_ | 口座番号が無効です。これは、GBP の口座ではないか、口座でダイレクトデビット決済を処理できないということが考えられます。 | いいえ |
支払いを再試行するには、同じ PaymentMethod を使用して、再度 PaymentIntent を確定します。
確実に成功させるために、支払いを再試行する前に支払人に連絡することをお勧めします。