我正在使用 Stripe API 来配置计费门户并允许按计划降级进行订阅更新。但是,当我尝试选择间隔较短的较低级别计划时,即使我相信我的配置是正确的,降级也不会计划在期末发生。
根据 2024 年 10 月的 Stripe 文档:
“您现在可以配置客户门户,以便在计费周期结束时而不是立即进行订阅降级。”
我确保我的 Stripe SDK 也更新到最新版本。
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2024-12-18.acacia'
});
const configuration = await stripe.billingPortal.configurations.create({
features: {
payment_method_update: { enabled: true },
subscription_cancel: { enabled: true, mode: 'at_period_end' },
subscription_update: {
enabled: true,
proration_behavior: 'none',
default_allowed_updates: ['price'],
products: subscriptionUpdateProducts,
schedule_at_period_end: {
conditions: [
{ type: 'shortening_interval' } // Schedule downgrades at period end (Not working)
]
}
},
invoice_history: { enabled: true }
},
business_profile: {
headline: 'Manage your subscription'
}
});
const session = await stripe.billingPortal.sessions.create({
customer: customerId,
configuration: configuration.id,
return_url: `${process.env.FRONTEND_URL}/app/price/price1`
});
问题是我有三个单独的订阅产品(例如一个月、三个月和一年),并且用户在它们之间切换。但是,为了让计费门户正确处理订阅更新,订阅需要成为具有多个定价层的单个产品的一部分。
正确的方法是拥有一个与所有定价级别(例如一个月、三个月、一年)相关联的订阅产品。应允许用户更改同一产品的价格。如果用户更改为不同的产品,计费门户将立即处理更改,而不是应用正确的“周期结束时安排”行为。