如何在Stripe创建纯按用量计费的0美元固定费率订阅?
如何在Stripe实现按实际用量计费的订阅(无使用则当月账单为0)
完全可以实现这种按实际用量计费的订阅模式,你的问题出在创建订阅时的参数设置上,以下是具体方案:
创建正确的计量型产品
先在Stripe后台或通过API创建一个计量型(Metered)产品,对应的价格设置为「按用量计费」,并指定单个产品的单价(比如你提到的priceOfProduct)。这个产品不需要预设固定使用量,所有用量都通过后续API上报。创建订阅时不要指定固定数量
你之前创建Subscription时设置quantity=0报错,是因为计量型订阅的用量不是通过quantity字段控制的。正确做法是创建订阅时,仅关联计量型价格,不传入quantity参数。这样订阅创建后初始用量为0,当月无使用时账单金额自动为0。上报用户实际用量
当用户使用了产品(比如3个),调用Stripe的SubscriptionItem.create_usage_recordAPI上报用量:- 传入订阅项ID(从创建好的Subscription的
items列表中获取) - 指定用量数量(比如3)
- 可选设置用量发生的时间戳,默认使用当前时间
支持分批上报,比如用户分多次使用,每次上报对应数量,Stripe会自动累加当月总用量。
- 传入订阅项ID(从创建好的Subscription的
账单自动结算
订阅周期结束时,Stripe会根据你上报的总用量计算费用。如果当月没有上报任何用量,账单金额为0,不会发起扣款。关于结账会话的配置
如果你用结账会话(Checkout Session)创建订阅,在构建会话的line_items时,同样只指定计量型价格ID,不要设置quantity字段。用户完成结账后,订阅会自动创建,后续你只需按实际使用情况上报用量即可。
示例代码(Python)
创建计量型订阅:
import stripe stripe.api_key = "你的API密钥" subscription = stripe.Subscription.create( customer="cus_你的客户ID", items=[{"price": "price_你的计量型价格ID"}], payment_behavior="default_incomplete", expand=["latest_invoice.payment_intent"] )
上报用量:
usage_record = stripe.SubscriptionItem.create_usage_record( "si_你的订阅项ID", quantity=3, action="increment" # 累加用量,若要设置累计量则用"set" )
内容的提问来源于stack exchange,提问作者Ceintu
相关产品推荐
相关产品推荐

