Skip to content
FunkciókÁrakPartnerekBlogSúgóRólunkKapcsolat
KezdésBejelentkezés
Vissza a Bloghoz
guides2026-08-295 perc olvasás

Webhook Idempotencia: Amikor a Stripe Ugyanazt a Jutalék-eseményt Háromszor Küldi

A Stripe at-least-once kézbesítése ~0,3% duplikált eseményt jelent termelésben. Hogyan kezeli a thMenu stripe_webhook_events claim mintája a duplikációkat — race condition javítással.

th

thMenu Team

thmenu.com

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.