我正在使用 Stripe(测试模式)在我的应用程序中开发支付模块。我做了以下,
使用 Customer.create(customerParams) 为客户订阅在 stripe 中创建的现有计划。据我所知,它将创建客户、订阅计划、创建发票、收取发票费用。
我只为 invoice.payment_succeeded (paymentSuccess) 和 invoice.payment_failure (paymentFailure) 添加了一个 webhook。在我的应用程序中创建了一个 webhook。
我得到以下内容,
我的 paymentSuccess webhook 在调用 Customer.create(customerParams) 后成功调用,我可以使用它检索事件、发票、费用和客户详细信息以在我的应用程序中进行处理。付费标志设置为 true。
此 webhook 在特定时间间隔(大约 30 分钟左右)内被调用多次(甚至超过 3 次),使用不同的发票 ID、客户 ID、费用 ID。
我的问题:
- 为什么同一事件有多个 webhook 调用?
- 如果是支付失败的重试,实际上并没有失败的支付。调用始终是为了 invoice.payment_succeeded。
- 即使该事件重复发生,为什么 customer_id、invoice_id 每次都不同,因为它应该是相同的,因为付款只完成了一次。
如有任何帮助,我们将不胜感激。提前致谢。
最佳答案
如果客户 ID、发票 ID 和费用 ID 不同,则不是同一事件。
您可能有多个客户在您的帐户上设置了订阅。
Stripe 将发送 invoice.payment_succeeded
每次成功支付任何发票时的事件。
如果您有多个订阅客户,Stripe 会在每个计费周期开始时自动为每个客户创建发票,并在创建后大约一小时尝试为这些发票付款。
你可以查一下attempt_count
任何 invoice object 上的属性了解这是否是给定发票的第一次付款尝试。
关于java - Stripe invoice.payment_succeeded webhook 被多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34692942/