コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
決済手段
決済手段を追加
    概要
    支払い方法の導入オプション
    ダッシュボードで支払い方法を管理
    決済手段のタイプ
    カード
    Stripe 残高で支払う
    仮想通貨
    銀行口座引き落とし
      ACH ダイレクトデビット
      Bacs ダイレクトデビット
        決済を受け付ける
        Stripe に Bacs データをインポートする
        銀行情報の保存
      カナダのプレオーソリデビット
      オーストラリアの BECS ダイレクトデビット
      ニュージーランドBECS ダイレクトデビット
      SEPA ダイレクトデビット
    銀行へのリダイレクト
    銀行振込
    クレジットトランスファー (Sources)
    後払い
    リアルタイム決済
    店舗支払い
    ウォレット
    国ごとに現地の支払い方法を有効化
    カスタムの決済手段
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
Financial Connections
Climate
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
ホーム支払いAdd payment methodsBank debitsBacs Direct Debit

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

Bacs ダイレクトデビット支払い

イギリスの銀行口座を持つ顧客からの Bacs ダイレクトデビット決済を受け付けてください。

Web サイトでの Bacs ダイレクトデビットによる決済の受け付けプロセスは、支払いを追跡するオブジェクトの作成、支払い方法に関する情報と同意書承認の収集、Stripe への支払いの送信 (処理のため)、および顧客の銀行口座の確認で構成されます。

Stripe では、PaymentIntent と呼ばれる決済オブジェクトを使用して、支払いが完了するまでの状態のすべてを追跡および処理します。

Stripe を設定する
サーバ側

まず、Stripe アカウントが必要です。今すぐ登録してください。

アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Customer を作成または取得する
サーバ側

将来の決済に銀行口座を再利用するには、その口座を 顧客 に紐付ける必要があります。

顧客がビジネスでアカウントを作成する際に、Customer オブジェクトを作成します。この Customer オブジェクトの ID を、顧客を表す社内の内部表記と関連付けることで、保存されている支払い方法の詳細を後で取得して使用することができます。

新しい Customer を作成するか、または既存の Customer を取得して、この決済に紐付けます。サーバーに以下のコードを含め、新しい Customer を作成します。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

支払い方法の詳細を収集する

注

Bacs ダイレクトデビットのスキームルールでは、顧客は Stripe が顧客の口座から引き落とすことへの同意書に同意するよう定められています。Payment Element は、顧客の支払い詳細を受け付けるときにこの同意書を収集します。そのため、お客様はこの要件に従うために特別な対策を取る必要はありません。

Payment Element を使用してクライアントで支払い詳細を収集する準備ができました。Payment Element は事前構築された UI コンポーネントであり、多様な支払い方法の支払い詳細の収集を容易にします。

Payment Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。決済手段によっては、支払い確認のために別のページにリダイレクトする必要があるため、Payment Element を別の iframe 内に配置しないでください。

実装を機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。HTTPS を使用せずに実装をテストすることはできますが、本番環境で支払いを受け付ける準備が整ったら、忘れずに有効にしてください。

Stripe.js を設定する

Payment Element は Stripe.js の機能として自動的に使用できるようになります。決済ページに Stripe.js スクリプトを含めるには、HTML ファイルの head にスクリプトを追加します。常に js.stripe.com から Stripe.js を直接読み込むことにより、PCI 準拠が維持されます。スクリプトをバンドルに含めたり、そのコピーを自身でホストしたりしないでください。

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>

購入ページで次の JavaScript を使用して、Stripe のインスタンスを作成します。

checkout.js
// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Payment Element を決済ページに追加する

決済ページに Payment Element を配置する場所が必要です。決済フォームで、一意の ID を持つ空の DOM ノード (コンテナー) を作成します。

checkout.html
<form id="payment-form"> <div id="payment-element"> <!-- Elements will create form elements here --> </div> <button id="submit">Submit</button> <div id="error-message"> <!-- Display error message to your customers here --> </div> </form>

上記のフォームが読み込まれたら、mode、amount、currency を指定して Elements インスタンスを作成します。これらの値によって、顧客に表示される決済手段が決まります。フォームで新しい決済手段を指定するには、必ずダッシュボードで有効にしてください。

checkout.js
const options = { mode: 'payment', amount: 1099, currency: 'gbp', // Fully customizable with appearance API. appearance: {/*...*/}, }; // Set up Stripe.js and Elements to use in checkout form const elements = stripe.elements(options); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');

Elements プロバイダーを作成する際に Appearance (デザイン) オブジェクト を options に渡すことで、サイトのデザインに合わせて Payment Element をカスタマイズできます。

住所を収集

デフォルトでは、Payment Element は必要な請求先住所情報のみを収集します。(たとえば、デジタル商品およびサービスの税金を計算するなどの目的で) 顧客の詳細な請求先住所または配送先住所を収集するには、Address Element を使用します。

PaymentIntent を作成する
サーバ側

支払い確定の直前にカスタムのビジネスロジックを実行する

支払いの確定ガイドのステップ 5 に移動して、支払い確定の直前にカスタムのビジネスロジックを実行します。または、以下のステップに従って既存のシステムをシンプルにします。ここでは、クライアント側で stripe.confirmPayment を使用して、支払いの確定と次のアクションの処理の両方を行います。

顧客が支払いフォームを送信したら、PaymentIntent を使用して確認と支払いのプロセスを適切に管理します。amount と currency を指定してサーバー側で PaymentIntent を作成します。悪意のある顧客が独自の価格を選択できないように、請求金額はクライアント側ではなく、常にサーバー側 (信頼できる環境) で決定してください。

PaymentIntent には、client secret が含まれています。 この値をクライアントに返し、Stripe.js がこれを使用して支払いプロセスを安全に完了できるようにします。

main.rb
Ruby
Python
PHP
Node.js
Java
Go
.NET
No results
require 'stripe' Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/create-intent' do intent = Stripe::PaymentIntent.create({ # To allow saving and retrieving payment methods, provide the Customer ID. customer: customer.id, amount: 1099, currency: 'gbp', }) {client_secret: intent.client_secret}.to_json end

Stripe に支払いをする
クライアント側

stripe.confirmPayment を使用して、Payment Element の詳細を使って支払いを完了します。

この関数に return_url を指定して、支払い完了後に Stripe がユーザーをリダイレクトする場所を示します。ユーザーは、最初に銀行の認証ページなどの中間サイトにリダイレクトされてから、return_url にリダイレクトされる場合があります。カード支払いでは、支払いが成功するとすぐに return_url にリダイレクトされます。

支払い完了後にカード支払いのリダイレクトを行わない場合は、redirect を if_required に設定できます。これにより、リダイレクトベースの決済手段で購入した顧客のみがリダイレクトされます。

checkout.js
const form = document.getElementById('payment-form'); const submitBtn = document.getElementById('submit'); const handleError = (error) => { const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; submitBtn.disabled = false; } form.addEventListener('submit', async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); // Prevent multiple form submissions if (submitBtn.disabled) { return; } // Disable form submission while loading submitBtn.disabled = true; // Trigger form validation and wallet collection const {error: submitError} = await elements.submit(); if (submitError) { handleError(submitError); return; } // Create the PaymentIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", }); const {client_secret: clientSecret} = await res.json(); // Confirm the PaymentIntent using the details collected by the Payment Element const {error} = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point is only reached if there's an immediate error when // confirming the payment. Show the error to your customer (for example, payment details incomplete) handleError(error); } else { // Your customer is redirected to your `return_url`. For some payment // methods like iDEAL, your customer is redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } });

支払い後のイベントを処理する

Bacs ダイレクトデビットは遅延通知型の支払い方法であるため、資金は即座には利用できません。

タイムライン

Bacs Direct Debit では、売上が Stripe 残高で利用可能になるまでに数営業日かかる場合があります。売上が利用可能になるまでにかかる営業日数は、資金追加のタイミングと呼ばれます。1 日の締め切り時刻以降に送信された支払いは、翌営業日に処理されます。

同意書がすでに設定されている場合は、Bacs ダイレクトデビットによる決済の成功または失敗を確認するのに 4 営業日かかります。新しい同意書を収集する必要がある場合は、7 営業日かかります。

場合によっては、お客様の Stripe アカウントで支払い成功としてマークされた後に、銀行が支払いの失敗を通知してくることがあります。この場合には、その支払いの失敗は、適切な理由コードを持つ不審請求の申請として識別されます。

次の表は、Stripe が提供する Bacs Direct Debit 決済の売上処理のタイミングを示しています。

売上処理のタイプ支払い完了利用可能な資金カットオフ時間
標準の売上処理T+3 at 21:00 UTCT+4 at 00:00 UTC20:00 Europe/London

Webhook を設定する

支払いプロセス中と支払い完了後に、Stripe は複数のイベントを送信します。ダッシュボードの Webhook ツールを使用するか、Webhook のガイドに従って、これらのイベントを受信し、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行してください。

Bacs ダイレクトデビットの場合、payment_intent.succeeded イベントを処理して、支払いが成功したことを確認する必要があります。また、payment_intent.processing イベントと payment_intent.payment_failed イベントも処理することをお勧めします。

Webhook をローカルでテストするには、Stripe CLI を使用します。Stripe CLI をインストールすると、イベントをサーバーに転送できます。

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)

Webhook の設定についてもっと知る。

組み込みをテストする

この実装の準備ができていることを確認するために、サンドボックスで使用できるテスト用銀行口座番号が複数用意されています。

銀行コード口座番号説明
10880000012345支払いが成功し、PaymentIntent が processing から succeeded に変化します。
10880090012345支払いが 3 分後に成功し、PaymentIntent が processing から succeeded に変化します。
10880033333335支払いが承認されますが、すぐに debit_not_authorized エラーコードによって失敗し、PaymentIntent が processing から requires_payment_method に変わります。同意書は inactive になり、この PaymentMethod を再び使用することはできません。
10880093333335支払いが debit_not_authorized エラーコードによって 3 分後に失敗し、PaymentIntent が processing から requires_payment_method に変化します。同意書は inactive になり、この PaymentMethod を再び使用することはできません。
10880022222227支払いが insufficient_funds エラーコードによって失敗し、PaymentIntent が processing から requires_payment_method に変化します。同意書は active のままで、この PaymentMethod は再使用が可能です。
10880092222227支払いが insufficient_funds エラーコードによって 3 分後に失敗し、PaymentIntent が processing から requires_payment_method に変化します。同意書は active のままで、この PaymentMethod は再使用が可能です。
10880055555559支払いが 3 分後に成功し、PaymentIntent が processing から succeeded に変わりますが、不審請求の申請が直ちに作成されます。
10880000033333支払い方法の作成は成功しますが、同意書が顧客の銀行によって拒否され、即座に inactive に変化します。
10880000044444Bacs ダイレクトデビットの設定を求めるリクエストが、口座番号が無効なため即座に失敗し、顧客は送信前に情報を更新するように求められます。支払いの詳細は収集されません。
10880034343434支払い額がアカウントの週次支払い額の上限を超えているため、支払いは charge_exceeds_source_limit エラーコードで失敗します。
10880012121212支払い額がアカウントの取引金額の上限を超えているため、支払いは charge_exceeds_weekly_limit エラーコードで失敗します。

テストの実行には前述の任意の口座番号を使用できます。ただし、Bacs ダイレクトデビットによる支払いは処理に数日かかるため、3 分の遅延で動作するテスト用口座番号を使用して、本番環境の支払いの動作のシミュレーションをしやすくします。

注

デフォルトでは、Stripe は決済情報が初めて収集されたときと、顧客の口座から引き落としが行われるたびに、顧客にメールを送信します。これらの通知は、サンドボックスでは送信されません。

支払いの失敗

決済はさまざまな原因で失敗する可能性があります。失敗の理由は、charge.failure_code から確認できます。特定の失敗コードの支払いのみを再試行できます。支払いを再試行できない場合は、顧客に連絡して、別の銀行口座または別の決済手段を使用して再度支払うように依頼することをお勧めします。

以下は、現時点で送信される Bacs ダイレクトデビット用の失敗コードの一覧です。コードは随時追加される可能性があるため、コードを開発、保守する際には、これらのタイプがすべてではないことに注意してください。

失敗コード説明再試行の可否
account_closed銀行口座が解約されています。いいえ
bank_ownership_changedアカウントが新しい決済サービスプロバイダー (PSP) に移管されました。新しい PSP の詳細が通知されているかどうかを確認してください。通知されていない場合は、顧客から新しい同意書を収集する必要があります。いいえ
debit_not_authorized顧客が銀行に対して、この支払いが未承認であったか、支払い銀行の同意書がないことを通知しました。いいえ
generic_could_not_processこの支払いは処理できませんでした。はい
insufficient_funds顧客の口座には、この支払いに充当できるだけの資金がありません。はい
invalid_account_number口座番号が無効です。これは、GBP の口座ではないか、口座でダイレクトデビット決済を処理できないということが考えられます。いいえ

支払いを再試行するには、同じ PaymentMethod を使用して、再度 PaymentIntent を確定します。

確実に成功させるために、支払いを再試行する前に支払人に連絡することをお勧めします。

オプション顧客の引き落とし日を設定する

オプションプレフィックスを使用して同意書参照番号をカスタマイズする

参照情報

  • PaymentIntent webhook
  • 口座振替の同意を管理
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 早期アクセスプログラムにご参加ください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc