レートカードを使用した従量課金の設定非公開プレビュー
レートカードを使用して、商品やサービスの使用量に基づいて顧客に請求します。
1 つのレートカードを使用して、従量課金制サービスのさまざまな料金のサブスクリプションに顧客を登録できます。レートカードに新しいレートを追加すると、その新しいレートをすぐに顧客に適用できます。レートカードはバージョン管理されているため、既存顧客のレートを維持しながら、新規顧客のレートを調整できます。
プライベートプレビュー
はじめに
レートカードの /v2
API エンドポイント (Rate cards subscriptions など)。/v2 名前空間と /v1 名前空間の詳細については、こちらのページをご覧ください。
/v2
API の サンドボックスのみを使用できます。
レートカードを作成する
Stripe ダッシュボードまたは API を使用して、複数の料金と料金オプションを記載したレートカードを作成します。
レートカードごとに次の設定を行うことができます。
- サービス期間:1 カ月、1 年、1 週間、またはカスタム。
- 通貨
- 価格に税金を含める
レートカードの各項目に対して、次の設定を行うことができます。
- メーター:使用量の記録に使用するメーター。
- 価格タイプ:固定料金、数量ベース、段階制料金。
- 販売方法:個別のユニット、またはひとまとまりのユニット (パッケージ) による請求。パッケージを適用する場合は、パッケージごとのユニット数と、パッケージの端数の処理方法 (切り上げまたは切り捨て) を指定します。
- 高度な設定:必要に応じて、商品税コードを指定できます。単位ラベル、検索キー、メタデータ、料金設定のメタデータを追加することも可能です。
レートカードの各料金は、メーターに関連付ける必要があります。
顧客をレートカードに登録する
サブスクリプションを作成する前に、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"