Hvorfor sker timeouten?
Det er ikke mystik – det er typisk en dårlig opsætning af session‑håndtering, som får hele flowet til at gå i stå. En enkelt fejlkode kan få serveren til at smide “session timed out” på din kunde, og du mister salget på sekunder. Kort sagt: noget i din stack kører for hurtigt i for lavt timeout‑interval.
Check dine server‑parametre
Start med at kigge i php.ini eller den tilsvarende konfiguration for din platform. Tjek session.gc_maxlifetime – standard er ofte 1440 sekunder, men i en betalingsgateway kan du have brug for 30 sekunder mere end du tror. Skift værdien, genstart tjenesten, og se om problemet forsvinder.
Browser‑cache er din fjende
Ja, du hørte rigtigt. Browseren kan holde på et forældet token og udsende det igen, selvom serveren har afvist det. Tving en “no‑cache” header i svarene fra checkout-siden. Det er en lille ændring, men den kan gøre en enorm forskel, især når kunderne bruger mobile enheder på ustabile netværk.
Logning uden filter
Fjern log‑filtrering midlertidigt. Når du logger hvert eneste session‑ID, kan du spotte mønstre: klagerne dukker op på præcis 25 sekunder efter trykket på “Betal”. Det er en indikation af, at din load‑balancer har en timeout på 30 sekunder, som rammer “keep‑alive”‑pakkerne. Sådan data er guld værd.
Netværkets latency
Her er en realitet: et langsomt netværk mellem POS‑terminalen og din API er lige så dødeligt som en forkert timeout‑værdi. Test med ping og traceroute fra terminalen til din hosting. Hvis du ser mere end 100 ms jitter, så overvej at placere en edge‑node tættere på dine fysiske butikker.
Integration med dankortvaeddemal.com
På dankortvaeddemal.com har vi en detaljeret guide til at tilpasse session‑håndteringen i både .Net og PHP. Den nævner også, hvordan du kan bruge “heartbeat”‑requests til at holde sessionen i live under lange betalingsprocesser. Ignorer det, og du sidder fast i en evig loop af timeout‑fejl.
Den decisive fix
Skru timeout‑indstillingen i både din web‑server (nginx/Apache) og i din applikationsramme op til mindst 60 sekunder, og introducér en “ping” fra frontend hver fifteen sekunder. Sådan holder du sessionen varm, uden at du åbner for sikkerhedshuller. Når du har gjort det, tjek om “session timeout” forsvinder i live‑miljøet. Hvis den stadig dukker op, så skru en sidste gang på log‑detaljeringen og lad en kollega kigge på netværkstrafikken.
Handling nu: øg server‑timeout til 60 sekunder og implementér en heartbeat‑request.