IOSOR Vedomosti

Duplicitný webhook nesmie vytvoriť druhý debet

Cesta zlyhania: opakovania a prehratia zostávajú idempotentné pre predplatené peniaze a schránku — jedno ID udalosti, jeden riadok debetu, jeden riadok schránky.

Doručenie aspoň raz (at-least-once) sa bude opakovať. Duplicitný webhook, ktorý odošle druhý debet alebo druhý riadok schránki, je finančný a prevádzkový incident, nie neškodné potvrdenie. Táto stránka predstavuje cestu zlyhania: opakovania a prehratia zostávajú idempotentné pre predplatené peniaze a schránku — nejde o esej o idempotencii odosielania API ani o príručku pre opakovanie prichádzajúcich SMS.

Súvisiace: Podpis a brána okna opakovania, Webhook zmluva pred prvým odoslaním, Riadky debit vs stav doručenia na tom istom ledgeri.

IOSOR je biela značka predplateného systému. Dvadsať dolárov financuje dymovú skúšku duplicitnej udalosti u jedného spotrebiteľa; mäkká recenzia blízko 1000 USD mesačne oceňuje opakovanie ako dlh.

Idempotencia je cesta zlyhania, nie slogan

Šťastná cesta spracuje jednu podpísanú udalosť, jeden súhlas a jeden debet. Cesta zlyhania spaľuje dôveru pri časových limitoch, chybách 5xx alebo opakovaniach poskytovateľa. Uložte kľúč idempotencie zo zmluvy pred prvým odoslaním skôr, než nastanú vedľajšie účinky v účtovnej knihe alebo CRM. Mäkký limit 1000 USD mesačne považuje vymýšlanie nových kľúčov za objemový dlh, kým dvadsať dolárov dokazuje, že vynútené prehratie nikdy nezdvojnásobí peniaze.

Čo sa počítalo ako duplikát

Signál Považovať za duplikát keď Bezpečný výsledok
ID udalosti Rovnaké ID už prijaté v okne ACK; žiadny druhý debet
ID správy Rovnaká správa už prepojená s ledgerom Znovupoužiť riadok; žiadny nový poplatok
Kľúč schránky Rovnaké MO/MT už zaevidované Žiadny druhý riadok schránki
Mimo okna Zastaraný pokus po odmietnutí brány Odmietnuť; bez zápisu peňazí/stavu
Neznámy typ Nie je na zozname uhohodnotených udalostí Zahodiť; žiadny vymyslený úspech

Brána podpisu a okna opakovania rozhoduje o pravosti a čerstvom stave. Táto stránka vlastní to, čo sa stane po platnom duplikáte.

Peniaze sa nesmú pohnúť dvakrát

Druhý debet pre rovnaké ID udalosti je závažná chyba, aj keď produkt stále ukazuje doručenie. Financie filtrujú podľa ID udalosti alebo správy a vidia presne jeden predplatený riadok pre dané UTC okno. Čiastočné vedľajšie účinky po potvrdení vytvárajú nebezpečnú dvojitú pravdu. Ak spracovanie zlyhá po uložení, reštartujte pracovný nástroj na rovnakom kľúči.

Schránka sa tiež nesmie zdvojnásobiť

Idempotencia sa netýka iba peňazí a účtovných kníh. Opakovaná doručená správa otvárajúca druhé vlákno v schránke učí podporu naháňať duchov a spúšťa slučky automatických odpovedí. Uložte kľúč schránky s rovnakým ID udalosti použitým pre debet. Produkt a financie zdieľajú jednotný jazyk odmietnutia.

Kontrolný zoznam kupujúceho pre bezpečné webhooky

Overte, či sú kľúče idempotencie uložené pred akýmkoľvek externým volaním. Uistite sa, že finančné výkazy čítajú účtovnú knihu, nie správy aplikácie. Otestujte vynútené opakovania s malými sumami pred produkčnou záťažou. Nikdy negenerujte nový kľúč len preto, že sieťová požiadavka meškala.

Začnite s IOSOR

Vynúťte jeden podpísaný replay vo vnútri okna na koridore, ktorý už strhol. Exportujte event id vedľa id v knihe a dokážte jeden riadok debetu plus jeden riadok schránky. Ak sa objaví druhý debet, zastavte toho consumera a vráťte navyše riadok — nekompenzujte ho neskoršou premávkou. Táto brána sú peniaze replay, nie kontrola E.164 ani text zásielky.

Zhrnutie IOSOR

Replay nie je nové odoslanie. Jedno event id píše jeden debet.

Robte: držte podpis a okno replay, potom dokážte jeden debet po POST v okne. Nerobte: strhávať každý POST ani brať sieťový retry ako druhú faktúru.

Pomohol tento sprievodca?

Súvisiace návody