サブスクリプションの実装を構築する
サブスクリプションを作成して、継続支払いを受け付けるように管理します。

ロゴ、画像、カラーをカスタマイズします。
構築済みのホストされたページを使用して決済を回収し、 サブスクリプション を管理します。
GitHub からサンプルの導入を複製します。
より実践的な内容については、請求書導入クイックスタート を参照してください。
GitHub のサンプル または デモ を参照してください。
作成する内容
このガイドでは、Stripe 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 Session を作成クライアントおよびサーバー
サーバー側のエンドポイントを呼び出して Checkout Session を作成するチェックアウトボタンを Web サイトに追加します。
<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>
アプリケーションのバックエンドで、フロントエンドが呼び出す セッションを作成 するエンドポイントを定義します。以下の値が必要です。
- 顧客が登録するサブスクリプションの価格 ID。フロントエンドがこの値を渡します
- success_。お客様の Web サイト上にあり、決済完了後に顧客が戻されるページです- url 
オプションとして以下を実行できます。
- cancel_を使用して、決済プロセスをキャンセルした場合に顧客が戻されるページを Web サイト上に提供します。- url 
- このコールでサブスクリプションへの 請求サイクルアンカー を設定します。
- カスタムテキスト を使用して、サブスクリプションとキャンセルの規約、および顧客がサブスクリプションを更新またはキャンセルできる場所へのリンクを含めます。サブスクリプション登録者には メールリマインダーと通知 を設定することをお勧めします。
ステップ 2 で 1 回限りの価格を作成した場合は、その価格 ID も渡します。Checkout Session を作成したら、レスポンスで返された URL に顧客をリダイレクトします。
請求モード のタイプを flexible に設定することで、Checkout Session の作成時により正確で予測可能なサブスクリプション動作を有効にできます。Stripe API バージョン 2025-06-30.basil 以降を使用する必要があります。
注
lookup_keys を使用して、価格 ID ではなく価格を取得できます。例については、サンプルアプリケーション を参照してください。
この例では、セッション ID を追加して success_ をカスタマイズします。成功ページのカスタマイズ の詳細を参照してください。
サブスクリプションを提供して監視するサーバー
サブスクリプション登録完了後、顧客は成功ページ success_ に戻り、同時に、checkout. Webhook が送信されます。checkout. イベントを受信したら、エンタイトルメント 機能を使ってサブスクリプションサービスを有効化してください。invoice.イベントの受信に合わせて継続的に(月次請求の場合は毎月)サービスを提供し続けます。invoice. イベントを受信した場合は、顧客に決済失敗を通知し、カスタマーポータルで決済手段を更新してもらうよう案内してください。
システムロジックの次のステップを決定するには、イベントタイプを確認し、invoice. などの各 Event オブジェクト のペイロードを解析します。データベースに subscription. と customer. の Event オブジェクトを保存して確認に使用します。
テスト目的では、ワークベンチ の イベントタブ でイベントを監視できます。本番環境では、Webhook エンドポイントを設定し、適切なイベントタイプに登録します。STRIPE_ キーが不明な場合は、ワークベンチの Webhook タブ の送信先の詳細ビューに移動して表示します。
モニタリングが必要な最小限のイベントタイプ:
| イベント名 | 説明 | 
|---|---|
| checkout. | 顧客が Checkout Session を正常に完了したときに送信され、新しい購入についてお知らせします。 | 
| invoice. | 決済が成功すると請求期間ごとに送信されます。 | 
| invoice. | 請求期間ごとに、顧客の決済手段に問題がある場合に送信されます。 | 
監視するイベントの詳細については、サブスクリプション Webhook を参照してください。
ポータルセッションを作成するサーバー
フロントエンドが呼び出すカスタマーポータルセッションを作成 するエンドポイントを定義します。CUSTOMER_ は、Checkout Session で作成されたものであり、checkout. イベントの処理中に保存した顧客 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_ に指定された Web サイトに戻ります。引き続き イベントを監視 することで、顧客のサブスクリプションのステータスを追跡することができます。
サブスクリプションのキャンセルなどのアクションを許可するようにカスタマーポータルを設定する場合は、追加イベントを監視 します。
導入をテストする
支払い方法をテストする
次の表を使用して、さまざまな支払い方法とシナリオをテストします。
| 決済手段 | シナリオ | テスト方法 | 
|---|---|---|
| BECS ダイレクトデビット | 顧客が BECS ダイレクトデビットによる支払いに成功します。 | アカウント番号 900123456と BSB000000を使用して、フォームに入力します。確定された PaymentIntent のステータスは、まずprocessingに移行し、3 分後にsucceededステータスに移行します。 | 
| BECS ダイレクトデビット | 顧客の支払いが account_エラーコードで失敗します。 | アカウント番号 111111113と BSB000000を使用して、フォームに入力します。 | 
| クレジットカード | カード支払いは成功し、認証は必要とされません。 | クレジットカード番号 4242 4242 4242 4242と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 | 
| クレジットカード | カード決済で認証が要求されます。 | クレジットカード番号 4000 0025 0000 3155と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 | 
| クレジットカード | カードが insufficient_などの拒否コードで支払い拒否されます。 | クレジットカード番号 4000 0000 0000 9995と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 | 
| SEPA ダイレクトデビット | 顧客が SEPA ダイレクトデビットによる支払いに成功します。 | 口座番号 AT321904300235473204を使用して、フォームに入力します。確定された PaymentIntent のステータスはまず、processing に移行し、3 分後に succeeded ステータスに移行します。 | 
| SEPA ダイレクトデビット | 顧客の PaymentIntent ステータスが processingからrequires_に移行します。 | 口座番号 AT861904300235473202を使用して、フォームに入力します。 | 
イベントを監視する
Webhook を設定して、アップグレードやキャンセルなどのサブスクリプション変更イベントをリッスンします。サブスクリプション Webhook イベント は、ダッシュボード または Stripe CLI で表示できます。
Billing 導入テスト の詳細を参照してください。