【发布时间】:2017-06-06 16:22:23
【问题描述】:
根据文档,invoice.payment_succeeded 在订阅创建和续订时都会被触发。 https://stripe.com/docs/subscriptions/lifecycle
创建案例和续订案例需要不同的逻辑。我可以使用数据中的哪些内容来区分这些情况?
【问题讨论】:
根据文档,invoice.payment_succeeded 在订阅创建和续订时都会被触发。 https://stripe.com/docs/subscriptions/lifecycle
创建案例和续订案例需要不同的逻辑。我可以使用数据中的哪些内容来区分这些情况?
【问题讨论】:
执行此操作的几种更简单的方法,因为 webhook 数据在数据主体中包含发票信息字段 [取决于您用于获取此信息的语言/库]:
billing_reason string 并检查它是manual 还是created. subscription_cycle/subscription_update。这意味着它分别是费用或订阅发票。指出创建发票的原因。订阅周期 表示由订阅推进到新的发票创建的发票 时期。 subscription_update 表示由于以下原因而创建的发票 创建或更新订阅。订阅设置为所有旧 发票以表明订阅或期间的更改 进步。为所有与 a 无关的发票设置了手册 订阅(例如:通过发票编辑器创建)。这 即将到来的价值是为每个即将到来的模拟发票保留的 发票端点。
subscription 字段。如果它是 null/empty,那么它不是订阅费用。如果它有订阅字段,那么您可以通过 API 调用获取所需的所有其他信息。【讨论】:
我使用以下模型来跟踪付款:
当我第一次使用 Stripe 的 Customer.create 创建订阅时,我创建了一个 SubscriptionPayment 对象并将其附加到订阅。此时,订阅支付的 StripeInvoiceId 属性为空(因为它不是从 Customer.create 返回的)。
稍后,当 invoice.payment_succeeded 事件触发时,我检索最新的 SubscriptionPurchase 并检查 StripeInvoiceId 属性。
如果它为空,我知道这是对初始购买的扩充,我只需使用事件附带的信息更新现有对象。
另一种情况是最新的 SubscriptionPurchase 已经设置了 StripeInvoiceId 属性;在这种情况下,我知道我正在处理续订。
【讨论】: