【发布时间】:2021-08-16 11:11:41
【问题描述】:
我查看了其他解决方案,但它们似乎都不是我的用例。在处理付款后的当月 1 日,我们没有使用 webhook,而是使用 Cron 作业。
我的服务每月提供 X 小时。
当用户订阅时,他们会获得 X 小时。 当用户升级时,他们立即获得两者之间的 X 小时差异,仅在升级时。这很好用,总和是正确的。
我的问题是,当用户降级条带在下一张发票上发出退款时,不正确。
这是一个不正确的示例,显然用户在下一个计费周期无需支付任何费用,这没有任何意义;他们应该支付降级的费用。
代码如下:
如果是升级:
subscription = await stripe.subscriptions.update(existingSub.id, {
cancel_at_period_end: false,
proration_behavior: "always_invoice",
default_tax_rates: [taxRate.id],
items: [
{
// We need to upgrade the existing item.
id: existingSub.items.data[0].id,
price: price.id,
quantity: 1,
},
],
});
如果是新的子
await stripe.subscriptions.create({
customer: req.user.stripeCustomerId,
items: [
{
price: price.id,
},
],
billing_cycle_anchor: endOfMonth.unix(),
default_tax_rates: [taxRate.id],
metadata: {
productId,
paymentMethodId,
amount,
userUid: req.user.uid,
},
default_payment_method: paymentMethodId,
});
我不确定如何降级。
【问题讨论】: