【发布时间】:2019-12-28 18:07:37
【问题描述】:
我的网站关闭了一周,并且在这一周内完成了很少的订阅分期付款。但我的网站没有捕捉到这一点(使用 invoice.payment_succeeded 的网络挂钩)。
我查询了我的数据库并拥有订阅 ID。 但是我如何获得触发 invoice.payment_succeeded 的事件。这样我就可以将相同的方法传递给 web-hook 方法并且数据库将被更新。
首先我使用订阅 ID 进行查询。
https://api.stripe.com/v1/subscriptions/sub_XXXXXX我得到发票ID-
第二次我使用发票 ID 进行查询。
https://api.stripe.com/v1/invoices/in_XXXXXX并得到 p>"status_transitions": { "finalized_at": 1565706891, "marked_uncollectible_at": null, "paid_at": 1565706893, "voided_at": null },这表明已付款。
然后我用付费日期(时间戳)查询第三次
https://api.stripe.com/v1/events?created=1565706893&type=invoice.payment_succeeded
并在该日期为 invoice.payment_succeeded 响应触发事件。
但有时,我找不到在“paid_at”期间创建的任何事件:1565706893,值。 我在这里想念什么。或者是否有任何替代解决方案可以使用订阅 ID 查找类型 invoice.payment_succeeded 的事件 ID。
【问题讨论】:
-
嗨,Paul,使用 Stripe 的 /v1/events 列表 API 是正确的。您需要提供两个参数 1.` type` -> 指定为
invoice.payment_succeeded2. 要缩小事件范围,请使用created范围。注意 created 是一个可以指定 {gt, lt} 的范围。但是,在您的查询中,您只指定了一个时间点。默认情况下,每个 API 调用列表返回 10 个事件,您需要执行分页来提取所有页面的数据。 (Stripe-PHP 支持 stripe.com/docs/api/pagination/auto?lang=php 等自动分页)
标签: php stripe-payments payment-gateway