
Kort svar: Test først checkout som gæst i et privat vindue, og se derefter den fejlede checkout-anmodning i browserens Netværk-fane. Hvis svaret er en 4xx/5xx-fejl, HTML i stedet for JSON eller slet intet svar, har du allerede indsnævret problemet til henholdsvis blokering, serverfejl eller JavaScript. Ændr ikke betalingsopsætningen, før du har gemt URL, statuskode, tidspunkt og den tilhørende loglinje.
Fagligt gennemgået: 28. august 2026
Kontrolgrundlag: WordPress 7.1, WooCommerce 11.0.1, PHP 8.4.23 og Chrome 151 på isoleret staging samt aktuel produktdokumentation. Den konkrete butik skal stadig testes med sin egen gateway, checkouttype og pluginopsætning.
Et checkoutproblem er ikke én fejl. Nogle kunder ser en endeløs spinner, andre mangler betalingsmetoder, og andre igen kan trykke på “Afgiv ordre” uden at komme videre. Det hurtigste diagnoseforløb begynder derfor ikke med at deaktivere plugins. Det begynder med at fastholde det præcise symptom og finde den anmodning, som ikke gennemføres.

wc-ajax og især opdatering af ordreoversigten og selve checkoutkaldet. Ved blok-checkout ser du efter Store API-kald under /wc/store/.Gem kun et skærmbillede med testdata. Kundenavn, adresse, e-mail, telefon, kortoplysninger, tokens, nøgler og hele webhook-payloads skal beskæres eller erstattes af testdata, før billedet bruges offentligt.
| Symptom | Sandsynlig årsag | Kontrol | Næste skridt |
|---|---|---|---|
| Spinneren stopper aldrig | JavaScript-fejl eller et AJAX/Store API-kald, der aldrig afsluttes | Konsol og Netværk | Find første røde fejl eller fejlede request |
| “Afgiv ordre” reagerer ikke | Fejl i frontend-script, validering eller overlay | Konsol, DOM og tastaturnavigation | Test uden optimering på staging |
| Ingen betalingsmetoder vises | Gateway er ikke tilgængelig for land, valuta eller checkouttype | Gatewayindstillinger og checkouttype | Test samme kurv med standard checkout |
| Checkoutkald returnerer 400 | Påkrævede eller indsendte data kan ikke behandles | JSON-fejlkode og feltfejl | Ret det dokumenterede input |
| Checkoutkald returnerer 403 | WAF, sikkerhedsplugin eller nonce/session afvises | Responsheaders og sikkerhedslog | Tillad kun det dokumenterede endpoint |
| Checkoutkald returnerer 409 | Kurvens eller ressourcens serverstate er ændret | JSON-fejl og eventuelt returneret aktuel kurv | Synkronisér state; gensend ikke blindt |
| Checkoutkald returnerer 5xx | PHP-fatal, upstream-/gatewayfejl eller ressourceproblem | WooCommerce- og PHP-/webserverlog ved tidspunktet | Ret den konkrete loggede fejl |
| Checkoutkald returnerer 422 | Kun meningsfuldt med gatewayens dokumenterede definition | Gatewayens egen log og dokumentation | Brug det gateway-specifikke diagnoseflow |
| Svaret er HTML i stedet for JSON | Cache, fejloutput eller forkert routing forstyrrer endpointet | Response-fanen | Fjern kilden til HTML-outputtet |
| Kun enkelte kunder rammes | Browser, samtykke, geografi, valuta eller session | Sammenlign fungerende og fejlet forløb | Isolér den ene forskel ad gangen |
Test mindst to forløb: gæst og indlogget kunde. Hvis kun én betalingsmetode fejler, er det ikke et generelt checkoutproblem. Hvis alle metoder fejler før en ordre oprettes, er frontend, validering eller checkout-endpointet et bedre sted at lede.
Sammenlign også en enkel fysisk vare uden kupon med den kurv, der fejler. Fragt, moms, abonnementer og tilvalg kan ændre, hvilke plugins og beregninger der bliver aktiveret.
Under WooCommerce → Indstillinger → Avanceret skal den rigtige checkoutside være valgt. Under WordPress → Indstillinger → Generelt skal WordPress-adresse og webstedsadresse bruge samme endelige domæne og HTTPS-form. Et miks af www og ikke-www, eller HTTP og HTTPS, kan bryde sessioner og AJAX.
Gem ikke indstillingerne bare for at “prøve”. Dokumentér den nuværende værdi, og ret kun en faktisk uoverensstemmelse.
Statuskoden bestemmer næste trin:
Ret den komponent, der kan knyttes til beviset. En tilfældig cache-purge kan skjule problemet kortvarigt uden at forklare det.
Kurv, checkout og Min konto skal være dynamiske. Bekræft, at de ikke leveres fra fuld sidecache, og at WooCommerce-sessioncookies giver bypass. Hvis menu, felter eller knappen bryder efter delay, defer, minificering eller kombination af JavaScript, skal du slå én funktion fra ad gangen på staging og genkøre samme test.
Når den ansvarlige funktion er fundet, genaktiveres optimeringen med den mindst mulige undtagelse. Undlad brede undtagelser for hele domænet, hvis én konkret fil eller side er nok.
En gateway eller checkoutudvidelse kan fungere med klassisk checkout og fejle med Checkout-blokken. Opret en testside på staging med den alternative officielle checkouttype, og gennemfør samme kurv. Det er en diagnose, ikke en permanent nedgradering. Hvis forskellen er reproducerbar, skal den inkompatible udvidelse opdateres eller erstattes, eller checkouttypen fastholdes med en dokumenteret begrundelse.
Tag backup, og brug staging. Skift først til et standardtema. Deaktivér derefter alle ikke-nødvendige plugins, men behold WooCommerce og den gateway, som testen kræver. Gentag præcis samme ordre. Hvis fejlen forsvinder, aktiveres komponenterne igen i logiske grupper og derefter enkeltvis.
På en butik med live trafik må du ikke deaktivere gateway, tema, lagerintegration eller checkoutudvidelser for at teste. Det kan koste ordrer og gøre efterfølgende logbevis ubrugeligt.
Ved 5xx, timeouts eller manglende loopback skal hosting eller udvikler have: UTC-tidspunkt, request-URL uden følsomme parametre, statuskode, request-ID hvis tilgængeligt, den relevante anonymiserede loglinje og trinene til at reproducere. “Checkout virker ikke” er ikke nok til at finde en PHP-worker, firewallregel eller langsom databaseforespørgsel.
Et praktisk mikroeksempel: Hvis gæstecheckout giver 403, mens samme kurv virker for en indlogget testkunde, er gatewayen næppe første mistænkte. Sammenlign i stedet nonce eller cart token, sessioncookie og WAF-event for de to requests. Den ene forskel er mere værd end ti tilfældige pluginændringer.
Rul kun den konkrete rettelse tilbage: gendan den tidligere checkoutside, optimeringsindstilling, gatewayversion eller kodeændring fra den noterede backup. Purge berørte cachelag efter rollback, og gentag den samme testordre. Hvis rollback ikke genskaber den tidligere adfærd, er der sandsynligvis mere end én ændring i spil.
Kontakt gatewayen, når dens dashboard eller log afviser betalingen eller callbacken. Kontakt plugin-/temaudvikleren, når fejlen kan reproduceres med deres komponent alene. Kontakt hosting ved 5xx, timeouts, blokerede loopbacks eller dokumenterede ressourcegrænser. Har du brug for driftshjælp til en dansk WooCommerce-løsning, kan du se WooCommerce hosting hos Hostious.
Fordi checkout er dynamisk og afhænger af AJAX, session, betalingsgateway og ofte flere scripts. Cache, JavaScript-optimering eller en gatewayfejl kan derfor ramme checkout alene, mens produktsiderne ser fine ud.
Tit, ja. Checkout, kurv og mine-konto-sider må aldrig fuldside-caches, og checkout-scripts må ikke delayes. Tjek at dine cache-regler undtager de sider, og test i et privat vindue efter purge.
Læs gatewayens egen log først – 3DS-afvisninger og callback-fejl står der, ikke i WordPress. Virker webhooken ikke, skal dens URL kunne nås udefra uden at blive blokeret af firewall eller vedligeholdelsestilstand.
En god fejlsag kan læses som én sammenhængende tidslinje. Brug eksempelvis disse fire udsnit:
Supplér billederne med tekniske signaler:
Kundenavn, adresse, e-mail, cookies, tokens og betalingsdata skal være fjernet. “Checkout virker nu” er ikke i sig selv en kontrol; samme testvare, betalingsmetode og browsersekvens skal gennemføres igen, så før og efter kan sammenlignes.