Το checkout του WooCommerce κολλάει στο processing μετά το Place order
Ο πελάτης συμπληρώνει το checkout, πατά Place order, και η φόρμα γκριζάρει με ένα spinner που δεν φεύγει ποτέ. Άλλοτε η παραγγελία δημιουργείται, άλλοτε όχι, και ο πελάτης φεύγει χωρίς να ξέρει αν πλήρωσε. Η αιτία είναι σχεδόν πάντα ένα αίτημα που δεν επιστρέφει όπως περιμένει το script του checkout.

Τι γίνεται όταν πατάτε Place order
Στο κλασικό checkout, το script στέλνει τη φόρμα με POST στο ?wc-ajax=checkout. Το WooCommerce ελέγχει τα πεδία, δημιουργεί την παραγγελία, την παραδίδει στο payment gateway και απαντά με JSON: result ίσον success με διεύθυνση redirect (σελίδα ευχαριστίας ή gateway), ή failure με τα μηνύματα σφάλματος.
Το spinner μένει μέχρι να φτάσει και να διαβαστεί αυτό το JSON. Ό,τι κάνει την απάντηση αργή, κενή ή όχι JSON αφήνει τη φόρμα μπλοκαρισμένη. Το Checkout block δουλεύει με τον ίδιο τρόπο μέσω του Store API, με POST στο /wp-json/wc/store/v1/checkout.
Βρείτε το αίτημα που αποτυγχάνει
- Ανοίξτε την καρτέλα Network. Στα developer tools του browser, κάντε μια δοκιμαστική παραγγελία και βρείτε το αίτημα
wc-ajax=checkout(ήstore/v1/checkout). - Δείτε το status. Ένα 500 ή κενή απάντηση δείχνει σφάλμα PHP· το 403 firewall ή κανόνα ασφαλείας· τα 502 ή 504 timeout στον server ή στο CDN.
- Δείτε το σώμα της απάντησης. Έγκυρο JSON με
successαλλά χωρίς redirect δείχνει το gateway ή κάποιο script στη σελίδα ευχαριστίας. HTML, ένα PHP notice πριν από το JSON ή σελίδα login σημαίνει ότι κάτι τυπώθηκε μέσα στην απάντηση. - Ελέγξτε το Console. Αν δεν φεύγει καθόλου αίτημα μετά το κλικ, ένα σφάλμα JavaScript σταμάτησε το script νωρίτερα.
- Ελέγξτε τα logs. WooCommerce → Status → Logs, την πηγή fatal-errors και το log του gateway, την ώρα της δοκιμής.
Οι συνηθισμένες αιτίες
| Τι δείχνει το αίτημα | Πιθανή αιτία |
|---|---|
| 500, κενή απάντηση | PHP fatal error σε plugin πληρωμής, αποστολής, χρεώσεων ή παραγγελιών |
| JSON με PHP warning μπροστά | WP_DEBUG_DISPLAY ενεργό, ή plugin που τυπώνει έξοδο |
| 403 | Firewall, προστασία από bots ή plugin ασφαλείας μπλοκάρει το POST |
| 502 / 504 μετά από 30 έως 100 δευτ. | Αργή κλήση στο API του gateway, αργά hooks παραγγελίας, timeout server ή CDN |
| Κανένα αίτημα | Σφάλμα JavaScript, βελτιστοποίηση που καθυστερεί το script του checkout |
| Success χωρίς redirect | Μπλοκαρισμένο popup του gateway ή πλαίσιο 3-D Secure, σφάλμα στη σελίδα ευχαριστίας |
Αν το κόλλημα έγινε αφού δημιουργήθηκε η παραγγελία, μπορεί να έμεινε σε Pending payment, και ένα δεύτερο κλικ φτιάχνει διπλή. Κοιτάξτε το WooCommerce → Orders πριν πείτε στον πελάτη να ξαναπροσπαθήσει. Δείτε και παραγγελίες κολλημένες σε Pending payment.
Μάθετε ότι χάλασε το checkout πριν από τους πελάτες σας.
Πραγματικός έλεγχος checkout σε Magento και WooCommerce · 14 ημέρες δωρεάν · χωρίς κάρταΛύσεις που δουλεύουν
Κλείστε την εμφάνιση σφαλμάτων στην οθόνη στο production (WP_DEBUG_DISPLAY false) και γράψτε τα σε log. Εξαιρέστε cart, checkout και αιτήματα wc-ajax από cache σελίδων, καθυστέρηση και συνένωση scripts. Επιτρέψτε το POST του checkout στο firewall ή στο plugin ασφαλείας· δείτε plugins ασφαλείας που μπλοκάρουν το checkout και κανόνες WAF που μπλοκάρουν το checkout. Ενημερώστε ή αντικαταστήστε το plugin που αναφέρει το fatal error, και δοκιμάστε σε staging με προεπιλεγμένο θέμα όταν η αιτία δεν είναι φανερή.
Για τα timeouts, δείτε τι τρέχει όταν δημιουργείται η παραγγελία: κλήσεις στο gateway, συγχρονισμός αποθέματος, ERP ή emails. Αν μεταφέρετε τις αργές εργασίες στο παρασκήνιο με το Action Scheduler, η απάντηση του checkout μένει γρήγορη.
Βεβαιωθείτε ότι δεν θα ξαναγίνει
Κάντε μια πραγματική δοκιμαστική παραγγελία μετά από κάθε ενημέρωση plugin, θέματος ή gateway, γιατί αυτή η βλάβη έρχεται συνήθως μαζί με μια αλλαγή. Ο δωρεάν έλεγχος checkout WooCommerce περνά το checkout σε πραγματικό browser μέχρι το βήμα πληρωμής και δείχνει πού σταματά· δεν κάνει παραγγελία. Η παρακολούθηση του MageSentinel επαναλαμβάνει τη διαδρομή με πρόγραμμα, και με εγκατεστημένο τον connector μπορεί να κάνει πραγματικές δοκιμαστικές παραγγελίες που ακυρώνονται αμέσως, κάτι που πιάνει το κόλλημα στο Place order. Για άλλα συμπτώματα δείτε το checkout του WooCommerce δεν δουλεύει.
Συχνές ερωτήσεις
Γιατί το checkout του WooCommerce κολλάει στο processing;
Το αίτημα του checkout μετά το Place order αποτυγχάνει ή επιστρέφει κάτι που δεν είναι JSON: συνήθως σφάλμα PHP, κανόνας firewall, timeout ή σφάλμα JavaScript.
Δημιουργήθηκε η παραγγελία αν το checkout συνέχισε να γυρίζει;
Μερικές φορές. Ελέγξτε το WooCommerce → Orders για παραγγελία σε Pending payment ή Failed πριν ξαναδοκιμάσει ο πελάτης, ώστε να μη γίνει διπλή.
Ποιο αίτημα στέλνει το checkout του WooCommerce στο Place order;
Το κλασικό checkout κάνει POST στο ?wc-ajax=checkout· το Checkout block κάνει POST στο /wp-json/wc/store/v1/checkout μέσω του Store API.