Stripe订阅计划阶段更新:立即按比例计费并获取支付意向
解决Stripe两阶段订阅更新并按比例计费的问题
正确的Stripe原生方案
直接使用订阅更新API,配合特定参数即可实现更新阶段商品数量、自动应用折扣、生成按比例差额账单并获取支付意向的需求,不需要手动创建账单或绕过计划器。
关键参数与步骤
调用SubscriptionService.UpdateAsync时,需设置以下核心参数:
items:指定要更新的阶段1订阅项ID,修改其quantity值proration_behavior: 'create_prorations':强制生成按比例计算的差额费用payment_behavior: 'default_incomplete':生成未支付的账单,同时创建支付意向供客户确认Expand: ['latest_invoice.payment_intent']:直接展开返回结果,获取关联的支付意向对象
C#代码示例
var subscriptionService = new SubscriptionService(); var updatedSubscription = await subscriptionService.UpdateAsync( "sub_你的订阅ID", new SubscriptionUpdateOptions { Items = new List<SubscriptionItemOptions> { new SubscriptionItemOptions { Id = "si_你的阶段1订阅项ID", // 必须指定原订阅项ID Quantity = 3 // 新的商品数量 } }, ProrationBehavior = "create_prorations", PaymentBehavior = "default_incomplete", Expand = new List<string> { "latest_invoice.payment_intent" } } ); // 获取生成的账单和支付意向 var proratedInvoice = updatedSubscription.LatestInvoice; var paymentIntent = proratedInvoice.PaymentIntent;
为什么之前的方案无效
always_invoice参数:该参数仅控制订阅周期结束时是否自动开票,无法触发订阅更新时的按比例计费,因此不会生成新账单。- 手动创建账单:
InvoiceService.CreateAsync生成的是独立账单,不会继承订阅的折扣规则和自动计算按比例差额,导致金额错误且账单格式异常。
注意事项
- 订阅绑定的折扣(如优惠券、促销代码)会自动应用到按比例差额上,Stripe会基于订阅当前的折扣规则计算最终费用。
- 若需客户确认付款,
default_incomplete是最优选择;若要自动扣款(需客户有已保存的支付方式),可将payment_behavior设为pending_if_incomplete。
内容的提问来源于stack exchange,提问作者pepe
相关产品推荐
相关产品推荐

