サブスクリプションの実装を構築する
サブスクリプションを作成して、継続支払いを受け付けるように管理します。
ロゴ、画像、カラーをカスタマイズします。
構築済みのオンラインで提供されるフォームを使用して支払いを回収し、サブスクリプションを管理します。
GitHub の組み込みのサンプルを複製します。
より実践的な内容については、Billing の導入クイックスタートガイドをご覧ください。
デモを参照して、オンラインで提供されているサンプルをご確認ください。
構築する内容
このガイドでは、Stripe Checkout を利用して月額固定料金のサブスクリプションを販売する方法について説明します。
このガイドでは以下の方法について説明します。
- 商品カタログを構築して、ビジネスをモデル化する
- Checkout セッションをサイトに追加し、ボタン、成功ページ、キャンセルページなどを組み込む
- サブスクリプションのイベントをモニタリングし、サービスへのアクセスを提供する
- カスタマーポータルの設定
- 顧客ポータルセッションをサイトに追加し、ボタンやリダイレクトなどを組み込む
- ポータルを使用して顧客がサブスクリプションを自身で管理できるようにする
組み込み完了後に、以下の目的で組み込みを拡張できます。
- 税額を表示
- 割引の適用
- 無料トライアル期間の適用
- 支払い方法の追加
- オンライン請求書ページの導入
- Checkout をセットアップモードで利用
- 従量課金の設定、段階性料金体系、使用量ベースの料金体系
- 比例配分の管理
- 顧客が複数の商品のサブスクリプションに登録できるようにする
- 商品の機能へのアクセスを管理するためのエンタイトルメントを組み込む
Stripe を設定する
任意の Stripe クライアントをインストールします。
Stripe CLI をインストールします (オプション)。CLI は Webhook のテストを提供し、これを実行することで商品と料金を作成できます。
その他のインストールオプションについては、Stripe CLI を使ってみるをご覧ください。
料金体系モデルを作成するダッシュボードまたは Stripe CLI
ダッシュボードまたは Stripe CLI で商品とその価格を作成します。
この例では、「基本」と「プレミアム」という 2 つのサービスレベルオプションがある固定価格のサービスを使用しています。サービスレベルオプションごとに、1 つの商品と 1 つの継続価格を作成する必要があります (初期費用のような 1 回限りの支払いを追加する場合は、1 回限りの価格で 3 つ目の商品を作成します。わかりやすくするために、この例には 1 回限りの支払いを含めていません)。
この例では、各商品が 1 カ月間隔で請求されます。基本商品の価格は 5 USD で、プレミアム商品の価格は 15 USD です。
複数の請求期間を提供している場合、Checkout を利用して、より長い請求期間で顧客へのアップセルを行い、多額の売上を前受けで回収できます。
その他の料金体系モデルについては、Billing の例をご覧ください。
Checkout セッションを作成するクライアントおよびサーバー
サーバー側のエンドポイントを呼び出す決済ボタンを Web サイトに追加して Checkout セッションを作成します。
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <!-- Note: If using PHP set the action to /create-checkout-session.php --> <input type="hidden" name="priceId" value="price_G0FvDp6vZvdwRZ" /> <button type="submit">Checkout</button> </form> </body> </html>
アプリケーションのバックエンドで、フロントエンドがコールする creates the session (セッションの作成) エンドポイントを定義します。以下の値が必要です。
- 顧客が登録するサブスクリプションの価格 ID。フロントエンドがこの値を渡します
success_
。お客様の Web サイト上にあり、支払い完了後に顧客が戻されるページです。url
必要に応じて cancel_
を指定できます。これは、決済フローで顧客が決済をキャンセルした場合の戻り先であるお客様のウェブサイト上のページです。このコールに、サブスクリプションに対する請求サイクルの起点を設定することもできます。
ステップ 2 で 1 回限りの料金を作成した場合は、その料金 ID も渡します。Checkout セッションの作成後は、レスポンスで返された URL に顧客をリダイレクトします。
注
Price の ID ではなく lookup_keys を使用して料金を取得できます。例については、サンプルアプリケーションをご覧ください。
この例では Session ID を追加して success_
をカスタマイズしています。この方法の詳細は、成功ページのカスタマイズに関するドキュメントをご覧ください。
サブスクリプションを提供して監視するサーバー
サブスクリプションの登録が成功し、顧客が success_
に従ってお客様のウェブサイトに戻ると、checkout.
Webhook が開始されます。checkout.
イベントを受信したら、サブスクリプションを提供できます。invoice.
イベントを受信するたびに、サブスクリプションの提供が毎月継続的に行われます (月次で請求する場合)。invoice.
イベントを受信した場合は、顧客に通知して顧客をカスタマーポータルに案内し、支払い方法を更新してもらいます。
ご利用のシステムロジックの次のステップを決定するには、イベントタイプを確認し、invoice.
などの各 Event オブジェクト のペイロードを解析します。データベースに subscription.
と customer.
の Event オブジェクトを保存して確認に使用します。
テスト目的の場合は、ダッシュボードでイベントをモニタリングできます。本番環境では、Webhook エンドポイントを設定して、適切なイベントタイプに登録します。STRIPE_
キーが不明な場合は、ダッシュボードで Webhook をクリックして表示します。
モニタリングが必要な最小限のイベントタイプ:
イベント名 | 説明 |
---|---|
checkout. | Checkout で顧客が「支払う」または「登録」ボタンをクリックすると送信され、新しい購入が通知されます。 |
invoice. | 請求期間ごとに、支払いが成功すると送信されます。 |
invoice. | 請求期間ごとに、顧客の支払い方法に問題がある場合に送信されます。 |
その他の監視対象のイベントについては、サブスクリプションの Webhook をご覧ください。
カスタマーポータルを設定するダッシュボード
カスタマーポータルを介して、顧客は既存のサブスクリプションと請求書を直接管理できます。
ポータルの設定にはダッシュボードを使用します。少なくとも、顧客が支払い方法を更新できるように設定してください。設定可能なその他の項目については、カスタマーポータルの導入をご覧ください。
ポータルセッションを作成するサーバー
フロントエンドがコールする creates the customer portal session (カスタマーポータルセッションの作成) エンドポイントを定義します。この CUSTOMER_
は、Checkout セッションで作成されたものであり、checkout.
Webhook の処理中に保存した顧客 ID です。ダッシュボードで、ポータルのデフォルトのリダイレクトリンクを設定することもできます。
サイトのページを示す return_
値をオプションで渡して、サブスクリプションの管理を終えた顧客をこのページにリダイレクトします。
顧客をカスタマーポータルに移動させるクライアント
フロントエンドで、カスタマーポータルへのリンクを提供するボタンを success_
のページに追加します。
<html> <head> <title>Manage Billing</title> </head> <body> <form action="/customer-portal" method="POST"> <!-- Note: If using PHP set the action to /customer-portal.php --> <button type="submit">Manage Billing</button> </form> </body> </html>
顧客がカスタマーポータルを終了すると、return_
のウェブサイトに戻ります。Webhook を監視することで、引き続き顧客のサブスクリプションの状態を追跡できます。
サブスクリプションのキャンセルなどのアクションを許可する目的でカスタマーポータルを設定する場合は、監視するその他のイベントについて、カスタマーポータルの導入をご覧ください。
組み込みをテストする
支払い方法をテストする
次の表を使用して、さまざまな支払い方法とシナリオをテストします。
支払い方法 | シナリオ | テスト方法 |
---|---|---|
BECS ダイレクトデビット | 顧客が BECS ダイレクトデビットによる支払いに成功します。 | 口座番号 900123456 と BSB 000-000 を使用して、フォームに入力します。確定された PaymentIntent のステータスは、まず processing に移行し、3 分後に succeeded ステータスに移行します。 |
BECS ダイレクトデビット | 顧客の支払いが account_ エラーコードで失敗します。 | 口座番号 111111113 と BSB 000-000 を使用して、フォームに入力します。 |
クレジットカード | カード支払いは成功し、認証は要求されません。 | クレジットカード番号 4242 4242 4242 4242 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 |
クレジットカード | カード決済で認証が要求されます。 | クレジットカード番号 4000 0025 0000 3155 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 |
クレジットカード | カードが insufficient_ などの拒否コードで支払い拒否されます。 | クレジットカード番号 4000 0000 0000 9995 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 |
SEPA ダイレクトデビット | 顧客が SEPA ダイレクトデビットによる支払いに成功します。 | 口座番号 AT321904300235473204 を使用して、フォームに入力します。確定された PaymentIntent のステータスはまず、processing に移行し、3 分後に succeeded ステータスに移行します。 |
SEPA ダイレクトデビット | 顧客の Payment Intent のステータスが、processing から requires_ に移行します。 | 口座番号 AT861904300235473202 を使用して、フォームに入力します。 |
イベントを監視する
Webhook を設定して、アップグレードやキャンセルなどのサブスクリプションの変更イベントをリッスンします。サブスクリプションの Webhook の詳細をご覧ください。イベントの表示は、ダッシュボードまたは Stripe CLI を使用して行うことができます。
Billing の導入テストの詳細については、ガイドをご覧ください。