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.