ACH ダイレクトデビットによる将来の支払いに備えて詳細を保存する
将来の ACH ダイレクトデビットによる支払いに備えて支払い方法の詳細を保存する方法を紹介します。
設定モードの Checkout を使用して、事前に決済手段の詳細を収集し、後から最終的な金額や支払い日を決定できます。これは、次の場合に役立ちます。
- 決済手段をウォレットに保存して、以降の購入を効率化する
- サービスの提供後に追加料金を回収する
- サブスクリプションの無料トライアルを開始する
注
ACH Direct Debit は、遅延通知型の決済手段であるため、支払い後に資金はすぐには利用可能になりません。通常、決済金額がアカウントに入金されるまでに 4 営業日かかります。
はじめに
このガイドでは、Checkout の基本的な将来の支払いを設定するシステムを拡張して、ACH Direct Debit による決済のサポートを追加する方法をご紹介します。
顧客を作成または取得する推奨サーバー側
ユーザーがビジネスでアカウントを作成する際に、Customer オブジェクトを作成するか、このユーザーに関連付けられた既存の Customer を取得します。この Customer オブジェクトの ID を、顧客を表す社内の内部表記と関連付けることで、保存されている支払い方法の詳細を後で取得して使用することができます。Financial Connections のリピートユーザーの最適化を有効にするには、Customer にメールアドレスを含めます。
支払い方法として ACH ダイレクトデビットを有効にする
新しい Checkout セッションを作成する際は、以下を行う必要があります。
us_
をbank_ account payment_
のリストに追加します。method_ types - すべての
line_
がitems usd
通貨を使用していることを確認します。 payment_
を含めるようにmethod permissions
パラメーターを設定します。
デフォルトでは、銀行口座の支払い情報の収集では、手動の口座番号入力と少額入金の確認のフォールバックオプションを使用し、Financial Connections で顧客のアカウントを即時確認します。Financial Connections を設定し、ACH の実装を最適化するために追加の口座データにアクセスする方法については、Financial Connections に関するドキュメントをご覧ください。たとえば、Financial Connections を使用して、ACH 決済の開始前にアカウントの残高を確認できます。
注
顧客がアカウントを認証した後で、追加データにアクセスを拡張するには、権限を拡張してアカウントを再度関連付ける必要があります。
Checkout セッションでは、顧客にダイアログが表示され、即時確認を使用するか、少額入金による確認のために銀行口座情報を入力するか選択することができます。
顧客が少額入金による確認を選択した場合、Stripe は指定された銀行口座に 2 回の少額入金を自動的に行います。これらの入金が顧客のオンライン銀行明細書に表示されるまでに 1 ~ 2 営業日かかります。入金が到着すると、金額を確定して Stripe で銀行口座を確認するためのリンクが記載されたメールが、顧客に届きます。確認が完了すると、決済の処理が開始されます。
組み込みをテストする
Financial Connections を使用して即時確認を行うシナリオをテストする方法をご紹介します。
サンドボックスで取引メールを送信する
銀行口座の詳細を収集し、同意書を受け付けたら、サンドボックスで同意書の確認メールと少額入金の確認メールを送信します。
ドメインが {domain} でユーザー名が {username} の場合、{username}+test_email@{domain} というメール形式を使用してテスト取引メールを送信してください。
たとえば、ドメインが example.com でユーザー名が info の場合、ACH Direct Debit 決済のテストには info+test_email@example.com という形式を使用します。この形式により、メールが正しくルーティングされます。+test_email サフィックスを含めない場合、メールは送信されません。
よくある間違い
テスト中にこれらのメールをトリガーするには、Stripe の本番環境利用の申請を行う必要があります。
テスト用口座番号
Stripe では、手動入力の銀行口座の組み込みが本番環境に移行する準備が整ったかどうかを確認するため、テスト用の口座番号と対応するトークンをいくつか用意しています。
口座番号 | トークン | 金融番号 | 動作 |
---|---|---|---|
000123456789 | pm_ | 110000000 | 支払いは成功します。 |
000111111113 | pm_ | 110000000 | 口座が解約済みであるため、支払いは失敗します。 |
000000004954 | pm_ | 110000000 | この支払いは、不正利用のリスクが高いため、Radar によってブロックされています。 |
000111111116 | pm_ | 110000000 | 口座が見つからないため、支払いは失敗します。 |
000222222227 | pm_ | 110000000 | 残高不足のため、支払いは失敗します。 |
000333333335 | pm_ | 110000000 | 引き落としがオーソリされていないため、支払いは失敗します。 |
000444444440 | pm_ | 110000000 | 通貨が無効であるため、支払いは失敗します。 |
000666666661 | pm_ | 110000000 | 支払いで少額入金の送金が失敗します。 |
000555555559 | pm_ | 110000000 | 支払いによって不審請求の申請が開始されています。 |
000000000009 | pm_ | 110000000 | 支払いは無期限に処理中のままになります。これは PaymentIntent のキャンセルをテストするのに便利です。 |
000777777771 | pm_ | 110000000 | 支払い額がアカウントの週次支払い額の上限を超えているため、支払いが失敗しました。 |
テスト取引を完了する前に、自動的に支払いに成功または失敗するテスト用のすべての口座を確認する必要があります。確認するには、下記の少額入金のテスト用の金額または明細書表記コードを使用します。
少額入金の金額と明細書表記コードをテストする
さまざまなシナリオを再現するために、これらの少額入金の金額「または」明細書表記コードの値 0.01 を使用します。
少額入金の金額 | 明細書表記コードの値 0.01 | シナリオ |
---|---|---|
32 および 45 | SM11AA | アカウントの確認をシミュレーションします。 |
10 および 11 | SM33CC | 許容された確認回数の超過をシミュレーションします。 |
40 および 41 | SM44DD | 少額入金のタイムアウトをシミュレーションします。 |
売上処理の動作をテストする
テスト取引は即座に売上として処理され、利用可能なテスト残高に追加されます。この動作は、利用可能な残高で取引が売上として処理されるまでに数日かかることがある、本番環境とは異なります。
支払い方法を使用する
Checkout セッションが完了すると、PaymentMethod ID を収集できます。これらの PaymentMethod ID を使用することで、顧客に銀行口座の再入力を求めることなく、将来の決済を開始できます。
PaymentIntent を作成するときに、payment_
と顧客 ID を指定し、保存済みの銀行口座情報を使用して顧客に請求します。
オプション即時の確認のみ
ACH ダイレクトデビットによる決済では、デフォルトで顧客は銀行口座の即時確認、または少額入金を使用できます。オプションとして、Checkout セッションを作成するときに payment_
パラメーターを使用して、銀行口座の即時確認のみを要求するように設定することもできます。
オプションFinancial Connections 銀行口座のデータにアクセスする
SetupIntentの作成時に、追加のデータ権限をリクエストする場合にのみ、Financial Connections データにアクセスできます。
顧客がStripe Financial Connections 認証フローを完了すると、返される us_
PaymentMethod には、Financial Connections アカウントを指す financial_connections_account ID が含まれます。この ID を使用して口座データにアクセスします。
よくある間違い
顧客が手動入力および少額入金によって関連付けた銀行口座には、Payment Method の financial_
ID がありません。
Financial Connections アカウント ID を特定するには、SetupIntent を取得して payment_
属性を拡張します。
{ "id": "{{SETUP_INTENT_ID}}", "object": "setup_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account" "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... }
残高データにアクセスできる場合には、収集した支払い方法で支払いを開始する前に残高を確認することをお勧めします。
追加の口座データを使用して、Financial Connections で ACH の実装を最適化する方法をご紹介します。
オプションデフォルトの支払い方法を更新する
SetupIntent
が succeeded
状態に達すると、顧客の default_
を更新できます。