在我的订阅服务中,帐单日期始终在每月的第一天。有两个计划-每月10美元的计划和每月20美元的计划。
当用户从每月10美元的费用升级到每月20美元的费用时,我想立即向用户按比例分配每月20美元的费用,并退还每月10美元的费用。即amount_charged_immediately = [(days_left_in_month / days_in_month) * 20] - [(days_left_in_month / days_in_month) * 10]
。
相反,当用户从每月20美元降级到每月10美元时,降级无需付费,也无需退款。
如何实现这种订阅更改?
我尝试了下面的代码,它似乎可以工作。但是我不确定这是否正确,或者是否有更好的方法来实现这一点。
if user_is_upgrading():
stripe.Subscription.modify(
subscription_id,
cancel_at_period_end=False,
billing_cycle_anchor='unchanged',
items=[{
'id': item_id,
'plan': plan_id,
}],
proration_behavior='always_invoice', # <- ATTENTION.
)
elif user_is_downgrading():
stripe.Subscription.modify(
subscription_id,
cancel_at_period_end=False,
billing_cycle_anchor='unchanged',
items=[{
'id': item_id,
'plan': plan_id,
}],
proration_behavior='none', # <- ATTENTION.
)