【问题标题】:How to Cancel Subscription created thought Checkout Session Stripe APIHow to Cancel Subscription created think Checkout Session Stripe API
【发布时间】:2020-09-14 18:15:38
【问题描述】:

我在条带上创建了一个经常性产品,并创建了一个结帐会话,它工作正常,并为我创建了一个订阅,我可以在仪表板上看到。

这是我的代码

        checkout_session = stripe.checkout.Session.create(
            success_url=domain_url + 'success?session_id={CHECKOUT_SESSION_ID}',
            cancel_url=domain_url + 'cancelled/',
            payment_method_types=['card'],
            mode='subscription',
            line_items=[
                {
                    'quantity': 1,
                    'price': 'price_1HLDRqCHEV6ur4mXq36yVF1D',
                }
            ]
        )

我想为用户提供一种便利,他们可以取消他们通过结帐会话进行的订阅,但只能通过订阅 ID 取消,但我没有从结帐会话中获得任何订阅 ID。

我如何允许用户取消他们通过结帐会话进行的订阅?

【问题讨论】:

    标签: python django stripe-payments


    【解决方案1】:

    当您使用 Stripe Checkout 创建订阅时,该订阅只有在您的用户完成 Checkout 流程后才会创建并可用。这意味着当您最初创建 Checkout Session 时,会话对象的 subscription 属性将为 null

    一旦您的用户完成结帐流程,Stripe 将发出一个 checkout.session.completed 事件,其中包含新创建的订阅 ID,您可以使用该 ID 取消订阅。要监听这些事件,您需要创建一个 webhook 端点,这与在您的站点上创建任何其他 HTTP 端点实际上没有什么不同。以下是一些您可以参考的示例:

    一旦您设置了端点来侦听checkout.session.completed 事件。 Stripe 将在event data 中发送更新的会话对象(带有订阅 ID)。从那里您可以将订阅 ID 保存到您的数据库中以供以后参考。如果您的用户想要取消订阅,您需要在此处调用此 API 端点:

    https://stripe.com/docs/api/subscriptions/cancel?lang=python

    另一个更简单的选择是使用新的客户门户网站,这样您就不必为用户创建用户界面来升级/取消现有订阅。只需在此处提供本指南中所示的客户 ID:

    https://stripe.com/docs/billing/subscriptions/integrating-customer-portal

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 2022-12-02
      • 2021-04-27
      • 2023-03-26
      • 2022-12-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 2019-02-15
      相关资源
      最近更新 更多