オーストラリアでの BECS ダイレクトデビットによるサブスクリプションを設定する
注
新しいユーザーの場合には、このガイドで説明されているように、Stripe Elements ではなく、Payment Element を使用してください。Payment Element は、購入完了率の最適化が組み込まれたローコードの導入パスを提供します。手順については、サブスクリプションを構築するをご覧ください。
商品と価格を作成するダッシュボード
Products (商品) は、販売しているアイテムまたはサービスを表します。Prices (価格) は、製品の価格と請求頻度を定義します。これには、商品の価格、受け付ける通貨、および 1 回限りの支払いか継続支払いかが含まれます。商品と価格が数個のみの場合は、ダッシュボードでそれらを作成および管理します。
このガイドでは、例としてストックフォトサービスを使用し、15 AUD の月次サブスクリプションを顧客に請求します。これをモデル化するには、次のようにします。
- 商品を追加ページに移動します。
- 商品の名前を入力します。
- 価格に 15 を入力します。
- 通貨として AUD を選択します。
- 商品を保存をクリックします。
商品と価格を作成したら、価格 ID を記録しておき、後続のステップで使用できるようにします。ID は料金体系ページで price_G0FvDp6vZvdwRZ
のように表示されます。
SetupIntent を作成するサーバ側
SetupIntent (支払い方法設定インテント) は、今後の支払いのために顧客の支払い方法をセットアップするお客様の意図を表すオブジェクトです。SetupIntent
は、この設定プロセスのステップを追跡します。BECS ダイレクトデビットの場合、このステップには顧客からの同意書の収集と、ライフサイクル全体にわたる同意書の有効性の追跡が含まれます。
次のように、payment_method_types を au_becs_debit
に設定して、サーバー上で SetupIntent (支払い方法設定インテント) を作成します。
返される SetupIntent
オブジェクトには、client_secret
プロパティが含まれています。この 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_settings
オブジェクトで確認できます。
{ "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_payment_method に変わり、account_closed エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 111111116 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_payment_method に変わり、no_account エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 222222227 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_payment_method に変わり、refer_to_customer エラーコードが返されます。同意書のステータスは引き続き active です。 |
000-000 | 922222227 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_payment_method に変わり、refer_to_customer エラーコードが返されます (3 分の遅延あり)。同意書のステータスは引き続き active です。 |
000-000 | 333333335 | 生成された PaymentMethod で作成された PaymentIntent は、processing から requires_payment_method に変わり、debit_not_authorized エラーコードが返されます。同意書のステータスはその時点で inactive になります。 |
000-000 | 666666660 | 生成された PaymentMethod で作成された PaymentIntent は、processing から succeeded に変わりますが、不審請求の申請が直ちに作成されます。 |