Stiamo utilizzando Magento EE 1.13.0.2 con il metodo di pagamento PayPal Pagamenti su sito web . Purtroppo nel back-end non è possibile impostare lo stato di un ordine PayPal pagato.
Dobbiamo impostare uno stato dell'ordine personalizzato quando l'ordine è stato pagato correttamente (e non parziale). I tutorial per modificare lo stato dell'ordine di PayPal sembrano essere hack obsoleti, sbagliati o brutti.
Da quello che ho raccolto:
- gli aggiornamenti di pagamento sarebbero gestiti da PayPal IPN.
- Esiste un metodo
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
responsabile per "Elaborazione del pagamento completato (completo o parziale)". - Nella
Mage_Paypal_Model_Ipn::_registerTransaction()
richiesta da PayPal viene analizzato e lo stato del pagamento viene confrontato conMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Ad essere sincero, non sono sicuro di cosa fare con queste informazioni. Potrei riscrivere Mage_Paypal_Model_Ipn::_registerTransaction()
e aggiungere semplicemente il mio codice:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
Ovviamente un osservatore di eventi (ad esempio per uno degli eventi dell'ordine o dello stato dell'ordine) sarebbe molto più bello, ma non sono sicuro che esista un modo affidabile al 100% per catturare quell'evento singolo quando l'ordine viene pagato completamente tramite PayPal .
Qualche idea?
Aggiornare
Abbiamo scelto di modificare il flusso dello stato degli ordini e non è più necessario modificare lo stato. Lascerò la domanda aperta per qualche tempo nel caso in cui qualcuno voglia rispondere.