Stripe 订阅时间表 - 最后阶段安排了两次

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

我一直在努力在 Stripe 中正确设置订阅计划(以便更新的计划执行一次,执行后,它会恢复为具有新价格的常规订阅,而无需任何进一步的计划)。

这是我的情况:

  • 我目前有一个有效的订阅(有自己的计划和价格),并且我已经安排,从下一个计费周期开始,新的订阅(有不同的计划/价格)应该生效。

这部分对我来说效果很好:)

我如何处理变更和安排:

  1. 我根据当前订阅创建订阅计划:
    const scheduledSubscription = await this.stripe.subscriptionSchedules.create({
        from_subscription: stripeSubscriptionId,
    });
  1. 我检索时间表并继续更新它。在第一个 阶段,我将当前订阅设置为在结束时结束 时期,从新时期开始,应该过渡到 以不同价格订阅(参见
    price: newPriceId
    ):
    // Update the schedule with the new phase
    const downgradedSubscription = await this.stripe.subscriptionSchedules.update(scheduledSubscription.id, {
        phases: [
            {
                items: [
                    {
                        price: scheduledSubscription.phases[0].items[0].price,
                        quantity: scheduledSubscription.phases[0].items[0].quantity,
                    },
                ],
                start_date: scheduledSubscription.phases[0].start_date,
                end_date: scheduledSubscription.phases[0].end_date,
            },
            {
                items: [
                    {
                        price: newPriceId,
                        quantity: 1,
                    },
                ],
            },
        ],
    });

我在这些步骤中遇到的问题如下:

  1. 这是运行上面代码之前的默认状态: enter image description here

  2. 这是通过两个阶段调用

    subscriptionSchedules.update
    后的状态: enter image description here

  3. 将时钟拨快一个月后: enter image description here

此时,我希望状态恢复到步骤 1 中的状态(没有计划更新并且新订阅处于活动状态)。

  1. 但是,只有在另一个每月周期之后我才达到所需的状态(没有计划更新的正常订阅): enter image description here
stripe-payments
1个回答
0
投票

这实际上是预期的行为;让我解释一下。当您创建 SubscriptionSchedule 时,每个阶段都有自己的 start_date[0] 和 end_date[1] 或多个迭代 [2],定义该阶段的活动时间。如果默认情况下未提及 [1] 或 [2],则该阶段将仅运行 1 次迭代。 一旦最后一个阶段结束,end_behavior[3] 将启动。您没有指定任何内容,因此它默认为发布,这意味着订阅将不再附加任何计划。

就您而言,这意味着直到第二个月末,订阅仍由计划管理,只有在第三个月月初,计划才会释放订阅。

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