Estamos usando o Magento EE 1.13.0.2 com o método de pagamento Padrão de pagamentos no site do PayPal . Infelizmente, não é possível definir um status de pedido para pedidos pagos do PayPal no back-end.
Precisamos definir um status de pedido personalizado quando o pedido for pago com sucesso (e não parcial). Os tutoriais para modificar o status do pedido do PayPal parecem estar desatualizados, incorretos ou feios.
Pelo que eu recolhi:
- as atualizações de pagamento seriam tratadas pelo IPN do PayPal.
- Existe um método
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
responsável por "Processar pagamento concluído (total ou parcial)". - Na
Mage_Paypal_Model_Ipn::_registerTransaction()
solicitação do PayPal é analisado e o status do pagamento é comparado aMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Para ser sincero, não sei o que fazer com essas informações. Posso reescrever Mage_Paypal_Model_Ipn::_registerTransaction()
e apenas adicionar meu código:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
É claro que um observador de eventos (por exemplo, um dos eventos do pedido ou do estado do pedido) seria muito mais agradável, mas não tenho certeza se existe uma maneira 100% confiável de capturar esse evento único quando o pedido é pago completamente via PayPal .
Alguma ideia?
Atualizar
Optamos por modificar o fluxo de status do pedido e não precisamos mais modificá-lo. Deixarei a pergunta em aberto por algum tempo, caso alguém queira responder.