19

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

谢谢

4

4 回答 4

32

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

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

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

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

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

于 2019-01-13T00:42:54.687 回答
9

续订订阅:

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

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

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

  1. 使用 Stripe 标识符(包含在事件有效负载中)查找客户订阅。
  2. 从 Stripe API 检索订阅详细信息。
  3. 使用 Stripe 订阅的CurrentPeriodStart和更新我们的订阅和。CurrentPeriodEndperiod_startperiod_end
  4. 使用 Stripe 事件中的详细信息创建客户发票。
于 2016-06-02T10:14:01.990 回答
8

以及customer.subscription.created您还将收到一个invoice.created后跟invoice.payment_succeeded(或invoice.payment_failed

从文档中:

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

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

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

有关为什么您可能需要这样做的更多信息,请参阅我对这个问题的回答...

于 2014-04-08T16:03:56.730 回答
5

您想观看一个invoice.payment_succeeded事件:

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

每次支付发票时都会触发此事件。还会发生一个charge.succeeded事件,但不同之处在于invoice.payment_succeeded仅针对发票付款发生,而charge.succeeded独立费用也会发生。

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

于 2014-11-14T07:06:53.303 回答