Παραγγελίες WooCommerce κολλημένες σε Pending payment: αιτίες και λύσεις
Pending payment είναι η κατάσταση που δίνει το WooCommerce σε μια παραγγελία που υπάρχει αλλά δεν έχει πληρωθεί. Λίγες την ημέρα είναι φυσιολογικές: οι πελάτες κλείνουν τη σελίδα της κάρτας ή την οθόνη 3-D Secure της τράπεζας. Ένας ξαφνικός σωρός δεν είναι. Σημαίνει ότι είτε κανείς δεν μπορεί να πληρώσει, είτε πληρώνουν και το κατάστημα δεν ενημερώνεται.

Τι σημαίνει Pending payment, και τι όχι
Το WooCommerce το περιγράφει απλά: η παραγγελία παραλήφθηκε, αλλά δεν έχει γίνει πληρωμή (καταστάσεις παραγγελίας). Η παραγγελία δημιουργείται τη στιγμή που ο πελάτης πατά Place order· μετά ο τρόπος πληρωμής προσπαθεί να πάρει τα χρήματα, είτε μέσα στη σελίδα (πεδία κάρτας) είτε στέλνοντας τον πελάτη σε σελίδα πληρωμής και πίσω.
Δύο γειτονικές καταστάσεις μπερδεύονται εύκολα μαζί της. Το On hold χρησιμοποιείται όταν η πληρωμή θέλει ακόμα επιβεβαίωση, για παράδειγμα τραπεζική κατάθεση, και το απόθεμα έχει ήδη μειωθεί. Το Failed σημαίνει ότι η πληρωμή απορρίφθηκε. Και αν χρησιμοποιείτε το block Checkout, μια εγγραφή checkout-draft δεν είναι καν παραγγελία: είναι προσωρινή εγγραφή που το WooCommerce καθαρίζει καθημερινά. Μόνο το Pending payment σημαίνει «δημιουργήθηκε και δεν πληρώθηκε ποτέ».
Πότε τις ακυρώνει μόνο του το WooCommerce
Στο WooCommerce → Settings → Products → Inventory, η ρύθμιση Hold stock κρατά δεσμευμένο το απόθεμα για απλήρωτες παραγγελίες για όσα λεπτά ορίσετε. Όταν περάσει ο χρόνος, το WooCommerce ακυρώνει τις επιλέξιμες παραγγελίες Pending payment που δημιουργήθηκαν από το checkout και απελευθερώνει το απόθεμα. Αν το πεδίο μείνει κενό, δεν ακυρώνεται ποτέ τίποτα αυτόματα.
Η ακύρωση τρέχει ως προγραμματισμένη εργασία (woocommerce_cancel_unpaid_orders) στο WP-Cron. Αν το WP-Cron είναι απενεργοποιημένο με DISABLE_WP_CRON χωρίς cron στον server στη θέση του, ή το site έχει τόσο λίγη κίνηση που το WP-Cron σπάνια τρέχει, οι παλιές εκκρεμείς παραγγελίες απλώς μένουν. Οι παραγγελίες που φτιάχνετε από το admin και στέλνετε με σύνδεσμο «pay for order» δεν δημιουργούνται από το checkout, άρα δεν ακυρώνονται ούτε αυτές. Αν μαζεύονται παλιές, ελέγξτε πρώτα το cron· ο οδηγός για το Action Scheduler δείχνει πώς βλέπετε τι έχει καθυστερήσει.
Εγκαταλείφθηκε ή χάθηκε; Ρωτήστε τον πάροχο πληρωμών
Αυτή είναι η ερώτηση που κρίνει τα πάντα. Ανοίξτε μερικές κολλημένες παραγγελίες, σημειώστε ώρα, ποσό και τρόπο πληρωμής, και βρείτε τις ίδιες προσπάθειες στο dashboard του παρόχου (Stripe, PayPal, portal της τράπεζας).
Αν ο πάροχος δεν δείχνει επιτυχημένη πληρωμή, ο πελάτης δεν ολοκλήρωσε. Ένα κανονικό ποσοστό είναι θόρυβος· ένα άλμα μετά από ενημέρωση plugin, αλλαγή θέματος ή νέο κανόνα ασφαλείας σημαίνει ότι το βήμα πληρωμής είναι χαλασμένο για πολλούς, και πρέπει να δοκιμάσετε αμέσως μια αγορά μόνοι σας. Αν ο πάροχος δείχνει την πληρωμή ως επιτυχημένη αλλά η παραγγελία είναι ακόμα pending, το κατάστημα έχασε την επιβεβαίωση. Αυτοί οι πελάτες έχουν πληρώσει για παραγγελίες που ίσως δεν στείλετε, οπότε αντιμετωπίστε το ως περιστατικό.
Βοηθούν και οι σημειώσεις της παραγγελίας. Οι περισσότεροι τρόποι πληρωμής γράφουν μια σημείωση όταν στέλνουν τον πελάτη στον πάροχο και άλλη όταν έρθει το αποτέλεσμα. Μια παραγγελία με την πρώτη σημείωση και ποτέ τη δεύτερη δείχνει προς την επιστροφή ή το webhook.
Γιατί δεν φτάνει ποτέ η επιβεβαίωση
Οι τρόποι πληρωμής με κάρτα επιβεβαιώνουν τις πληρωμές με webhook: ο server του παρόχου καλεί ένα URL στο κατάστημά σας. Για το WooCommerce Stripe Gateway το endpoint μοιάζει με https://example.com/?wc-api=wc_stripe, και το dashboard του Stripe δείχνει κάθε αποστολή με τον κωδικό απάντησης. Το PayPal Payments δείχνει την κατάσταση των webhooks στις δικές του ρυθμίσεις.
Οι αποτυχημένες αποστολές έχουν λίγες αιτίες. Ένα firewall, ένας κανόνας Cloudflare ή ένα plugin ασφαλείας μπλοκάρει τους servers του παρόχου. Το webhook δείχνει ακόμα σε παλιό domain ή στο staging. Το κατάστημα απαντά με ανακατεύθυνση (HTTP σε HTTPS, ή www σε χωρίς www) που ο πάροχος δεν ακολουθεί. Είναι ενεργό το maintenance mode ή basic auth. Το πιστοποιητικό SSL έχει λήξει. Ή το signing secret άλλαξε μόνο από τη μία πλευρά, οπότε κάθε κλήση απορρίπτεται ως ανυπόγραφη.
Διορθώστε την αιτία και μετά ξαναστείλτε τις αποτυχημένες αποστολές από το dashboard του παρόχου. Ένα webhook που ξαναστέλνεται συνήθως περνά την παραγγελία σε Processing σαν να είχε φτάσει στην ώρα του. Αλλάξτε την κατάσταση με το χέρι μόνο αφού επιβεβαιώσετε την πληρωμή στο dashboard του παρόχου, ποτέ μόνο με τον λόγο του πελάτη.
Διάγνωση σε δέκα λεπτά
Ξεκινήστε από το πλήθος: στο WooCommerce → Orders φιλτράρετε κατά Pending payment και δείτε πότε ξεκίνησαν. Με WP-CLI τις βλέπετε με wp wc shop_order list --status=pending --user=1 --fields=id,date_created,payment_method,total (βάλτε το ID ενός διαχειριστή). Αν έχουν όλες τον ίδιο τρόπο πληρωμής, το πρόβλημα είναι σε αυτόν· αν είναι από όλους, κοιτάξτε το ίδιο το checkout.
Μετά ανοίξτε WooCommerce → Status → Logs, διαλέξτε το log του τρόπου πληρωμής (για παράδειγμα stripe ή ppcp) για τα ίδια λεπτά, και ψάξτε σφάλματα γύρω από το webhook ή το URL επιστροφής. Τέλος, κάντε μόνοι σας μια πραγματική παραγγελία με τον επηρεασμένο τρόπο σε ιδιωτικό παράθυρο και δείτε αν φτάνει σε Processing. Αν χρειάζεστε αριθμούς κάρτας για test mode, ο πάροχος τους δημοσιεύει· ποτέ πραγματική κάρτα σε test mode ή δοκιμαστική σε live.
Μάθετε ότι χάλασε το checkout πριν από τους πελάτες σας.
Πραγματικός έλεγχος checkout σε Magento και WooCommerce · 14 ημέρες δωρεάν · χωρίς κάρταΠιάστε το επόμενο την ίδια μέρα
Οι κολλημένες πληρωμές είναι αθόρυβες. Το κατάστημα φορτώνει, τα προϊόντα μπαίνουν στο καλάθι, και δεν εμφανίζεται πουθενά σελίδα σφάλματος· το μόνο σήμα είναι ένα πλήθος που ανεβαίνει σε μια κατάσταση που λίγοι κοιτάζουν. Το δωρεάν plugin MageSentinel μετρά τις αποτυχημένες και τις ακόμα εκκρεμείς πληρωμές του τελευταίου 24ώρου, ανά τρόπο πληρωμής, και τις επισημαίνει στη σελίδα υγείας του.
Ένας προγραμματισμένος έλεγχος checkout καλύπτει το άλλο μισό: ένας πραγματικός browser περνά το checkout ως το βήμα πληρωμής και σας λέει ποιο βήμα χάλασε, με screenshot. Για έναν έλεγχο τώρα, τρέξτε τον δωρεάν WooCommerce checkout checker. Αν αποτυγχάνει η ίδια η φόρμα πληρωμής, συνεχίστε στο όταν αποτυγχάνει ο τρόπος πληρωμής στο WooCommerce.
Συχνές ερωτήσεις
Τι σημαίνει Pending payment στο WooCommerce;
Η παραγγελία δημιουργήθηκε στο checkout αλλά δεν έχει επιβεβαιωθεί πληρωμή. Διαφέρει από το On hold (πληρωμή που περιμένει χειροκίνητη επιβεβαίωση, με το απόθεμα ήδη μειωμένο) και το Failed (πληρωμή που απορρίφθηκε).
Ακυρώνει το WooCommerce αυτόματα τις παραγγελίες σε Pending payment;
Μόνο αν έχει οριστεί το Hold stock στο WooCommerce → Settings → Products → Inventory. Μετά από τόσα λεπτά, οι επιλέξιμες εκκρεμείς παραγγελίες από το checkout ακυρώνονται και το απόθεμα απελευθερώνεται, εφόσον τρέχει το WP-Cron.
Ο πελάτης πλήρωσε αλλά η παραγγελία είναι ακόμα Pending payment. Γιατί;
Το webhook του παρόχου δεν έφτασε στο κατάστημα ή απορρίφθηκε: firewall ή plugin ασφαλείας, παλιό domain στις ρυθμίσεις του webhook, ανακατεύθυνση, ληγμένο πιστοποιητικό ή αλλαγμένο signing secret. Διορθώστε το και ξαναστείλτε τα αποτυχημένα webhooks από το dashboard του παρόχου.
Να περάσω τις εκκρεμείς παραγγελίες σε Processing με το χέρι;
Μόνο αφού επιβεβαιώσετε στο dashboard του παρόχου ότι η πληρωμή πέτυχε. Καλύτερα να ξαναστείλετε το webhook, γιατί τότε ο τρόπος πληρωμής καταγράφει και το transaction ID στην παραγγελία.