在Stripe中添加多笔定价并仅给订阅商品设置折扣的问题
解决Stripe订阅折扣仅作用于订阅项、不影响一次性付款的问题
方案1:拆分订阅与一次性付款为两张独立发票
彻底分离两笔费用,让折扣只作用在订阅对应的发票上。
- 创建带折扣的订阅(仅包含订阅项)
- 单独创建一次性付款的发票项并生成独立发票
import Stripe from 'stripe'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2024-06-20', }); // 1. 创建带折扣的订阅 const subscription = await stripe.subscriptions.create({ customer: CUSTOMER_ID, items: [{ price: RECURRING_PRICE_ID }], discounts: [{ coupon: YOUR_DISCOUNT_COUPON_ID }], payment_behavior: 'default_incomplete', expand: ['latest_invoice.payment_intent'], }); // 2. 处理一次性付款 const invoiceItem = await stripe.invoiceItems.create({ customer: CUSTOMER_ID, price: ONE_TIME_PRICE_ID, }); const oneTimeInvoice = await stripe.invoices.create({ customer: CUSTOMER_ID, collection_method: 'charge_automatically', auto_advance: true, }); // 触发一次性发票付款 await stripe.invoices.pay(oneTimeInvoice.id);
方案2:用优惠券的价格限制实现同发票分离折扣
如果希望两笔费用显示在同一张发票,但仅订阅项享受折扣,可以给优惠券设置适用价格范围。
- 在Stripe后台创建优惠券时,找到「适用的价格」选项,只添加你的订阅价格ID(RECURRING_PRICE_ID)
- 创建订阅时同时添加一次性项并应用该优惠券
const subscription = await stripe.subscriptions.create({ customer: CUSTOMER_ID, items: [{ price: RECURRING_PRICE_ID }], add_invoice_items: [{ price: ONE_TIME_PRICE_ID }], discounts: [{ coupon: YOUR_RESTRICTED_COUPON_ID }], payment_behavior: 'default_incomplete', expand: ['latest_invoice.payment_intent'], });
这样Stripe会自动识别优惠券仅适用于订阅项,一次性付款不会被折扣。
内容的提问来源于stack exchange,提问作者MoeezShahid01
相关产品推荐
相关产品推荐

