Stripe更新订阅项时如何为自动生成的发票应用优惠券?
解决Stripe订阅项更新时发票自动完成无法添加优惠券的问题
两种可行方案:
方案一:生成草稿发票后手动添加优惠券
把proration_behavior从always_invoice改为create_prorations,Stripe不会自动生成并完成发票,只会将 prorate 金额作为待处理发票项保存。之后你可以手动创建草稿发票,添加优惠券后再完成流程。
修改后的订阅项更新代码:
Stripe::SubscriptionItem.update( 'sub_item_id', proration_behavior: 'create_prorations', payment_behavior: 'default_incomplete', quantity: 10 )
后续操作步骤:
- 调用接口生成草稿发票:
invoice = Stripe::Invoice.create({ subscription: 'sub_id', auto_advance: false # 强制保持草稿状态 }) - 为草稿发票绑定优惠券:
Stripe::Invoice.update( invoice.id, coupon: 'coupon_id' ) - 手动完成发票,触发支付流程:
Stripe::Invoice.finalize_invoice(invoice.id)
方案二:更新订阅时直接应用优惠券(针对本次 prorate)
如果希望生成 prorate 发票时自动套用优惠券,可直接使用Subscription.update接口(而非单独更新订阅项),在请求中加入优惠券参数,Stripe会自动将优惠券应用到本次更新产生的 prorate 金额上。
示例代码:
Stripe::Subscription.update( 'sub_id', items: [{ id: 'sub_item_id', quantity: 10 }], proration_behavior: 'always_invoice', payment_behavior: 'default_incomplete', coupon: 'coupon_id' )
注意:若优惠券仅需作用于本次 prorate 而非整个订阅,后续记得移除订阅上的绑定,避免影响未来发票。
内容的提问来源于stack exchange,提问作者john bowlee
相关产品推荐
相关产品推荐

