Nous utilisons Magento EE 1.13.0.2 avec le mode de paiement PayPal Website Payments Standard . Malheureusement, il n'est pas possible de définir un statut de commande pour les commandes PayPal payées dans le back-end.
Nous devons définir un statut de commande personnalisé lorsque la commande a été payée avec succès (et non partielle). Les didacticiels pour modifier l'état d'une commande PayPal semblent être des hacks obsolètes, erronés ou laids.
D'après ce que j'ai rassemblé:
- les mises à jour de paiement seraient gérées par PayPal IPN.
- Il existe une méthode
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
responsable du «Traitement du paiement terminé (intégral ou partiel)». - Dans
Mage_Paypal_Model_Ipn::_registerTransaction()
la demande de PayPal est analysée et l'état du paiement est comparé àMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Pour être honnête, je ne sais pas quoi faire de ces informations. Je peux réécrire Mage_Paypal_Model_Ipn::_registerTransaction()
et simplement ajouter mon code:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
Bien sûr, un observateur d'événement (par exemple pour l'un des événements de la commande ou de l'état de la commande) serait beaucoup plus agréable, mais je ne suis pas sûr qu'il existe un moyen fiable à 100% de capturer cet événement unique lorsque la commande est entièrement payée via PayPal. .
Des idées?
Mise à jour
Nous avons choisi de modifier notre flux de statut de commande et n'avons plus besoin de modifier le statut. Je vais laisser la question ouverte pendant un certain temps au cas où quelqu'un voudrait y répondre.