【问题标题】:Stripe Webhook events Renewal of subscriptionStripe Webhook 事件 续订订阅
【发布时间】:2014-05-01 08:16:05
【问题描述】:

我在我的 Asp.net 应用程序中使用 STRIPE 进行信用卡付款。应用程序有每月订阅计划。用户第一次订阅 webhook 事件“customer.subscription.created”时触发。我的问题是下个月订阅续订时会触发哪些事件?谁能告诉我订阅续订 webhook 事件的流程?

谢谢

【问题讨论】:

    标签: asp.net stripe-payments webhooks stripe.net


    【解决方案1】:

    webhook 'invoice.payment_succeeded' 实际上区分了新订阅的首次收费和后续续订费用。

    webhook 发送一个发票对象,其中包括'billing_reason' - 可能的值在Stripe Docs - The Invoice object 中注明:

    billing_reason (细绳) "指示创建发票的原因。 subscription_cycle 表示订阅进入新时期所创建的发票。 subscription_create 表示由于创建订阅而创建的发票。 subscription_update 表示由于更新订阅而创建的发票。 subscription 为所有旧发票设置,以指示订阅更改或期间提前。为与订阅无关的所有发票设置手动(例如:通过发票编辑器创建)。即将到来的值是为每个即将到来的发票端点的模拟发票保留的。”

    如果billing_reason == 'subscription_cycle' webhook 用于订阅 更新。

    如果billing_reason == 'subscription_create' webhook 用于全新订阅。

    【讨论】:

    • 注意:如果订阅是在未来使用 billing_cycle_anchor 创建的,那么即使它是订阅的第一张发票/付款,计费周期也会以 `subscription_cycle` 的形式出现
    • 在此之前,我使用的是逻辑检查:期间开始!= 期间结束,以及订阅是否在订单项中。你的回答简化了我的代码。
    • @Saad 你介意在这里接受我的回答吗?非常感谢。
    【解决方案2】:

    续订:

    当客户在 Stripe 中续订订阅时,会发生许多事情,每件事都有相应的事件:

    1. 发票已创建 - invoice.created
    2. 订阅计费周期已更新 - customer.subscription.updated
    3. 一小时后(让您有时间添加任何额外费用)Stripe 尝试向客户收费。
    4. 如果付款成功,则会引发 invoice.payment_succeeded 事件。

    在您自己的应用程序中处理这些事件的方法是注册一个 webhook; Stripe 会将事件详细信息发送到的 HTTP 端点。

    1. 使用 Stripe 标识符(包含在事件负载中)查找客户订阅。
    2. 从 Stripe API 检索订阅详细信息。
    3. 使用 Stripe 订阅的 period_startperiod_end 更新我们订阅的 CurrentPeriodStartCurrentPeriodEnd
    4. 使用 Stripe 事件中的详细信息创建客户发票。

    【讨论】:

      【解决方案3】:

      除了customer.subscription.created,您还将收到invoice.created,后跟invoice.payment_succeeded(或invoice.payment_failed

      来自文档:

      如果您使用 webhook,Stripe 将在他们都成功尝试支付发票后等待一小时;唯一的例外是第一张发票,当您为客户订阅计划时会立即创建并付款。

      因此,这意味着,invoice.created 事件也将在下个月触发。
      然后,Stripe 将等待一个小时,然后向客户卡收费,然后触发charge.succeeded(如果收费成功)或charge.failed(如果收费失败)

      如果您愿意,等待时间是为了允许将发票项目添加到发票中。

      请参阅我的answer on this question,了解有关您可能需要这样做的原因的更多信息...

      【讨论】:

        【解决方案4】:

        您会想要观看invoice.payment_succeeded 事件:

        看看:https://stripe.com/docs/api#event_types

        只要支付发票,就会触发此事件。 charge.succeeded 事件也会发生,但不同之处在于 invoice.payment_succeeded 仅发生在发票上的付款中,而 charge.succeeded 也发生在独立费用中。

        订阅的第一次收费和定期收费之间没有事件区别,尽管您存储在您端的逻辑(例如,创建订阅的时间,订阅的时间) expires 等)应该可以帮助您消除歧义。

        【讨论】:

        • 当前的 API 确实区分了第一次收费和重复收费。请参阅下面的答案。
        猜你喜欢
        • 2021-01-19
        • 2023-03-19
        • 2021-05-22
        • 2017-03-04
        • 2016-10-18
        • 2023-03-11
        • 2018-01-02
        • 2013-10-24
        • 2021-01-06
        相关资源
        最近更新 更多