レートカードを使用した従量課金の設定非公開プレビュー
レートカードを使用して、商品やサービスの使用量に基づいて顧客に請求します。
1 つのレートカードを使用して、従量課金制サービスのさまざまな料金のサブスクリプションに顧客を登録できます。レートカードに新しいレートを追加すると、その新しいレートをすぐに顧客に適用できます。レートカードはバージョン化されているため、既存の顧客には古いレートを維持しながら、新規顧客のレートを調整できます。
プライベートプレビュー
はじめに
レートカードは、レートカードサブスクリプションなどの /v2
API エンドポイントを使用します。/v2 名前空間と /v1 名前空間の詳細については、こちらのページをご覧ください。
サンドボックスを使用して、レートカードの実装をテストします。テスト環境は、レートカードなどの /v2
API では使用できません。
レートカードを作成する
Stripe ダッシュボードまたは API を使用して、複数のレートを含むレートカードを作成し、各レートで請求品目、メーター、料金モデルを指定します。
レートカードごとに次の設定を行うことができます。
- サービス期間: 1 カ月、1 年、1 週間、またはカスタム。
- 通貨
- 価格に税金を含める: 価格に税金を含めるか (内税)、請求書の小計に税金を含めるか (外税) するかを指定します。詳細は Billing の内税と外税をご覧ください。
レートカードの作成後は、サービス期間、通貨、税額計算のパラメーターを変更することはできません。
サービス期間、通貨、税金のパラメーターを設定した後、レートカード内に複数のレートを定義できます。各料金で、請求品目 (販売するもの)、その品目の使用量を追跡するメーター、および使用量に適用される料金モデルを指定します。
- 価格タイプ:固定料金、数量ベース、段階制料金。
- 販売方法:個別のユニット、またはひとまとまりのユニット (パッケージ) による請求。パッケージを適用する場合は、パッケージごとのユニット数と、パッケージの端数の処理方法 (切り上げまたは切り捨て) を指定します。
- 高度な設定:必要に応じて、商品税コードを指定できます。単位ラベル、検索キー、メタデータを、料金と請求品目に追加することもできます。
レートカードにはいつでも新しいレートを追加できます。既存のレートを変更または削除すると、新しいバージョンのレートカードが作成されます。
顧客をレートカードに登録する
サブスクリプションを作成する前に、Customer (顧客) オブジェクトを作成し、請求先情報を指定する必要があります。これは、ダッシュボード、API、または Stripe Checkout を使用して実行できます。
顧客の使用状況を記録する
顧客をレートカードに登録した後、メーターにメーターイベントを送信することで、サービスの使用量を記録できます。
請求書プレビューを作成する
請求書のプレビューを作成して、メーターの料金や使用量などの詳細を含む、顧客の請求書のプレビューを確認します。
サービスイベントを監視する
レートカードのサブスクリプションは、サービスステータスが変更されるたびにイベント通知を発行します。詳しくは、サービス期間の仕組みをご覧ください。
これらのイベントをリッスンし、それらを使用してビジネスロジックを構築します。
v2. | 顧客がサブスクリプションを初めて有効にしたときに送信されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | 顧客がサブスクリプションを一時停止したときに送信されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | 顧客がサブスクリプションをキャンセルしたときに送信されます。 |
これらの v2 イベント を処理するには、イベントの送信先を設定し、Webhook エンドポイントを指定します。このとき、次のいずれかを実行できます。
- Workbench から Event Destination を作成します。
- Stripe API を経由して Event Destination を作成します。
送信先を作成したら、次のイベントを処理するように Webhook エンドポイントを設定できます。
require 'stripe' post '/v2_webhook_endpoint' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e status 400 return rescue Stripe::SignatureVerificationError => e status 400 return end client = Stripe::StripeClient(
) case event.type when 'v2.billing.rate_card_subscription.servicing_activated' # The customer clicked Pay on Stripe Checkout, which activates the service. subscription_id = event.related_object.id subscription = client.v2.billing.rate_card_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_active(user, subscription) when 'v2.billing.rate_card_subscription.servicing_paused' # The customer paused the subscription. subscription_id = event.related_object.id subscription = client.v2.billing.rate_card_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_paused(user, subscription) when 'v2.billing.rate_card_subscription.servicing_canceled' # The customer canceled the subscription. subscription_id = event.related_object.id subscription = client.v2.billing.rate_card_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_canceled(user, subscription) end status 200 end"sk_test_BQokikJOvBiI2HlWgH4olfQ2"