繁体   English   中英

如何使用带有 Python/Django 的 Stripe 将订阅从 PlanA 更改为 PlanB

[英]How to change subscription from PlanA to PlanB using Stripe with Python/Django

我可以使用以下代码为客户创建 Stripe 订阅:

            subscription = stripe.Subscription.create(
                customer=stripe_customer_id,
                items=[
                    { "plan": stripe_plan_A },
                ]
            )

这是我在 Stripe Dashboard 上看到的。

在此处输入图像描述

我想将升级订阅更改为 stripe_plan_B,但同时保持 rest 的配置相同。

我已经尝试使用以下代码将计划从 stripe_plan_A 更改为 stripe_plan_B; 但是,以下命令会导致同时拥有两个订阅,而不是一个订阅。

                stripe.Subscription.modify(
                    subscription.id,
                    items=[
                        { "plan": selected_membership.stripe_plan_B },
                    ]
                )

正如您在下面看到的,我们可以为同一用户同时进行两个订阅。 (条纹文档说你可以有 n 个订阅)

在此处输入图像描述

对此有什么建议,这样我就可以在计划之间流畅地改变吗?

价格取代计划,建议使用价格来创建订阅。 我建议在此处参考迁移价格以计划迁移: https://stripe.com/docs/billing/migration/migrating-prices

您可以直接使用订阅项目 ID 更新订阅。 通过设置items[0][id] ,您表示您想要更新现有的 SubscriptionItem,并且可以更新它以使用不同的价格。 例如,

sub = stripe.Subscription.modify(
  sub.id, 
  items=[
    {"id": {{SUB_ITEM_ID}}, "price": {{PRICE_B_ID}} },
  ],
)

或者,您也可以删除现有的 SubscriptionItem,并将deleted参数设置为true ,然后添加新的 SubscriptionItem。 例如,

sub = stripe.Subscription.modify(
  sub.id, 
  items=[
    {"id": {{SUB_ITEM_ID}}, "deleted": "true" },
    {"price": {{PRICE_B_ID}} },
  ],
)

我在 Stripe 的页面中找到了以下答案,请在此处输入链接描述

subscription = stripe.Subscription.retrieve('sub...')

stripe.Subscription.modify(
  subscription.id,
  cancel_at_period_end=False,
  proration_behavior='create_prorations',
  items=[{
    'id': subscription['items']['data'][0].id,
    'price': 'price_...',
  }]
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM