コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Billing
概要Billing API について
サブスクリプション
    サブスクリプションの仕組み
    クイックスタート
    ユースケース
    実装を構築
      サブスクリプションシステムを設計
      サブスクリプションの実装
      Salesforce との連携
      サブスクリプションイベントの定義
    サブスクリプション機能
    エンタイトルメント
    アナリティクス
Invoicing
従量課金
見積もり
顧客管理
Billing with other products
売上回収
オートメーション
収益認識
実装内容をテストする
税金
概要
Use Stripe tax
Manage compliance
レポート機能
概要
レポートの選択
Configure reports
Reports API
複数のアカウントのレポート
収益認識
データ
概要スキーマ
カスタムレポート
Data Pipeline
データ管理
ホーム売上SubscriptionsBuild your integration

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

サブスクリプションの実装を構築する

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

Checkout のサブスクリプションページ
ローコード

ロゴ、画像、カラーをカスタマイズします。

構築済みのオンラインで提供されるフォームを使用して支払いを回収し、サブスクリプションを管理します。

GitHub の組み込みのサンプルを複製します。

より実践的な内容については、Billing の導入クイックスタートガイドをご覧ください。

GitHub のサンプルまたはデモをご覧ください。

構築する内容

このガイドでは、Stripe Checkout を利用して月額固定料金のサブスクリプションを販売する方法について説明します。

このガイドでは以下の方法について説明します。

  • 商品カタログを構築して、ビジネスをモデル化する
  • Checkout セッションをサイトに追加し、ボタン、成功ページ、キャンセルページなどを組み込む
  • サブスクリプションのイベントをモニタリングし、サービスへのアクセスを提供する
  • カスタマーポータルの設定
  • 顧客ポータルセッションをサイトに追加し、ボタンやリダイレクトなどを組み込む
  • ポータルを使用して顧客がサブスクリプションを自身で管理できるようにする

導入をコーディングする準備ができていない場合は、基本的なサブスクリプションをダッシュボードから手動で設定するか、Payment Links を使用してコードの記述なしにサブスクリプションを設定することもできます。

詳細については、導入の設計をご覧になり、適切な導入において何を決定する必要があり、どのようなリソースが必要なのかを把握してください。

組み込み完了後に、以下の目的で組み込みを拡張できます。

  • 税額を表示
  • 割引の適用
  • 無料トライアル期間の適用
  • 決済手段を追加する
  • オンライン請求書ページの導入
  • Checkout をセットアップモードで利用
  • 従量課金の設定、段階性料金体系、使用量ベースの料金体系
  • 比例配分の管理
  • 顧客が複数の商品のサブスクリプションに登録できるようにする
  • 商品の機能へのアクセスを管理するためのエンタイトルメントを組み込む

Stripe を設定する

任意の Stripe クライアントをインストールします。

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Stripe CLI をインストールします (オプション)。CLI は Webhook のテストを提供し、これを実行することで商品と料金を作成できます。

Command Line
homebrew
# Install Homebrew to run this command: https://brew.sh/ brew install stripe/stripe-cli/stripe # Connect the CLI to your dashboard stripe login

その他のインストールオプションについては、Stripe CLI を使ってみるをご覧ください。

料金体系モデルを作成する
ダッシュボードまたは Stripe CLI

ダッシュボードまたは Stripe CLI で商品とその価格を作成します。

この例では、「基本」と「プレミアム」という 2 つのサービスレベルオプションがある固定価格のサービスを使用しています。サービスレベルオプションごとに、1 つの商品と 1 つの継続価格を作成する必要があります (初期費用のような 1 回限りの支払いを追加する場合は、1 回限りの価格で 3 つ目の商品を作成します。わかりやすくするために、この例には 1 回限りの支払いを含めていません)。

この例では、各商品が 1 カ月間隔で請求されます。基本商品の価格は 5 USD で、プレミアム商品の価格は 15 USD です。

商品を追加ページに移動し、2 つの商品を作成します。商品ごとに 1 つの価格を追加し、それぞれに毎月の継続請求期間を設定します。

  • プレミアム商品: 追加機能を備えたプレミアムサービス

    • 価格: 標準価格 | 15 USD
  • 基本商品: 最低限の機能を備えた基本サービス

    • 価格: 標準価格 | 5 USD

価格を作成したら、価格 ID を記録しておき、他のステップで使用できるようにします。価格 ID は、price_G0FvDp6vZvdwRZ のように表示されます。

準備が完了したら、ページ右上の本番環境にコピーボタンを使用して、サンドボックスから本番環境に商品を複製します。

複数の請求期間を提供している場合、Checkout を利用して、より長い請求期間で顧客へのアップセルを行い、多額の売上を前受けで回収できます。

その他の料金体系モデルについては、Billing の例をご覧ください。

Checkout セッションを作成する
クライアントおよびサーバー

サーバー側のエンドポイントを呼び出す決済ボタンを Web サイトに追加して Checkout セッションを作成します。

index.html
サンプル全体を表示
<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_url。お客様の Web サイト上にあり、支払い完了後に顧客が戻されるページです。

必要に応じて cancel_url を指定できます。これは、決済フローで顧客が決済をキャンセルした場合の戻り先であるお客様のウェブサイト上のページです。このコールに、サブスクリプションに対する請求サイクルの起点を設定することもできます。

ステップ 2 で 1 回限りの料金を作成した場合は、その料金 ID も渡します。Checkout セッションの作成後は、レスポンスで返された URL に顧客をリダイレクトします。

注

Price の ID ではなく lookup_keys を使用して料金を取得できます。例については、サンプルアプリケーションをご覧ください。

server.rb
Ruby
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# The price ID passed from the front end. # price_id = params['priceId'] price_id = '{{PRICE_ID}}' session = Stripe::Checkout::Session.create({ success_url: 'https://example.com/success.html?session_id={CHECKOUT_SESSION_ID}', cancel_url: 'https://example.com/canceled.html', mode: 'subscription', line_items: [{ # For metered billing, do not pass quantity quantity: 1, price: price_id, }], }) # Redirect to the URL returned on the session # redirect session.url, 303

この例では Session ID を追加して success_url をカスタマイズしています。この方法の詳細は、成功ページのカスタマイズに関するドキュメントをご覧ください。

ダッシュボードで、顧客が使用できる支払い方法を有効にします。Checkout は、複数の支払い方法に対応しています。

サブスクリプションを提供して監視する
サーバー

サブスクリプションの登録が成功し、顧客が success_url に従ってお客様のウェブサイトに戻ると、checkout.session.completed Webhook が開始されます。checkout.session.completed イベントを受信したら、サブスクリプションを提供できます。invoice.paid イベントを受信するたびに、サブスクリプションの提供が毎月継続的に行われます (月次で請求する場合)。invoice.payment_failed イベントを受信した場合は、顧客に通知して顧客をカスタマーポータルに案内し、支払い方法を更新してもらいます。

ご利用のシステムロジックの次のステップを決定するには、イベントタイプを確認し、invoice.paid などの各 Event オブジェクト のペイロードを解析します。データベースに subscription.id と customer.id の Event オブジェクトを保存して確認に使用します。

テスト目的の場合は、ダッシュボードでイベントをモニタリングできます。本番環境では、Webhook エンドポイントを設定して、適切なイベントタイプに登録します。STRIPE_WEBHOOK_SECRET キーが不明な場合は、ダッシュボードで Webhook をクリックして表示します。

server.rb
Ruby
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/webhook' do webhook_secret =
'{{STRIPE_WEBHOOK_SECRET}}'
payload
= request.body.read if !webhook_secret.empty? # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, webhook_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature puts '⚠️ Webhook signature verification failed.' status 400 return end else data = JSON.parse(payload, symbolize_names: true) event = Stripe::Event.construct_from(data) end # Get the type of webhook event sent event_type = event['type'] data = event['data'] data_object = data['object'] case event_type when 'checkout.session.completed' # Payment is successful and the subscription is created. # You should provision the subscription and save the customer ID to your database. when 'invoice.paid' # Continue to provision the subscription as payments continue to be made. # Store the status in your database and check when a user accesses your service. # This approach helps you avoid hitting rate limits. when 'invoice.payment_failed' # The payment failed or the customer does not have a valid payment method. # The subscription becomes past_due. Notify your customer and send them to the # customer portal to update their payment information. else puts "Unhandled event type: \#{event.type}" end status 200 end

モニタリングが必要な最小限のイベントタイプ:

イベント名説明
checkout.session.completed顧客が Checkout セッションを正常に完了すると送信され、新しい購入が通知されます。
invoice.paid請求期間ごとに、支払いが成功すると送信されます。
invoice.payment_failed請求期間ごとに、顧客の支払い方法に問題がある場合に送信されます。

その他の監視対象のイベントについては、サブスクリプションの Webhook をご覧ください。

カスタマーポータルを設定する
ダッシュボード

カスタマーポータルを介して、顧客は既存のサブスクリプションと請求書を直接管理できます。

ポータルの設定にはダッシュボードを使用します。少なくとも、顧客が支払い方法を更新できるように設定してください。設定可能なその他の項目については、カスタマーポータルの導入をご覧ください。

ポータルセッションを作成する
サーバー

フロントエンドがコールする creates the customer portal session (カスタマーポータルセッションの作成) エンドポイントを定義します。この CUSTOMER_ID は、Checkout セッションで作成されたものであり、checkout.session.completed Webhook の処理中に保存した顧客 ID です。ダッシュボードで、ポータルのデフォルトのリダイレクトリンクを設定することもできます。

サイトのページを示す return_url 値をオプションで渡して、サブスクリプションの管理を終えた顧客をこのページにリダイレクトします。

server.rb
Ruby
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# This is the URL that users are redirected to after they're done # managing their billing. return_url =
'{{DOMAIN_URL}}'
customer_id
=
'{{CUSTOMER_ID}}'
session
= Stripe::BillingPortal::Session.create({ customer: customer_id, return_url: return_url, }) # Redirect to the URL for the session # redirect session.url, 303

顧客をカスタマーポータルに移動させる
クライアント

フロントエンドで、カスタマーポータルへのリンクを提供するボタンを success_url のページに追加します。

success.html
サンプル全体を表示
<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_url のウェブサイトに戻ります。イベントの監視を続行することで、顧客のサブスクリプションのステータスをその後も追跡できます。

サブスクリプションのキャンセルなどのアクションを許可する目的でカスタマーポータルを設定する場合は、監視するその他のイベントについて、カスタマーポータルの導入をご覧ください。

組み込みをテストする

支払い方法をテストする

次の表を使用して、さまざまな支払い方法とシナリオをテストします。

決済手段シナリオテスト方法
BECS ダイレクトデビット顧客が BECS ダイレクトデビットによる支払いに成功します。口座番号 900123456 と BSB 000-000 を使用して、フォームに入力します。確定された PaymentIntent のステータスは、まず processing に移行し、3 分後に succeeded ステータスに移行します。
BECS ダイレクトデビット顧客の支払いが account_closed エラーコードで失敗します。口座番号 111111113 と BSB 000-000 を使用して、フォームに入力します。
クレジットカードカード支払いは成功し、認証は必要とされません。クレジットカード番号 4242 4242 4242 4242 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
クレジットカードカード決済で認証が要求されます。クレジットカード番号 4000 0025 0000 3155 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
クレジットカードカードが insufficient_funds などの拒否コードで支払い拒否されます。クレジットカード番号 4000 0000 0000 9995 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
SEPA ダイレクトデビット顧客が SEPA ダイレクトデビットによる支払いに成功します。口座番号 AT321904300235473204 を使用して、フォームに入力します。確定された PaymentIntent のステータスはまず、processing に移行し、3 分後に succeeded ステータスに移行します。
SEPA ダイレクトデビット顧客の PaymentIntent ステータスが processing から requires_payment_method に移行します。口座番号 AT861904300235473202 を使用して、フォームに入力します。

イベントを監視する

Webhook がアップグレードやキャンセルなどのサブスクリプション変更イベントをリッスンするよう設定します。詳しくは、サブスクリプション Webhook についての記事をご覧ください。イベントは、ダッシュボードまたは Stripe CLI で表示できます。

Billing の導入テストの詳細については、ガイドをご覧ください。

参照情報

  • 無料トライアル期間の適用
  • 割引の適用
  • 比例配分の管理
  • 商品の機能へのアクセスを管理するためのエンタイトルメントを組み込む
このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc