Stripe: порядок событий webhook - PullRequest
0 голосов
/ 04 июля 2018

Как вам следует учитывать тот факт, что события, полученные через веб-крючки, можно получать в произвольном порядке?

Например, с учетом следующего упорядоченного события:

  • A: invoiceitem.created (с количеством 1)
  • B: invoiceitem.updated (с количеством от 1 до 3)
  • C: invoiceitem.updated (с количеством от 3 до 2)

Как убедиться, что получение C-A-B не приведет к повреждению данных (т. Е. С количеством 2 вместо 3)?

Вы могли бы отклонить webhook, если предыдущие_атрибуты в данных Event # не соответствуют текущему состоянию , но тогда вы застряли, если ваша локальная модель уже была обновлена, так как вы никогда не окажетесь в состояние, ожидаемое webhook.

Или вы можете просто использовать рассматривать любой веб-крючок как подсказку для извлечения и обновления объекта . Вы просто игнорируете данные, отправленные webhook, и всегда получаете их. Даже если вы получаете события, заказанные как update / delete / create, он должен работать, так как update фактически создает объект, delete удаляет его, а create не может получить объект и ничего не делать. Но это кажется пустой тратой ресурсов на получение данных каждый раз, когда веб-крючок предлагает их в качестве данных события.

Этот вопрос был задан ранее , но ответы не охватывают вышеуказанные решения.

Спасибо

...