銀行振込を受け付ける
顧客からの銀行振込による決済を初めて受け付ける際に、Stripe はその顧客用に仮想銀行口座を生成します。この口座は、顧客と直接共有できます。この顧客からの以降のすべての銀行振込による支払いは、この銀行口座に送金する必要があります。一部の国では、Stripe は、一意の送金照会番号も提供します。未払いの支払いと振込の照合を簡単にするため、顧客は各振込にこの番号を含める必要があります。国によっては、無料で作成できる仮想銀行口座番号の数に制限があります。
以下のシーケンス図は、銀行振込による決済を受け付ける際の一般的なステップの概要を示しています。
支払い不足と過払いを処理する
銀行振込による決済では、顧客の振込額が予想される支払い金額よりも多い場合や少ない場合があります。顧客の振込額が少ない場合、Stripe は、未払いの支払いインテントに部分的に資金を充当します。請求書に部分的に資金が充当されることはありません。入金された売上によって請求額の全額が支払われるまで、請求書は未払いのままになります。
顧客から予想される金額よりも多く振り込まれた場合、Stripe は、未払いの支払いに対して入金された売上の消し込みを試行し、残りの超過額を顧客の現金残高に保持します。Stripe による消し込み処理の詳細については、ドキュメントの消し込みセクションをご覧ください。
複数の未払いの支払いまたは請求書を処理する
銀行振込で支払うことができる未払いの支払いや請求書が複数ある場合があります。デフォルトの設定の場合、Stripe が振込の参照コードや送金額などの情報を使用して、銀行振込の自動消し込みを試行します。
自動消し込みを無効にして、支払いと請求書を手動で消し込むことができます。reconciliation mode (消し込みモード) を manual に設定すると、顧客ごとに自動消し込み動作を上書きできます。
Customer を作成または取得するサーバ側
Customer オブジェクトを関連付けて、銀行振込による各支払いを消し込む必要があります。既存の Customer オブジェクトがある場合は、このステップをスキップできます。ない場合は、新しい Customer オブジェクトを作成します。
PaymentIntent を作成および確定するサーバ側
PaymentIntent は、顧客から支払いを回収するお客様の意図を表すオブジェクトであり、支払いプロセスのライフサイクルの各段階を追跡します。回収する金額と通貨を指定して、お客様のサーバーで PaymentIntent を作成して確定してください。
銀行振込を完了するよう顧客に指示するクライアント側
顧客の残高がリクエスト金額をまかなうのに十分な金額でない場合、PaymentIntent は requires_action
ステータスを表示します。レスポンスには display_bank_transfer_instructions
の type
値を持つ next_action
フィールドが含まれます。next_action[display_bank_transfer_instructions]
ハッシュには、銀行振込を完了できるように顧客に表示される情報が含まれています。
注
本番環境では、Stripe は各顧客に一意の銀行振込の詳細を提供します。一方、テスト環境のすべての顧客に対しては、無効な銀行振込の詳細を提供します。本番環境とは異なり、これらの無効な詳細は必ずしも一意であるとは限りません。
PaymentIntent の成功を確認する
PaymentIntent は、売上が銀行口座に入金されるまで requires_action
ステータスのままとなります。売上の準備ができると、PaymentIntent のステータスが requires_action
から succeeded
に更新されます。
payment_intent.partially_funded
イベントの受信を開始するには、Webhook エンドポイントを設定する必要があります。
また、Webhook Endpoints API を使用して payment_intent.partially_funded
イベントの受信を開始することもできます。
PaymentIntent が更新されると、Stripe は、以下のイベントを支払い資金追加フロー中に送信します。
イベント | 説明 | 次のステップ |
---|---|---|
payment_intent.requires_action | 顧客の残高に PaymentIntent を消し込むのに十分な資金がない場合、確定時に送信され、PaymentIntent は requires_action に移行します。 | amount_remaining を使用して銀行振込を行うよう顧客に指示します。 |
payment_intent.partially_funded | 顧客は PaymentIntent に充てられた銀行振込を行いましたが、支払いを完了するのに十分ではありませんでした。このような状況は、振込額が不足していたり (誤りによる支払い不足または銀行から請求される手数料のため)、差引残高がこの PaymentIntent に適用されていたりすると発生する可能性があります。一部のみ資金追加された PaymentIntent は支払いが完了するまでアカウント残高に反映されません。 | 新しい amount_remaining を使用して別の銀行振込を行い、支払いを完了するよう顧客に指示します。部分的に資金を充当して支払いを完了する場合は、amount を更新して PaymentIntent をもう一度確定できます。 |
payment_intent.succeeded | 顧客の支払いが成功しました。 | 顧客が購入した商品またはサービスの発送を行います。 |
注意
部分的に資金が充当された PaymentIntent の金額を変更すると、売上は顧客の残高に戻されます。他に open 状態の PaymentIntent がある場合、Stripe はそれらに自動で資金追加します。顧客に手動消し込みが設定されている場合は、もう一度売上を充当する必要があります。
Webhook を使用して支払いが成功したことを確認し、顧客に支払い完了を通知することをお勧めします。
サンプルコード
ダッシュボードで保留中の支払いを表示する
ダッシュボードでステータスに資金供給待ちのフィルターを適用すると、保留中のすべての銀行振込 PaymentIntent を表示できます。
組み込みをテストする
ダッシュボードまたは HTTP リクエストを使用して、銀行振込の受け取りをシミュレーションすることにより、お使いの組み込みをテストできます。
ダッシュボードを使用する
ダッシュボードを使用して銀行振込をシミュレーションするには、ダッシュボードで顧客のページに移動します。支払い方法で、追加をクリックして、現金残高に資金を追加 (テスト環境のみ) を選択します。
Stripe API を使用
API コールを作成して、銀行振込をシミュレーションできます。
一時的な使用上の問題を処理する
次のエラーコードは、その決済手段が一時的に使用できない状態にあることを示しています。
コード | 説明 | 処理 |
---|---|---|
payment_method_rate_limit_exceeded | この決済手段には、API 全体のレート制限よりも厳しい制限が課されていますが、大量のリクエストが立て続けに実行されました。 | このエラーは、Web サイトでのセール期間中などに、多くの顧客が同じ決済方法を使用しようとすると、複数の API リクエストで生じることがあります。その場合は、顧客に別の決済方法を使用するように依頼します。 |
注意
全般的に、または今後のイベントで使用量が高くなることが想定される場合は、すぐに Stripe にお問い合わせください。