【问题标题】:Updating Subscription status inside the database by using Stripe Webhooks使用 Stripe Webhooks 更新数据库内的订阅状态
【发布时间】:2021-04-01 02:29:38
【问题描述】:

我正在将 Stripe 支付网关与 ASP.NET Core 3.1 中基于订阅的产品网站集成。

我在 SQL Server 数据库中有一个Subscription 表。它有expiration_date (datetime)is_active (bit) 列。

当用户以经常性价格(每月)订阅产品时,我在 expiration_date 列中添加当前日期 + 1 个月。我还在is_active 列中插入1 以指示订阅处于活动状态。

订阅的第一个月过去后,我希望此订阅的is_active 标志的值在数据库中变为0。一旦用户支付了下个月的费用,Current Period 将在条带订阅中更新,is_active 标志的值将再次变为1

为此,我应该使用 Stripe WebHooks。我想通过 webhook 收到订阅期已结束的通知。我很困惑,因为据我了解,customer.subscriptionprice 的 webhook 事件没有定义在当前订阅期结束时触发的内容。

下图显示下一张发票的当前期间和日期。从文档中我了解到可以使用即将到来的发票事件。但我不明白如何将 webhook 与即将发出的发票一起使用。

所以,我的问题是,在订阅期的一个月的最后一天结束时会触发哪个事件,而在定义新期间时会触发哪个事件?

【问题讨论】:

    标签: asp.net stripe-payments


    【解决方案1】:

    请参阅 https://stripe.com/docs/billing/invoices/subscription#subscription-renewalhttps://stripe.com/docs/billing/subscriptions/webhooks#tracking

    当订阅期结束时,会创建一张发票 (invoice.created) 为即将到来的发票收费。因此,当周期结束时,您会收到一个 customer.subscription.updated 事件(因为 current_period_startcurrent_period_end 已更新到新期间)以及为为新期间收费而创建的发票的 invoice.created 事件。

    我会这样做

    您也可以收听customer.subscription.updated并检查它更新的原因是否是计费周期的变化(通过在previous_attributes of the Event中查找current_period_start);或者通过invoice.paid而不是invoice.created执行与上述相同的操作,如果您只关心在成功付款时更新您的系统(这就是https://stripe.com/docs/billing/subscriptions/webhooks#tracking方法的作用)

    【讨论】:

    • 非常感谢您的回答。我已经浏览了这些链接以及 StackOverflow 上的其他一些链接。如果来自 Stripe Dashboard(设置部分)的“定期付款未完成 7 天”和“发票逾期 30 天”,我将订阅状态设为unpaid。现在可以从customer.subscription.updated 事件中捕获unpaid 订阅状态​​吗?当订阅状态也根据发票事件进行更新时,使用发票事件完成这一切似乎并不正确。
    • “是否可以从 customer.subscription.updated 事件中捕获未付费订阅状态”是的,它会。因此,您可以使用 invoice 事件为每个计费周期定期更新数据库,并使用 subscription.updated 事件进行其他状态更改,是的(或者将它们组合成一个更复杂的处理程序,可能使用 previous_attributes,如上所述跨度>
    • 我也忘了提及,但这主要可以通过创建具有短(几分钟)试用期的订阅并等待它们结束来测试,因为这会生成一个“循环”发票和更改就它发送的 webhook 事件而言,计费周期与每月定期付款完全一样:stripe.com/docs/billing/testing#trials
    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2020-08-29
    • 2015-12-24
    • 1970-01-01
    • 2021-11-19
    相关资源
    最近更新 更多