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

注

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

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

Bacs ダイレクトデビット支払いの受け付けについてご紹介します。

ページをコピー

注意

Stripe は、顧客の通貨、決済手段の制限、その他のパラメーターを評価して、決済手段オプションを自動的に提示します。決済を受け付けるの手順を使用して、Stripe ダッシュボードから決済手段を設定することをお勧めします。

引き続き、Checkout で顧客に提示する決済手段を手動で設定する場合は、このガイドを使用します。それ以外の場合は、ダッシュボードで決済手段を設定できるように、構築済みのシステムを更新してください。

イギリスの Stripe ユーザーは、支払いモードで Checkout を使用して、Bacs ダイレクトデビットによる支払いを受け付けることができます。

Checkout セッションは、顧客の購入意向の詳細を表します。顧客が支払いを希望する場合は、Checkout セッションを作成します。顧客が Checkout セッションにリダイレクトされると、、顧客が購入を完了できる支払いフォームが Stripe に表示されます。顧客が購入を完了すると、サイトにリダイレクトされます。

Stripe を設定する
サーバ側

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

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

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

商品および価格を作成する

Checkout を使用するには、まず商品と価格を作成する必要があります。物品やサービスレベルごとに商品を作成します。各商品の料金体系は 1 つ以上の価格で示されます。

たとえば、20 GBP と 25 EUR の、通貨が異なる 2 つの「価格」が設定された T シャツ「商品」を作成できます。これにより、対象商品の詳細を変更せずに価格を変更したり追加したりできるようになります。商品と価格は、API を通じて、またはダッシュボードを使用して作成できます。

決済時に価格を決定する場合 (たとえば、顧客が寄付金額を設定する場合など)、または事前に価格を作成したくない場合は、既存の商品を使用して Checkout セッションの作成時に単発の価格を作成することもできます。

注意

Prices を使用しない既存の Checkout 組み込みがある場合には、Prices の導入以降に Checkout API が変更されています。この移行ガイドを使用してアップグレードするか、既存の組み込みを維持する ことができます。

注

Products created in a sandbox can be copied to live mode so that you don’t need to re-create them. In the Product detail view in the Dashboard, click Copy to live mode in the upper right corner. You can only do this once for each product created in a sandbox. Subsequent updates to the test product are not reflected for the live product.

Make sure you’re in a sandbox, and define the items you want to sell. To create a new product and price:

  • ダッシュボードで商品セクションに移動します
  • 商品を追加をクリックします
  • 価格を設定する際に一括を選択します

指定した商品の名前、説明、画像が Checkout で顧客に表示されます。

Checkout セッションを作成する
クライアント側
サーバ側

ウェブサイトに決済ボタンを追加し、サーバー側のエンドポイントを呼び出して Checkout セッションを作成します。

index.html
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>

line_items を使って Checkout セッションを作成します。項目は、顧客が購入している項目のリストを表します。

顧客は支払いを正常に完了すると、success_url にリダイレクトされます。これはお客様の Web サイトのページであり、支払い情報の収集に成功し、支払いが処理されていることを顧客に知らせます。

顧客が支払いを完了せずに Checkout セッションでお客様のロゴをクリックすると、Checkout は顧客を cancel_url に移動することで、元の Web サイトにリダイレクトします。このページは通常、顧客が Checkout にリダイレクトされる前に表示していたお客様の Web サイトのページです。

Checkout は決済を受け付け、将来の使用のために支払い方法を保存できます。この方法で保存された支払い方法は、PaymentIntent (支払いインテント) による将来の支払いに使用できます。Checkout セッションを作成したら、レスポンスで返された URL に顧客をリダイレクトします。

Command Line
curl
curl https://api.stripe.com/v1/checkout/sessions \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="payment" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_intent_data[setup_future_usage]"="off_session" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ -d "cancel_url"="https://example.com/cancel"

注

Bacs ダイレクトデビットのルールでは、支払いの詳細が最初に収集されたときと、口座から引き落とされたときに、顧客は引き落とし通知メールを受信する必要があります。Stripe は、デフォルトでこれらのメールを送信します。

Checkout セッションを作成すると、セッション ID が返されます。上の例で示されるように、success_url に {CHECKOUT_SESSION_ID} テンプレート変数を含めることによって、成功時のページでセッション ID を使用できるようにします。

注意

次に挙げる理由により、支払い開始の検出時には、success_url へのリダイレクトのみに依存しないでください。

  • 悪意を持つユーザが、支払いをせずに success_url に直接アクセスし、商品やサービスにアクセスできるようになる可能性があります。
  • 顧客が支払いの成功後に success_url に到達するとは限りません。リダイレクトが発生する前に、顧客がブラウザタブを閉じることがあります。

支払い後のイベントを処理する
サーバ側

顧客は支払いを完了すると、success_url パラメータで指定された URL にリダイレクトされます。通常、これはお客様の Web サイト上にある、支払いが成功したことを顧客に知らせるページです。

ただし、Bacs ダイレクトデビット支払いは通知遅延型の支払い方法であるため、売上はすぐに利用可能になりません。Bacs ダイレクトデビット支払いは通常、売上が利用可能になるまでに 3 営業日かかります。このため、売上が利用可能になるまで注文のフルフィルメントを保留する必要があります。支払いが成功すると、基になる PaymentIntent のステータスが processing から succeeded に変わります。

支払いのステータスに変化があると、以下の Checkout イベントが送信されます。

イベント名説明次のステップ
checkout.session.completed顧客が Checkout フォームを送信して、デビット支払いのオーソリを正常に実行しています。支払いの成功または失敗の結果を待ちます。
checkout.session.async_payment_succeeded顧客の支払いが成功しました。顧客が購入した商品またはサービスのフルフィルメントを行います。
checkout.session.async_payment_failed何らかの理由により顧客の支払いが拒否されたか、失敗しました。顧客にメールで連絡して、新たに注文を行うようリクエストします。

Webhook コードでこれら 3 つの Checkout イベントのすべてを処理する必要があります。

各 Checkout Webhook のペイロードには Checkout Session (セッション) オブジェクト が含まれ、これには、顧客と PaymentIntent に関する情報が含まれます。

顧客がリダイレクトされる前に、checkout.session.completed Webhook がお客様のサーバーに送信されます。Webhook の確認応答 (任意の 2xx ステータスコード) によって、success_url への顧客のリダイレクトが開始されます。支払いに成功してから 10 秒以内に Stripe が成功確認応答を受け取らなかった場合、顧客は自動的に success_url ページにリダイレクトされます。

success_url ページで、顧客に成功のメッセ―ジを表示しますが、その際に決済手段 Bacs ダイレクトデビットは即時ではないため、注文のフルフィルメントに数日かかることを知らせます。

遅延通知型の決済の他に即時の決済 (クレジットカードなど) を受け付ける際には、checkout.session.completed イベントの受信時に両方の種類の決済を処理できるように、Webhook エンドポイントを更新します。

Ruby
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' # Using Sinatra post '/webhook' do payload = request.body.read event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'checkout.session.completed' session = event['data']['object'] # Check if the order is paid (for example, from a card payment) payment_intent = Stripe::PaymentIntent.retrieve(session.payment_intent) # A delayed notification payment will have the status 'processing' order_paid = payment_intent.status == "succeeded" # Save an order in your database, marked as 'awaiting payment' create_order(session) if order_paid fulfill_order(session) end when 'checkout.session.async_payment_succeeded' session = event['data']['object'] # Fulfill the purchase... fulfill_order(session) when 'checkout.session.async_payment_failed' session = event['data']['object'] # Send an email to the customer asking them to retry their order email_customer_about_failed_payment(session) end status 200 end

顧客や支払いに関する情報を取得するには、Webhook のペイロードの customer や payment_intent のプロパティで参照される Customer または PaymentIntent オブジェクトを取得します。

Webhook をローカルでテストする

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 の設定についてもっと知る。

組み込みをテストする

この時点で、銀行口座の詳細を収集して支払いを受け入れる Bacs ダイレクトデビットの基本的な組み込みが完了しています。

There are several test bank account numbers you can use in a sandbox to make sure this integration is ready.

銀行コード口座番号説明
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 ダイレクトデビットの設定を求めるリクエストが、口座番号が無効なため即座に失敗し、顧客は送信前に情報を更新するように求められます。支払いの詳細は収集されません。
10880034343434The payment fails with a charge_exceeds_source_limit failure code due to the payment amount causing the account to exceed its weekly payment volume limit.
10880012121212The payment fails with a charge_exceeds_weekly_limit failure code due to the payment amount exceeding the account’s transaction volume limit.

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

注

By default, Stripe automatically sends emails to the customer when payment details are initially collected and each time a debit will be made on their account. These notifications aren’t sent in sandboxes.

支払いの失敗

支払いはさまざまな理由で失敗する可能性があります。失敗の理由は、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