在 Stripe 发布订阅计划后,这里介绍的大多数解决方案看起来都像是 hack,这可能是最优雅的解决方案。事实上,条带文档有一个示例,说明了完全相同的场景。
current_period_end
第 1 步:从您希望降级的现有订阅中获取价值。
第 2 步:从现有订阅创建新的订阅计划。
$subscriptionSchedule = $stripe->subscriptionSchedules->create([
'from_subscription' => 'sub_G678SASEGF',
]);
第 3 步:使用两个阶段更新新创建的计划。phase 0
是在降级的价格计划结束的当前阶段,current_period_end
并且是从降级的价格计划phase 1
开始的下一阶段。current_period_end
$stripe->subscriptionSchedules->update(
$subscriptionSchedule->id,
[
'end_behavior' => 'release',
'phases' => [
[
'start_date' => $current_period_start,
'end_date' => $current_period_end,
'plans' => [
[
'price' => $current_price_id
],
],
],
[
'start_date' => $current_period_end,
'plans' => [
[
'price' => $downgraded_price_id,
],
]
],
],
]
您始终可以检查订阅对象以查看是否有活动的计划,然后检索计划以利用任何未来的降级。这种方法的优点是它可以应用于任何降级和/或计费周期变化。使用前面在答案中描述的多计划方法,一个订阅只能拥有具有相同计费周期的项目。