Stripe:处理第一个订阅和 webhook 事件
Stripe: handle the first subscription and webhook event
我的客户第一次加入我们的订阅计划,我创建了一个交易(称为 START-transaction)并使用 Stripe 的 API 创建新订阅并存储订阅对象 return 在上述交易中。
我还使用 webhook 来捕获 Stripe 的事件。我最大的目的是处理经常性付款(发送有关收费成功或失败的通知,以及用于客户互动的内容)。我捕捉到事件 invoice.payment_succeeded 以检测它是一个定期计费。我也创建了一个事务(调用 RECURRENCE),当然,我将事件对象存储在事务中。 (根据事件invoice.payment_succceeded中的订阅信息,找到relative-START交易,只要RECURRENCE就新建交易)
然后问题暴露了,在客户第一次创建计划时,有 6 个事件回调到我的系统:customer.created; charge.succeeded; invoice.created; invoice.payment_succeeded; customer.card.created; customer.subscription.created。所以,我的客户第一次有 2 个事务 a:1-START 和 1-RECURRENCE。
你建议我删除 RECURRENCE 事务吗?
谢谢。
听起来你想知道你收到的 invoice.payment_succeeded
事件是第一次付款(你已经在你的 "START transaction" 中处理过)还是不是(在这种情况下你想在 "RECURRENCE transaction").
中处理它
执行此操作的最简单方法是查看 event object's request
attribute. Because the first invoice is a direct consequence of your subscription creation request,第一个 invoice.payment_succeeded
事件的 request
属性将具有非空值。后续发票由 Stripe 在后台创建,因此事件的 request
属性将为空值。
您可以使用 Stripe 请求的 billing_reason
来识别它是首次订阅、定期付款还是更新的发票付款。参见 https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason
我的客户第一次加入我们的订阅计划,我创建了一个交易(称为 START-transaction)并使用 Stripe 的 API 创建新订阅并存储订阅对象 return 在上述交易中。
我还使用 webhook 来捕获 Stripe 的事件。我最大的目的是处理经常性付款(发送有关收费成功或失败的通知,以及用于客户互动的内容)。我捕捉到事件 invoice.payment_succeeded 以检测它是一个定期计费。我也创建了一个事务(调用 RECURRENCE),当然,我将事件对象存储在事务中。 (根据事件invoice.payment_succceeded中的订阅信息,找到relative-START交易,只要RECURRENCE就新建交易)
然后问题暴露了,在客户第一次创建计划时,有 6 个事件回调到我的系统:customer.created; charge.succeeded; invoice.created; invoice.payment_succeeded; customer.card.created; customer.subscription.created。所以,我的客户第一次有 2 个事务 a:1-START 和 1-RECURRENCE。
你建议我删除 RECURRENCE 事务吗?
谢谢。
听起来你想知道你收到的 invoice.payment_succeeded
事件是第一次付款(你已经在你的 "START transaction" 中处理过)还是不是(在这种情况下你想在 "RECURRENCE transaction").
执行此操作的最简单方法是查看 event object's request
attribute. Because the first invoice is a direct consequence of your subscription creation request,第一个 invoice.payment_succeeded
事件的 request
属性将具有非空值。后续发票由 Stripe 在后台创建,因此事件的 request
属性将为空值。
您可以使用 Stripe 请求的 billing_reason
来识别它是首次订阅、定期付款还是更新的发票付款。参见 https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason