SEPA ダイレクトデビットによる支払いを受け付ける
SEPA ダイレクトデビット支払いの受け付けについて説明します。
メモ
Stripe の債権者 ID を使用して SEPA ダイレクトデビット支払いを処理する場合は、構築済みの Checkout ページを使用して、SEPA ダイレクトデビットの同意書を収集することをお勧めします。
Web サイトでの SEPA ダイレクトデビット支払いの受け付けは、支払いを追跡するオブジェクトの作成、支払い方法に関する情報と同意書承認の収集、および支払いを処理するための Stripe への支払いの送信で構成されます。Stripe はこの PaymentIntent と呼ばれる支払いオブジェクトを使用して、支払いが完了するまで、支払いのすべての状態の追跡と処理を行います。
顧客が Bancontact または iDEAL で銀行口座情報を認証できるようにすることで SEPA ダイレクトデビット PaymentMethod を設定することもできます。
Customer を作成または取得するサーバ側
以降の支払いに SEPA ダイレクトデビットの口座を再利用するには、その口座を Customer に関連付ける必要があります。
顧客がお客様のビジネスでアカウントを作成する際、Customer オブジェクトを作成してください。この Customer オブジェクトの ID を、顧客を表す独自の内部表記と関連付けることで、保存した支払い方法の詳細を後で取得して使用することができます。
新しい Customer を作成するか、または既存の Customer を取得して、この支払いに関連付けます。サーバに以下のコードを含め、新しい Customer を作成します。
PaymentIntent を作成するサーバ側
PaymentIntent は、顧客から決済を収集する意図を表すオブジェクトであり、決済プロセスのライフサイクルの各段階を追跡します。まず、サーバーで PaymentIntent を作成し、収集する金額と eur 通貨を指定します (SEPA ダイレクトデビットは他の通貨に対応していません)。すでに Payment Intents API を使用した統合がある場合は、PaymentIntent の 決済手段タイプのリストに sepa_ を追加します。Customer の id を指定します。
再利用するために SEPA ダイレクトデビットの口座を保存するには、setup_future_usage パラメーターを off_ に設定します。SEPA ダイレクトデビットはこのパラメーターの値として off_ のみを受け付けます。
支払い方法の詳細と同意書承認を収集するクライアント側
Stripe Elements を使用してクライアントで支払い情報を収集する準備ができました。Elements は、支払いの詳細を収集するための構築済み UI コンポーネントのセットです。
Stripe Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。組み込みを機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。
HTTPS を使用せずに実装をテストできます。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効化します。
Stripe Elements を設定する
Stripe に支払いを送信するクライアント側
PaymentIntent オブジェクト全体をクライアントに送信するのではなく、ステップ 3 の client secret を使用します。これは、Stripe API リクエストを認証する API キーとは異なります。
それでも、client secret は支払いを完了できるため、慎重に扱う必要があります。記録したり、URL に埋め込んだり、その顧客以外に公開されることがないようにしてください。
PaymentIntent の成功を確認する
SEPA Direct Debit is a delayed notification payment method, so funds aren’t immediately available. When the payment has been submitted successfully, the PaymentIntent status is updated from requires_ to processing. After the payment has succeeded, the PaymentIntent status is updated from processing to succeeded.
PaymentIntent のステータスが更新されると、以下のイベントが送信されます。
| イベント | 説明 | 次のステップ |
|---|---|---|
payment_ | 顧客の支払いは、Stripe に正常に送信されました。 | 開始された支払いの成功、または失敗の結果を待ちます。 |
payment_ | 顧客の決済が成功しました。 | 顧客が購入した商品またはサービスのフルフィルメントを行います。 |
payment_ | 顧客の支払いが拒否されました。 | 顧客にメールまたはプッシュ通知で連絡し、別の決済手段をリクエストします。 |
支払いが成功したことを確認し、顧客に支払い完了を通知するには、Webhook を使用することをお勧めします。
setup_future_usage および customer が設定されているため、支払いが processing 状態になると、PaymentMethod が Customer オブジェクトに関連付けられることに注意してください。この関連付けは、支払いが最終的に成功するか、失敗するかには関係なく行われます。
組み込みをテストする
Stripe は、システムの本番環境への移行準備が整っているかを確認する際に使用できるテスト用の番号をいくつか用意しています。SEPA ダイレクトデビットを使用する Checkout システムをテストする際は、SEPA ダイレクトデビットのテスト用番号を使用できます。
IBAN をテストする
Payment Element でこれらのテスト用 IBAN を使用して、SEPA ダイレクトデビットの導入をテストします。Payment Element は IBAN を自動的に検証し、これらのテスト値のいずれかを入力すると同同意書を表示します。
メモ
Payment Element は、顧客のタイプに応じて IBAN およびその他の決済情報を自動的に検証します。エラーメッセージは Payment Element 内にインラインで表示されるため、検証を手動で処理する必要はありません。
オプション顧客の引き落とし日を設定する
予定期日を指定して、Stripe が顧客の銀行口座から引き落としを行う日付を制御できます。予定期日は、現在の日付から 3~15 日以内の日付に指定しなければなりません。
目標期日は、売上が顧客の口座を離れる日を期日指定します。設定日の 3 営業日前までの目標期日を設定された PaymentIntent をキャンセルできます。
次のいずれかの条件を満たす予定期日は、翌営業日まで引き落としが延期されます。
- 週末、祝日、またはその他の非営業日に当たる予定期日。
- 3 営業日以内に到来する予定期日。
このパラメーターは、ベストエフォート方式で機能します。顧客の銀行は、祝日の関係やその他の理由により、異なる日付に引き落としを処理する場合があります。
オプションプレフィックスを使用して同意書参照番号をカスタマイズする
SEPA ダイレクトデビットの同意書参照番号をカスタマイズすると、同意書の識別をシンプルに行えます。これを行うには、オプションの payment_ 値を指定します。一意のシーケンスの先頭に reference_ を追加して、参照全体が一意のままになるようにします。
reference_ は以下の要件を満たしている必要があります。
- 最大長: 12 文字
- 数字または大文字で始める必要があります
- 使用できる文字:
- 大文字
- 番号
- スペース
- 特殊文字:
.、/、&、-、_
- 先頭に
STRIPEを付けることはできません。
プレフィックスには任意の区切り文字を含めます。デフォルトでは区切り文字は追加されません。末尾のスペースは、最大 1 スペースまでトリミングされます。有効な接頭辞を使用すると、結果の参照は常に 24 文字の長さになります。
生成される参照は EX4MPL3-19CNCI920C2M02O3 のようになります。
| エラーコード | メッセージ |
|---|---|
invalid_ | reference_ は最大 12 文字で、使用できるのは大文字、数字、スペース、および特殊文字 /、_、-、&、. のみです。先頭に STRIPE を付けることはできません。 |