オーストラリアでの BECS ダイレクトデビットによるサブスクリプションを設定する
BECS ダイレクトデビットを使用したサブスクリプションの作成と請求の方法をご紹介します。
注
新しいユーザーの場合には、このガイドで説明されているように、Stripe Elements ではなく、Payment Element を使用してください。Payment Element は、コンバージョン最適化が組み込まれたローコードの導入パスを提供します。手順については、サブスクリプションの構築をご覧ください。
このガイドを使用して、決済手段として BECS ダイレクトデビットを使用するサブスクリプションを設定します。
商品と価格を作成するダッシュボード
Products (商品) は、販売しているアイテムまたはサービスを表します。Prices (価格) は、商品の価格と請求頻度を定義します。これには、商品の価格、受け付ける通貨、および 1 回限りの支払いか継続支払いかが含まれます。商品と価格が数個のみの場合は、ダッシュボードでそれらを作成および管理します。
このガイドでは、例としてストックフォトサービスを使用し、15 AUD の月次サブスクリプションを顧客に請求します。これをモデル化するには、次のようにします。
- 商品を追加ページに移動します。
- 商品の名前を入力します。
- 価格に 15 を入力します。
- 通貨として AUD を選択します。
- 商品を保存をクリックします。
商品と価格を作成したら、価格 ID を記録しておき、後続のステップで使用できるようにします。ID は料金体系ページで price_
のように表示されます。
SetupIntent を作成するサーバ側
SetupIntent (支払い方法設定インテント) は、今後の支払いのために顧客の決済手段をセットアップするお客様の意図を表すオブジェクトです。SetupIntent
は、この設定プロセスのステップを追跡します。BECS ダイレクトデビットの場合、このステップには顧客からの同意書の収集と、ライフサイクル全体にわたる同意書の有効性の追跡が含まれます。
次のように、payment_method_types を au_
に設定して、サーバー上で SetupIntent (支払い方法設定インテント) を作成します。
返される SetupIntent
オブジェクトには、client_
プロパティが含まれています。この client secret をクライアント側のアプリケーションに渡して、設定プロセスを続行します。
支払い方法の詳細と同意書承認を収集するクライアント側
Stripe Elements を使用してクライアントで支払い情報を収集する準備ができました。Elements は、支払いの詳細を収集するための構築済み UI コンポーネントのセットです。
Stripe Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。組み込みを機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。
HTTPS を使用せずに実装をテストできます。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効化します。
Stripe Elements を設定する
Stripe に支払い方法の詳細を送信するクライアント側
SetupIntent
オブジェクト全体をクライアントに送信するのではなく、ステップ 2 で取得した client secret を使用します。これは、Stripe API リクエストを認証する API キーとは異なります。
client secret は設定を完了できるため、慎重に取り扱う必要があります。記録したり、URL に埋め込んだり、当該の顧客以外に漏洩することがないようにしてください。
PaymentMethod 付きで顧客を作成サーバ側
サブスクリプションを作成するには、商品を購入する顧客を表す Customer (顧客) オブジェクトが必要です。作成した料金は月次ベースで請求されるため、以降の支払いを完了させるには、格納された支払い方法を顧客に追加する必要があります。これを実行するには、先ほど収集した支払い方法を Customer オブジェクトの最上位レベルに設定し、請求書のデフォルトの支払い方法として設定します。
これにより Customer
オブジェクトが返されます。デフォルトの支払い方法は、invoice_
オブジェクトで確認できます。
{ "id": "cus_Gk0uVzT2M4xOKD", "object": "customer", "address": null, "balance": 0, "created": 1581797088, "currency": null, "default_source": null, "delinquent": false, "description": null, "discount": null, "email": "jenny.rosen@example.com", "invoice_prefix": "11D0B3D7", "invoice_settings": { "custom_fields": null, "default_payment_method": "pm_1FU2bgBF6ERF9jhEQvwnA7sX", "footer": null },
顧客を作成したら、後で使用できるようにお客様自身のデータベースに id
値を保存しておきます。次のステップでもこの ID が必要になります。
サブスクリプションを作成するサーバ側
料金と顧客を指定して、Subscription (サブスクリプション) を作成します。
デフォルトの支払い方法が設定されているため、サブスクリプションを作成すると、自動的に顧客に対して請求が行われます。支払いが完了すると、Stripe ダッシュボード内のステータスが有効に変わります。以前作成した料金によって、以降の請求が決定されます。
サブスクリプションステータスを管理するクライアント側
初回の支払いが成功すると、サブスクリプションの状態は active
になり、それ以上のアクションは不要です。支払いが失敗した場合は、ステータスが自動請求設定で設定されたサブスクリプションステータスに変わります。顧客に失敗を通知し、別の支払い方法で請求する必要があります。
注
BECS ダイレクトデビット支払いは、他の支払い方法に再試行スケジュールが設定されている場合でも、自動的に再試行することはありません。
組み込みをテストする
テスト用の BSB 番号 000-000
と以下のいずれかのテストアカウント番号を confirmAuBecsDebitSetup リクエストで使用することで、フォームをテストできます。
BSB 番号 | 口座番号 | 説明 |
---|---|---|
000-000 | 000123456 | 生成された PaymentMethod で作成された PaymentIntent は、processing から succeeded に変わります。同意書のステータスは引き続き active です。 |
000-000 | 900123456 | 生成された PaymentMethod で作成された PaymentIntent は、processing から succeeded に変わります (3 分の遅延あり)。同意書のステータスは引き続き active です。 |
000-000 | 111111113 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_ に変わり、account_ エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 111111116 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_ に変わり、no_ エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 222222227 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_ に変わり、refer_ エラーコードが返されます。同意書のステータスは引き続き active です。 |
000-000 | 922222227 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_ に変わり、refer_ エラーコードが返されます (3 分の遅延あり)。同意書のステータスは引き続き active です。 |
000-000 | 333333335 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_ に変わり、debit_ エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 666666660 | 生成された PaymentMethod で作成された PaymentIntent は、processing から succeeded に変わりますが、不審請求の申請が直ちに作成されます。 |
000-000 | 343434343 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_ error due to the payment amount causing the account to exceed its weekly payment volume limit. |
000-000 | 121212121 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_ error due to the payment amount exceeding the account’s transaction volume limit. |