Bacs ダイレクトデビットによるサブスクリプションを設定する
Bacs ダイレクトデビットを使用したサブスクリプションの作成と請求の方法をご紹介します。
このガイドを参照して、決済手段に Bacs Direct Debit と Checkout を使用するサブスクリプションを設定します。
継続支払いの商品と価格を作成する
注意
Checkout を使用するには、まず商品と価格を作成する必要があります。物品やサービスレベルごとに商品を作成します。各商品の料金体系は 1 つ以上の価格で示されます。
たとえば、10 USD/月、100 USD/年、9 GBP/月、90 GBP/年の、4 つの「価格」が設定されたソフトウェア「商品」を作成できます。これにより、対象商品の詳細を変更せずに価格を変更したり追加したりできます。商品と価格は、API を通じて、または Stripe ダッシュボードを使用して作成できます。
価格が購入時に決定される場合 (顧客が寄付金額を設定する場合など)、または事前に価格を作成しない選択をした場合は、Checkout セッションの作成時に価格をインラインで作成することができます。
Checkout セッションを作成するクライアント側サーバ側
ウェブサイトに決済ボタンを追加し、サーバー側のエンドポイントを呼び出して Checkout セッションを作成します。
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
既存の Price の ID を使用して Checkout セッションを作成します。モードが subscription に設定されており、1 つ以上の継続価格を渡すことを確認してください。継続価格に加えて、1 回限りの価格を追加できます。Checkout セッションを作成したら、レスポンスで返された URL に顧客をリダイレクトします。
顧客が支払いを正常に完了すると、success_ (支払いが成功したことを顧客に通知するウェブページ) にリダイレクトされます。上記の例のように、success_ に {CHECKOUT_ テンプレート変数を含めることで、成功ページでセッション ID が使用できるようになります。
顧客が支払いを完了せずに Checkout セッションでお客様のロゴをクリックすると、Checkout は、Web サイトの cancel_ に顧客をリダイレクトします。これは通常、顧客が Checkout にリダイレクトされる前に表示していた Web サイトのページです。
デフォルトでは、Checkout セッションは作成後 24 時間で期限が切れます。
ダッシュボードで、顧客が使用できる支払い方法を有効にします。Checkout は、複数の支払い方法に対応しています。
注意
次に挙げる理由により、支払い開始の検出時には、success_ へのリダイレクトのみに依存しないでください。
- 悪意を持つユーザが、支払いをせずに
success_に直接アクセスし、商品やサービスにアクセスできるようになる可能性があります。url - 顧客が支払いの成功後に
success_に到達するとは限りません。リダイレクトが発生する前に、顧客がブラウザタブを閉じることがあります。url
支払いが成功したことを確認する
顧客は支払いを完了すると、success_ パラメータで指定された URL にリダイレクトされます。通常、これはお客様の Web サイト上のページであり、支払いが成功したことを顧客に知らせます。
ただし、Bacs Direct Debit は通知遅延型の決済手段であるため、売上はすぐには利用可能になりません。このため、売上が利用可能になるまで注文のフルフィルメントを保留します。支払いが成功すると、基となる PaymentIntent のステータスが processing から succeeded に変わります。
次のように、複数の方法で支払いが成功したことを確認できます。
組み込みをテストする
この実装の準備ができていることを確認するために、サンドボックスで使用できるテスト用銀行口座番号が複数用意されています。
| 銀行コード | 口座番号 | 説明 |
|---|---|---|
| 10-88-00 | 00012345 | 支払いが成功し、請求書が paid に変化します。 |
| 10-88-00 | 90012345 | 支払いが 3 分後に成功し、請求書が paid に変化します。 |
| 10-88-00 | 33333335 | 支払いが debit_ エラーコードによって失敗し、請求書が open に変化します。同意書は inactive になり、この PaymentMethod を再び使用することはできません。 |
| 10-88-00 | 93333335 | 支払いが debit_ エラーコードによって 3 分後に失敗し、請求書が open に変化します。同意書は inactive になり、この PaymentMethod を再び使用することはできません。 |
| 10-88-00 | 22222227 | 支払いが insufficient_ エラーコードによって失敗し、請求書が open に変化します。この同意書は active のままで、PaymentMethod は再使用が可能です。 |
| 10-88-00 | 92222227 | 支払いが insufficient_ エラーコードによって 3 分後に失敗し、請求書が open に変化します。この同意書は active のままで、PaymentMethod は再使用が可能です。 |
| 10-88-00 | 55555559 | 支払いが 3 分後に成功し、Invoice が paid に変わりますが、不審請求の申請が直ちに作成されます。 |
| 10-88-00 | 00033333 | 支払い方法の作成は成功しますが、同意書が顧客の銀行によって拒否され、即座に inactive に変化します。 |
| 10-88-00 | 00044444 | Bacs ダイレクトデビットの設定を求めるリクエストが、口座番号が無効なため即座に失敗し、顧客は送信前に情報を更新するように求められます。支払いの詳細は回収されません。 |
テストの実行には前述の任意の口座番号を使用できます。ただし、Bacs ダイレクトデビットによる支払いは処理に数日かかるため、3 分の遅延で動作するテスト用口座番号を使用して、本番環境の支払いの動作のシミュレーションをしやすくします。
注
デフォルトでは、Stripe は決済情報が初めて収集されたときと、顧客の口座から引き落としが行われるたびに、顧客にメールを送信します。これらの通知は、サンドボックスでは送信されません。
オプション1 回限りの設定手数料を追加するサーバ側
subscription モードには継続支払いの料金を渡すだけでなく、1 回限りの料金も追加できます。これらは、サブスクリプションによって作成される初回の請求書にのみ記載されます。これは、サブスクリプションに付随する設定手数料やその他の 1 回限りの手数料の追加に便利です。
オプション価格と商品をインラインで作成するサーバ側
既存の料金 ID に渡すだけではなく、Checkout セッションの作成でアイテムの料金を定義することもできます。まず、Product (商品) を定義します。次に、商品 ID を使用し、それを unit_、currency、recurring の詳細とともに price_data に渡して、Checkout セッションを作成します。
また、商品もインラインで作成する必要がある場合は、product_data を使用して作成できます。
オプション既存の顧客サーバ側
顧客を表す Customer オブジェクトを以前に作成している場合、Checkout セッションを作成する際に customer 引数を使用してその顧客 ID を渡します。こうすることで、そのセッション中に作成されたすべてのオブジェクトが正しい Customer オブジェクトに関連付けられます。
顧客 ID を渡すと、Stripe は Customer オブジェクトに保管されたメールアドレスを使用して、Checkout ページのメールフィールドに事前入力します。顧客が Checkout ページでメールアドレスを変更すると、支払いの成功後に Customer オブジェクトの該当項目が更新されます。
オプション顧客データの事前入力サーバ側
すでに顧客のメールを収集していて、それを Checkout セッションで事前に入力するには、Checkout セッションの作成時に customer_email を渡します。
オプショントライアルの処理サーバ側
Checkout セッションで trial_end または trial_period_days を使用して、トライアル期間の日数を指定できます。この例では、trial_ を使用して 30 日間のトライアルを含むサブスクリプションの Checkout セッションを作成します。
Checkout では、トライアルを含むサブスクリプションに対して以下の情報が自動的に表示されます。
- トライアル期間
- トライアル期限満了後の支払いの頻度と金額
オプション税率サーバ側
Checkout セッションで税率 (消費税、VAT、GST、その他) を指定し、サブスクリプションに税金を適用できます。
- 顧客が決済フロープロセスを開始する前に、顧客に請求する正確な税率を把握している場合は、固定税率を使用します (イギリスの顧客にのみ販売し、常に 20% の VAT を課税する場合など)。
- Prices API では、請求する税率を決定する前に顧客の詳細情報 (請求先住所、配送先住所など) が必要な場合に、動的税率を使用できます。動的税率では、地域ごとに異なる複数の税率 (イギリスの顧客には 20% の VAT、アメリカ・カリフォルニア州の顧客には 7.25% の売上税など) を作成でき、Stripe は顧客の居住地を、これらの税率のいずれかとマッチングします。
Stripe のデータエクスポート機能を使用して、送金に必要となる定期的な申告書に入力することができます。詳細については、納税申告および送金を参照してください。
オプションクーポンの追加サーバ側
Checkout セッションでは、discounts (割引) を設定することで、サブスクリプションにクーポンを適用できます。このクーポンは、顧客の他のクーポンよりも優先されます。既存の顧客でサブスクリプションを作成している場合、その顧客に関連付けられたクーポンがサブスクリプションのインボイスに適用されます。
顧客に表示されるプロモーションコードを追加する
また、ユーザーが引き換え可能なプロモーションコードは、Checkout セッションで allow_promotion_codes パラメーターを使用して有効にできます。Checkout セッションで allow_ が有効になっている場合、Checkout には顧客が利用するためのプロモーションコードの入力欄が表示されます。クーポンおよびプロモーションコードは、顧客が Checkout で引き換えられるようにダッシュボードまたは API で作成します。
