首页 > 解决方案 > 立即收取订阅升级费用,但不收取降级费用或退款

问题描述

在我的订阅服务中,计费日期始终是每月的第一天。有两个计划 - 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.
    )

标签: pythonstripe-payments

解决方案


推荐阅读