在 Stripe 之外开具发票时,使用哪个 Stripe Webhook 来捕获订阅续订?

4

我在Stripe仪表板中直接创建了一个客户和订阅,因为客户是通过支票支付并在Stripe之外开具发票。

Stripe每个月都会发送Webhooks,类似于普通的信用卡订阅,特别是发票Webhooks(invoice.updatedinvoice.finalizedinvoice.sent),以及customer.subscription.updated

我的应用程序寻找以下Webhooks来连接计费事件/实际升级客户账户:

customer.created
customer.subscription.created
customer.subscription.updated
customer.subscription.deleted
charge.succeeded

charge.succeeded一直是我首选的Webhook,用于提醒我的应用程序更新客户账户(例如提供每月福利)。我的问题是,在开具发票后,实际标记发票为“已付款”要比发票生成时间滞后7-14天,而账户应该续订时,因此我无法使用invoice.paid作为charge.succeeded的等价物。

我正在努力弄清楚对于支付方式为支票的客户,订阅续订时发送的Webhook是什么。customer.subscription.updated确实会在订阅续订时触发,但这可能是由于计划更改引起的。同样的情况也适用于invoice.sent - 这也可能是由于计划更改引起的。

是否有一个专门用于“该客户的订阅刚刚续订,无论他们是否已经付款”的Webhook?

2个回答

6
没有专门用于续订的事件。您需要监听“customer.subscription.updated”事件,然后查看更改的数据以评估是否有续订。思路是查看数据[previous_attributes] (文档),并检查Event中的current_period_startcurrent_period_end属性是否发生了变化,这表明存在续订(或账单周期更改)。

谢谢。我认为current_period_end可能是关键 -- 也许我会检查一下,看看那个日期是否在未来的26-36天之间。 - bones225

0

看看这里的答案。它基本上回答了你关于Stripe续订Webhook的问题。

https://dev59.com/wmEh5IYBdhLWcg3wRRqh#54165193

基本上,您可以使用Webhook“invoice.payment_succeeded”,并在其响应中查找billing_reason。
如果billing_reason == 'subscription_cycle',则Webhook用于订阅续期。
如果billing_reason == 'subscription_create',则Webhook用于全新的订阅。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接