Wir verwenden Magento EE 1.13.0.2 mit der Zahlungsmethode PayPal Website Payments Standard . Leider ist es nicht möglich, einen Bestellstatus für bezahlte PayPal-Bestellungen im Backend festzulegen.
Wir müssen einen benutzerdefinierten Bestellstatus festlegen, wenn die Bestellung erfolgreich (und nicht teilweise) bezahlt wurde. Tutorials zum Ändern des PayPal-Bestellstatus scheinen veraltet, falsch oder hässlich zu sein.
Nach dem, was ich gesammelt habe:
- Die Zahlungsaktualisierungen werden von PayPal IPN abgewickelt.
- Es gibt eine Methode,
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
die für "Abgeschlossene Zahlung (entweder vollständig oder teilweise) verarbeiten" verantwortlich ist. - In
Mage_Paypal_Model_Ipn::_registerTransaction()
der Anfrage von PayPal wird analysiert und der Zahlungsstatus mit verglichenMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Um ehrlich zu sein, bin ich mir nicht sicher, was ich mit diesen Informationen anfangen soll. Ich kann umschreiben Mage_Paypal_Model_Ipn::_registerTransaction()
und einfach meinen Code hinzufügen:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
Natürlich wäre ein Ereignisbeobachter (z. B. für eines der Bestell- oder Bestellstatusereignisse) viel netter, aber ich bin mir nicht sicher, ob es eine 100% zuverlässige Möglichkeit gibt, dieses einmalige Ereignis zu erfassen, wenn die Bestellung vollständig über PayPal bezahlt wird .
Irgendwelche Ideen?
Aktualisieren
Wir haben uns entschieden, unseren Bestellstatusfluss zu ändern und müssen den Status nicht mehr ändern. Ich werde die Frage für einige Zeit offen lassen, falls jemand sie beantworten möchte.
quelle
Am Ende hatte ich eine andere Lösung. Nachdem ich einige Stunden mit diesem Problem zu kämpfen hatte, stellte ich fest, dass es in meinem speziellen Fall keine Rolle spielte, ob nur PayPal-Bestellungen einen bestimmten Status erhielten (es handelt sich um eine ERP-Verbindung, die nach Bestellungen in einem bestimmten Status sucht).
PayPal legt den Status der Bestellung nicht fest. Es erfasst nur die Zahlung. Magento setzt den Auftragsstatus auf Verarbeitung (siehe
Mage_Sales_Model_Order_Payment::registerCaptureNotification()
) und setzt den Status auf den Standardstatus innerhalb dieses Status.Alles, was ich tun musste, war, den Standardstatus innerhalb des Status Verarbeitung in den Status zu ändern , den ich über die Administrationsoberfläche benötigte ( System » Bestellstatus ).
Hoffe das hilft jemandem!
quelle