14 hónapon át naplóztuk minden Stripe webhookot a thMenun: 100.000 eseményből 312 érkezett ugyanazzal az event_id-vel kétszer vagy háromszor. Ez a Stripe "at-least-once delivery" ígéretének konkrét számokban — idempotencia nélkül három duplikáció a jutalékkönyvben.
Miért Érkezik Ugyanaz az Esemény Háromszor
Ha a Stripe nem kap 2xx választ ~10 másodpercen belül, újra próbálja. TCP timeoutok, lambda cold startok, átmeneti DNS hibák, akár sikeres feldolgozás megszakadt kapcsolattal — mind retryt indítanak.
Három gyakori forgatókönyv: Cloudflare Workers cold start >10s, D1 batch tranzakció commitálva de kapcsolat megszakadt, vagy manuális "resend" kattintás a Stripe dashboardon.
Az INSERT-Claim Minta
A thMenu védelme a stripe_webhook_events tábla event_id PRIMARY KEY-val. Első művelet: INSERT. Unique constraint hiba 23505 = duplikáció — 200 OK no-op.
Kritikus: a claimnek meg kell előznie az üzleti logikát race condition elkerüléséhez.
Race Condition: Sorrenden Kívüli Események
Valódi termelési incidens: customer.subscription.updated 800ms-mal előbb érkezett, mint checkout.session.completed. UPDATE 0 sort érintett. Javítás: claim rollback, 503 visszaadás, Stripe újrapróbálja.
FAQ
Aláírás ellenőrzés claim előtt vagy után? Előtt. Verify olcsó, DB írás drága.
Meddig őrizzük az idempotencia sorokat? A Stripe 30 nap retryt garantál; mi 90 napig tartjuk.
A Stripe örökké próbálkozik? Nem, maximum 3 napig.
Hasznosnak találtad? Oszd meg.
Kapcsolódó cikkek
Mi az a QR-menü? Teljes útmutató éttermek számára
A QR-menü lehetővé teszi, hogy vendégei okostelefonjukon azonnal elérjék az étla…
Papír étlapról digitális QR-menüre váltani: lépésről lépésre útmutató
QR-menüt szeretne bevezetni, de nem tudja, hol kezdje? Ez az útmutató lefedi a f…
Geocélzott QR-étlapok: különböző nyelvek a látogató IP-je alapján
Hogyan irányítja egy 180 férőhelyes all-inclusive üdülő Antalyában ugyanazt a QR…