用新数量更新订阅,向客户收取新数量的费用,从下个月开始按(上一个+新)数量开始新订阅

问题描述 投票:0回答:1

我在我的 React 和 Nodejs 应用程序中使用 stripe 进行支付。场景是这样的:

假设客户在 10 月 1 日购买了我的计划的 1 数量(我的计划有数量)。

现在,10 月 15 日,客户决定将数量从 1 件改为 5 件。现在我想立即向客户收取新的 5 个数量的费用(因为客户已经支付了 1 个数量的费用)。将订阅更新为上一个+新数量,即1+5=6数量。

现在我希望订阅计数为 6 个数量,并将剩余天数视为 6 个数量。下个月,计划自动开始为客户提供 6 个数量

我尝试过的是像这样更新订阅:

const updateSubscriptionFunc = (subscriptionId, newTotalQuantity) => {
    return new Promise(async (resolve, reject) => {
        try {
            console.log("entered in update subascription", subscriptionId, newTotalQuantity)
            let subscription = await stripe.subscriptions.retrieve(
                subscriptionId
            );
            // console.log(subscription.items.data)
            // console.log("subscriptionitem id",subscription.items.data[0].id)
            const subscriptionItem = await stripe.subscriptionItems.update(
                subscription.items.data[0].id, { quantity: newTotalQuantity }
            )
            console.log("subscription item", subscriptionItem)

            subscription = await stripe.subscriptions.update(
                subscriptionId, { proration_behavior: "always_invoice" }
            );
            console.log("subscription", subscription)
            resolve()
        } catch (err) {
            reject(err)
        }
    })
}
node.js reactjs stripe-payments payment stripes
1个回答
0
投票

您正在为数量更改调用订阅项目更新,然后使用

proration_behavior
调用订阅更新。
这是多余的,而且,
proration_behavior
仅适用于它所在的呼叫,因此它根本不会影响数量变化。

因为您没有在订阅项目更新中设置

proration_behavior
,所以该调用默认为
create_prorations
,这不是您想要的。
在您的订阅更新中,您确实设置了
proration_behavior:'always_invoice'
,但由于该调用中没有数量更新,因此没有按比例分配。

这是我要做的(只有这个,没有项目更新):

subscription = await stripe.subscriptions.update(
   subscriptionId, { 
   items:[
      {id:subscription.items.data[0].id, quantity:newTotalQyantity}
   ],
   proration_behavior: "always_invoice" 
});

这是我个人的偏好,现在您可以通过 SubscriptionItem 更新获得相同的结果(并且没有子更新):

const subscriptionItem = await stripe.subscriptionItems.update(
   subscription.items.data[0].id, {
   quantity:newTotalQuantity,
   proration_behavior:'always_invoice'
});

这将立即针对更新生成的按比例发送发票,但保持您的订阅账单保持在同一日期。

© www.soinside.com 2019 - 2024. All rights reserved.