IOSOR Wiedza

Duplikat webhooka nie może spowodować drugiego obciążenia

Ścieżka błędu: ponowienia i odtworzenia pozostają idempotentne dla środków prepaid i skrzynki — jeden identyfikator zdarzenia, jeden wiersz obciążenia, jedna linia skrzynki.

Dostarczenie co najmniej raz spowoduje ponowienie. Duplikat webhooka, który przesyła drugie obciążenie lub drugą linię skrzynki, to incydent finansowo-operacyjny, a nie nieszkodliwe potwierdzenie. Ta strona przedstawia ścieżkę błędu: ponowienia i odtworzenia pozostają idempotentne dla środków prepaid i skrzynki — nie esej o idempotencji wysyłania API i nie podręcznik ponowień przychodzących SMS.

Powiązane: Bramka podpisu i okna replay, Kontrakt webhooka przed pierwszą wysyłką, Wiersze debit a status dostawy w jednym ledger.

IOSOR to white-label prepaid.

Idempotencja to ścieżka błędu, a nie slogan

Szczęśliwa ścieżka: jedno podpisane zdarzenie, jedna akceptacja, jedno obciążenie. Ścieżka błędu niszczy zaufanie — timeout, 5xx, odtworzenie przez dostawcę, ponowne popchnięcie przez operatora. Zapisz klucz idempotencji z Kontrakt webhooka przed pierwszą wysyłką przed skutkami ubocznymi: księga, skrzynka, CRM.

Co liczy się jako duplikat

Sygnał Traktuj jako duplikat, gdy Bezpieczny wynik
Identyfikator zdarzenia Ten sam ID już zaakceptowany w oknie ACK; brak drugiego obciążenia
Identyfikator wiadomości Ta sama wiadomość powiązana z księgą Użyj ponownie wiersza; brak nowej opłaty
Klucz skrzynki Ten sam MO/MT już złożony Brak drugiej linii skrzynki
Poza oknem replay Stare ponowienie po

Pieniądze nie mogą ruszyć się dwa razy

Drugie obciążenie dla tego samego identyfikatora zdarzenia to błąd, nawet jeśli produkt nadal pokazuje status dostarczono. Finanse filtrowane są według identyfikatora zdarzenia i widzą jeden wiersz prepaid dla tego okna UTC. Częściowe skutki uboczne po potwierdzeniu — najpierw CRM, później księga — produkują podwójną prawdę. Jeśli przetwarzanie zawiedzie po zapisie, ponów próbę na tym samym kluczu.

Skrzynka też nie może się podwoić

Idempotencja dotyczy nie tylko pieniędzy. Odtworzone zdarzenie przychodzące, które otwiera drugi wątek skrzynki, uczy wsparcie gonitwy za duchami i może wywołać pętle auto odpowiedzi. Zapisz klucz skrzynki z tym samym identyfikatorem zdarzenia używanym do obciążenia. Produkt i finanse dzielą wspólną logikę odrzuceń.

Lista kontrolna kupującego dla webhooków odpornych na duplikaty

Zweryfikuj podpisy i nagłówki przed dotknięciem księgi. Zablokuj identyfikator zdarzenia w bazie danych, aby zapobiec wyścigom wątków. Zawsze zwracaj kod 2xx po udanym przetworzeniu ale nigdy nie obciążaj konta drugi raz. Monitorowanie musi natychmiast wykrywać powtórzone zdarzenia.

Zacznij od IOSOR

Wymuś jeden podpisany replay w oknie na korytarzu, który już ściągnął. Wyeksportuj event id obok id w ledger i udowodnij jeden wiersz debit oraz jeden wiersz skrzynki. Jeśli pojawi się drugi debit, zatrzymaj ten consumer i zwróć nadmiarowy wiersz — nie kompensuj go późniejszym ruchem. Ta bramka to pieniądze replay, nie kontrola E.164 i nie tekst wysyłki.

Podsumowanie IOSOR

Replay to nie nowa wysyłka. Jeden event id pisze jeden debit.

Rób: trzymaj podpis i okno replay, potem udowodnij jeden debit po POST w oknie. Nie rób: ściągać każdy POST ani traktować retry sieci jako drugiej faktury.

Czy ten przewodnik był pomocny?

Powiązane przewodniki