by Nicolas
3. juillet 2010 19:54
La passerelle PayPal développée pour nopCommerce propose 3 option d’utilisation :
- Direct, qui permet l’utilisation de la carte bancaire sur le site marchand, sans redirection vers PayPal
- Standard, qui utilise une redirection vers PayPal pour son utilisation traditionnelle, avec le choix d’utiliser ou non un compte PayPal
- Express, qui redirige aussi les utilisateurs vers PayPal, mais ceux ci doivent impérativement disposer d’un compte PayPal

Lorsque vous utilisez le mode standard, la deuxième partie de la page de configuration vous indique la procédure à suivre pour activer IPN. Ce qui est annoncé comme optionnel ne l’est pas vraiment, car IPN, c’est le seul retour fiable (serveur à serveur) des informations de paiement de PayPal à votre serveur. Suite au paiement d’un client sur PayPal, si l’utilisateur ferme son navigateur, votre site ne sera jamais notifié du succès ou de l’échec du paiement. Je vous suggère donc d’activer IPN.
Cependant il y a une surprise : on ne peut configurer qu’une url IPN par compte client… ce qui devient gênant pour tous ceux qui doivent gérer plusieurs sites. On risque de voir les retours IPN d’un site A arriver sur l’url IPN d’un site B, c’est embêtant…
La solution est assez simple, afin de disposer d’une url IPN par site, il suffit de la fournir dans chaque transaction PayPal, et plus de manière unique via le compte utilisateur.
Techniquement, cela se fait en deux étapes
- Désactivez IPN dans votre compte PayPal si vous l’aviez activé
- Modifiez les sources de nop :
On doit rajouter dans l’url de paiement un paramètre supplémentaire : notify_url
Ouvrez le projet Nop.Payment.PayPal,
fichier PayPalStandardPaymentProcessor.cs,
méthode public string PostProcessPayment(Order order)
Ajoutez ces deux lignes après la construction du paramètre return et cancel_return (au milieu)
string notifyURL = CommonHelper.GetStoreLocation(false) + "PaypalIPNHandler.aspx";
builder.AppendFormat("¬ify_url={0}", HttpUtility.UrlEncode(notifyURL));
Compilez, déployez la dll Nop.Payment.PayPal.dll, et le tour est joué!
14b822a6-d852-48b4-8cfc-6302b967310d|0|.0
Tags: