Estamos utilizando Magento EE 1.13.0.2 con el método de pago estándar de PayPal Website Payments . Lamentablemente, no es posible establecer un estado de pedido para los pedidos pagos de PayPal en el back-end.
Necesitamos establecer un estado de pedido personalizado cuando el pedido se ha pagado con éxito (y no parcial). Los tutoriales para modificar el estado de los pedidos de PayPal parecen ser trucos desactualizados, incorrectos o feos.
De lo que reuní:
- las actualizaciones de pago serían manejadas por PayPal IPN.
- Hay un método
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
responsable de "Procesar el pago completado (total o parcial)". - En
Mage_Paypal_Model_Ipn::_registerTransaction()
la solicitud de PayPal se analiza y se compara el estado del pagoMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Para ser sincero, no estoy seguro de qué hacer con esta información. Puedo reescribir Mage_Paypal_Model_Ipn::_registerTransaction()
y simplemente agregar mi código:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
Por supuesto, un observador de eventos (por ejemplo, para uno de los eventos de pedido o estado de pedido) sería mucho mejor, pero no estoy seguro de si hay una manera 100% confiable de atrapar ese evento único cuando el pedido se paga por completo a través de PayPal .
¿Algunas ideas?
Actualizar
Elegimos modificar el flujo de estado de nuestro pedido y ya no necesitamos modificarlo. Dejaré la pregunta abierta por algún tiempo en caso de que alguien quiera responderla.