条纹:webhook事件顺序

时间:2018-07-04 11:13:33

标签: api stripe-payments webhooks

您应该如何处理通过Webhooks接收的事件可以随机顺序接收的事实?

例如,给定以下有序事件:

  • A:创建发票(数量为1)
  • B:invoiceitem.updated(数量从1到3)
  • C:invoiceitem.updated(数量从3变为2)

如何确定接收C-A-B不会导致数据损坏(即数量为2而不是3)?

如果Event#data中的previous_attributes与当前状态不对应,您可以拒绝网络钩子,但是如果您的本地模型已经更新,则您将陷入困境,因为您永远都找不到自己的身份Webhook期望的状态。

或者您也可以使用处理任何Webhook作为提示来检索和更新对象。您只是不理会网络挂钩发送的数据,并始终对其进行检索。 即使您收到按更新/删除/创建命令的事件也应该起作用,因为更新实际上会创建对象,删除会删除它,而创建将无法检索该对象并且什么也不做。 但是每次Webhook将其作为事件数据提供时,检索数据都感觉浪费了资源。

这个问题是asked before,但答案并未涵盖上述解决方案。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您的应用程序对这种可能会及时发生的更改很敏感,那么您真的应该使用该事件作为检索对象的信号,正如@koopajah 在他们的评论中指出的那样。这是确保您拥有最新状态的唯一方法。