IOSOR Znalosti

Duplicitní webhook nesmí vytvořit druhý debet

Chybová cesta: Opakování a přehrání zůstávají idempotentní na předplacených penězích a schránce — jedno ID události, jeden debetní řádek, jeden řádek schránky.

Doručení alespoň jednou se bude opakovat. Duplicitní webhook, který odešle druhý debet nebo druhý řádek schránky, je peněžní a provozní incident, nikoli «neškodné potvrzení». Tato stránka je chybová cesta: opakování a přehrání zůstávají idempotentní na předplacených penězích a schránce — nikoli esej o idempotenci odesílání API a nikoli příručka pro opakování příchozích SMS.

Související: Brána podpisu a okna replay, Smlouva o webhooku před prvním odesláním, Řádky debit vs stav doručení ve stejném ledgeru.

IOSOR je white-label předplacený.

Idempotence je chybová cesta, nikoli slogan

Cesta úspěchu: jedna podepsaná událost, jedno přijetí, jeden debet. Chybová cesta pálí důvěru — časový limit, 5xx, přehrání poskytovatelem, opětovné zaslání operátorem. Uložte klíč idempotence ze Smlouva o webhooku před prvním odesláním před vedlejšími účinky: ledger, schránka, CRM.

Co se počítá jako duplikát

Signál Považovat za duplikát když Bezpečný výsledek
ID události Stejné ID již přijato v okně Potvrzení; žádný druhý debet
ID zprávy Stejná zpráva již propojena s ledgerem Znovu použít řádek; žádný nový poplatek
Klíč schránky Stejné MO/MT již založeno Žádný druhý řádek schránky
Mimo okno přehrání Zastaralé opakování po odmítnutí bránou Odmítnout; žádný zápis peněz/stavu
Neznámý typ Není na seznamu událostí smlouvy Zahodit;

Peníze se nesmí pohnout dvakrát

Druhý debet pro stejné ID události je chyba, i když produkt «stále ukazuje doručeno». Finance filtrovat podle ID události nebo zprávy a vidí jeden předplacený řádek pro toto okno UTC. Částečné vedlejší účinky po potvrzení — CRM první, ledger později — vyrábějí dvojí pravdu. Pokud zpracování selže po uložení, opakujte worker na stejném klíči; nepřijímejte HTTP tělo znovu jako nový poplatek.

Schránka se také nesmí zdvojnásobit

Idempotence není jen o penězích. Přehraná příchozí nebo doručovací událost, která otevře druhé vlákno schránky, učí podporu honit duchy a může spustit smyčky automatických odpovědí. Uložte klíč schránky se stejným ID události použitým pro debet. Produkt a finance sdílejí pravidla odmítnutí a duplikace, aby schránka zůstala čistá.

Kontrolní seznam kupujícího pro webhooky bezpečné proti duplikátům

Otestujte přehrání před spuštěním do provozu. Odešlete stejný webhook dvakrát okamžitě za sebou: první vytvoří jeden debet, druhý vrátí potvrzení bez nového debetu nebo řádku. Zkontrolujte, zda ledger backendu ukazuje pouze jeden řádek transakce pro dané časové razítko. Ověřte, že protokol chyb odděluje skutečná odmítnutí od opakovaných pokusů. Nakonec se ujistěte, že se spustí výstrahy, pokud poskytovatel pokusí přehrát události bez řádného ověření.

Začněte s IOSOR

Vynuťte jeden podepsaný replay uvnitř okna na koridoru, který už strhl. Exportujte event id vedle id v ledger a dokažte jeden řádek debit a jeden řádek schránky. Objeví-li se druhý debit, zastavte toho consumera a vraťte navíc řádek — nekompenzujte ho pozdějším provozem. Tato brána jsou peníze replay, ne kontrola E.164 ani text zásilky.

Související: Smlouva o webhooku před prvním odesláním Brána podpisu a okna replay Řádky debit vs stav doručení ve stejném ledgeru.

Shrnutí IOSOR

Replay není nové odeslání. Jedno event id píše jeden debit.

Dělejte: držte podpis a okno replay, pak dokažte jeden debit po POST v okně. Nedělejte: strhávat každý POST ani brát síťový retry jako druhou fakturu.

Byl tento průvodce užitečný?

Související průvodci