Depuis la version 1.4 de Magento (voire supérieure, ma mémoire me fait défaut) lorsque la paiement se fait sur un site tiers (Paypal, Cybermut, Atos…) et que le client annule sa transaction sur la page de paiement, il est redirigé vers le site marchand sans que le panier ne soit conservé.

Un ticket avait été crée sur le bug tracker de Magento et la réponse avait été assez claire “Ce n’est pas un bug c’est une fonctionnalité” (It’s not a bug, it’s a feature!).

Magento considère que la remise en place du panier au retour sur le site après annulation du paiement doit être prise en charge par les modules de paiement. Beaucoup de ces modules ont été mis à jour pour prendre en compte ce nouveau comportement. D’autres non, c’est le cas pour PayPal qui n’avait pas intégré ce comportement avant la version 1.8.

Un client a eu un soucis avec un Paypal, sur une version 1.7 de Magento, le panier reste vide lorsque le client annule son paiement et revient sur le site. Voici donc une petite solution rapide à mettre en place et qui corrige ce comportement pas trés bon pour le taux de transformation.

Pour ne pas avoir à surcharger le module Paypal on va utiliser les Observer de Magento. On va donc “observé” le retour du client sur l’url d’annulation Paypal, et l’évènement qui nous intéresse est “controller_action_postdispatch_paypal_standard_cancel”.
Rajoutons donc celà dans le fichier de configuration de notre module:

Et enfin créons la classe et la méthode qui sera exécutée:

Vous pouvez retrouver le module sur Github. Vous pouvez l’installer via Modman ou encore le télécharger directement via ce lien