MageSentinel

Παραγγελίες Magento 2 κολλημένες σε pending payment: αιτίες και λύσεις

Το pending payment είναι η κατάσταση που δίνει το Magento σε μια παραγγελία όσο περιμένει απάντηση από εξωτερική σελίδα πληρωμής. Λίγες τέτοιες παραγγελίες είναι φυσιολογικές: οι πελάτες κλείνουν τη σελίδα της τράπεζας. Ένας ξαφνικός σωρός σημαίνει ότι η απάντηση δεν φτάνει πίσω στο κατάστημα.

Όλα τα άρθρα2 λεπτά ανάγνωσης

Κλεψύδρα πάνω σε βότσαλα

Τι σημαίνει pending payment

Οι τρόποι πληρωμής με redirect ή φιλοξενούμενη σελίδα δημιουργούν πρώτα την παραγγελία και μετά στέλνουν τον πελάτη στη σελίδα του παρόχου ή σε έλεγχο 3-D Secure. Η παραγγελία μένει στην κατάσταση `pending_payment` ώσπου ο πάροχος να αναφέρει το αποτέλεσμα, είτε με την επιστροφή του πελάτη στο κατάστημα είτε με ειδοποίηση server-to-server (callback ή webhook).

Όταν φτάσει η ειδοποίηση, το module πληρωμής τιμολογεί την παραγγελία και την περνά σε processing, ή την ακυρώνει. Αν δεν φτάσει τίποτα, η παραγγελία μένει σε pending payment.

Το Magento τις ακυρώνει μετά από λίγο

Ένα cron job ακυρώνει τις παραγγελίες σε pending payment που είναι παλαιότερες από το Pending Payment Order Lifetime, στο Stores → Configuration → Sales → Sales → Orders Cron Settings (480 λεπτά από προεπιλογή). Η ακύρωση αποδεσμεύει το δεσμευμένο απόθεμα. Αν το cron δεν τρέχει, δεν καθαρίζονται ποτέ, οπότε ελέγξτε πρώτα το cron όταν μαζεύονται παλιές.

Εγκατάλειψη ή χαμένη ειδοποίηση;

Συγκρίνετε με το dashboard του παρόχου. Αν ο πάροχος δείχνει την πληρωμή εγκεκριμένη ή εισπραγμένη αλλά η παραγγελία είναι ακόμη pending, το κατάστημα έχασε την ειδοποίηση: αυτό είναι πραγματική βλάβη, και οι πελάτες έχουν πληρώσει παραγγελίες που ίσως δεν στείλετε. Αν ο πάροχος δεν δείχνει πληρωμή, ο πελάτης τα παράτησε στη σελίδα πληρωμής· αν αυτές αυξηθούν μετά από μια αλλαγή, φταίει η σελίδα πληρωμής ή το βήμα 3-D Secure.

Συνήθεις αιτίες χαμένων ειδοποιήσεων

Το callback URL μπλοκάρεται από firewall, κανόνα κατά των bots, basic auth του staging που πέρασε στην παραγωγή, ή λίστα επιτρεπόμενων IP του maintenance mode. Το base URL του καταστήματος ή το callback URL στις ρυθμίσεις του παρόχου δείχνει ακόμη σε παλιό domain. Το κλειδί υπογραφής ή τα στοιχεία εμπόρου άλλαξαν μόνο από τη μία πλευρά. Το module πληρωμής πετά exception στο callback, που φαίνεται στο `var/log/exception.log`. Οι message queue consumers που χρειάζεται το module δεν τρέχουν.

Από την πλευρά του πελάτη, η επιστροφή στο κατάστημα μπορεί να χάσει τη συνεδρία όταν τα cookies έχουν κανόνες SameSite που τα πετάνε στο cross-site POST του παρόχου, οπότε ο πελάτης βλέπει άδειο καλάθι ενώ η πληρωμή πέρασε. Δείτε και webhooks πληρωμών στο Magento.

Πιάστε το τη μέρα που ξεκινά

Παρακολουθείτε τον αριθμό παραγγελιών σε pending payment ανά ώρα σε σχέση με το συνηθισμένο, και το ποσοστό που περνά σε processing. Ένας έλεγχος checkout που κάνει πραγματική παραγγελία επιβεβαιώνει όλη τη διαδρομή, μαζί με την επιστροφή στο κατάστημα. Το δωρεάν τεστ checkout Magento περνά το checkout σε πραγματικό browser και δείχνει το βήμα όπου σταματά.

Συχνές ερωτήσεις

Τι σημαίνει pending payment στο Magento 2;

Η παραγγελία δημιουργήθηκε και το Magento περιμένει τον πάροχο πληρωμής να αναφέρει το αποτέλεσμα, συνήθως μετά από redirect σε σελίδα πληρωμής ή 3-D Secure.

Πόσο μένουν οι παραγγελίες σε pending payment;

Ώσπου να απαντήσει ο πάροχος, ή ώσπου το cron να τις ακυρώσει μετά το Pending Payment Order Lifetime (480 λεπτά από προεπιλογή) στο Sales → Orders Cron Settings.

Ο πελάτης πλήρωσε αλλά η παραγγελία είναι ακόμη pending payment. Γιατί;

Η ειδοποίηση του παρόχου δεν έφτασε στο κατάστημα ή απέτυχε εκεί: μπλοκαρισμένο callback URL, λάθος στοιχεία ή URL στις ρυθμίσεις του παρόχου, ή exception στο module πληρωμής.