invoice.created 的日期时间,即使在 Stripe 中也是如此

The date-time of invoice.created even in Stripe

有没有办法确定事件 invoice.created 发生的确切日期和时间,给定发票?

例如:

inv = Stripe::Invoice.retrieve(....)
# when did `invoice.created ` occurred for "inv"?

据我所知,period_end 反映了 invoice.payment_succeeded 的日期时间。我想我可以用 period_end 减去 1 小时(如文档所述),但 1 小时不是准确时间,我在某处读到它是几个小时,更重要的是可能有失败的尝试向用户收费,因此它们之间可能会有额外的 延迟 ,所以仅减去 1 小时并不能给我 invoice.created

的确切时间

这里最简单的解决方案是使用 webhook 监听 invoice.created 事件并将 created 值(或至少是事件 ID)存储在您的数据库中。

您是正确的,发票将在一小时后关闭,但只有在所有 webhook 成功向请求返回 200 响应代码后才会关闭。否则,webhook 将每隔 3 天每小时重新发送一次,直到在发票关闭之前成功 [1].

否则您可以使用 List Events API 并使用 created 参数按日期过滤事件,并且 type 您可以在其中放置 invoice.created 并允许您找到事后事件并检索 created 值。

您还可以查看 Invoice 对象上的 webhooks_delivered_at 字段,但如果您的 webhook 在首次交付时由于某种原因失败,那将不起作用。