Notions paypal: Notification instantanée de paiement (IPN)

Tags:

intégrer vos paiements PayPal au traitement des commandes de votre site, de manière à obtenir une notification et une authentification immédiates des paiements PayPal reçus.

Source  https://www.paypal.com/fr/cgi-bin/webscr?cmd=p/acc/ipn-info-outside

Lorsqu'un client vous envoie un paiement ou qu'un paiement est annulé ou remboursé, PayPal envoie une notification à votre serveur (à l'URL que vous avez indiquée). Cette notification comporte toutes les informations pertinentes de paiement de votre client (ex: nom du client, montant des paiements) ainsi qu'un code crypté.
À réception d’une notification, votre serveur retransmet les informations (et notamment le code crypté) à une URL sécurisée PayPal. PayPal authentifie la transaction et renvoie une confirmation de sa validité à votre serveur.

Après avoir activé la Notification instantanée de paiement, votre serveur recevra une notification chaque fois que vous recevrez un paiement ; cette notification est envoyée sous forme de "FORM POST" cachée à l'URL que vous avez spécifiée.

Validation

Chaque fois que vous recevez une Notification instantanée de paiement de PayPal, vous devez suivre la procédure de validation de notification décrite ci-dessous avant d'honorer la commande. En vérifiant les informations répertoriées, vous garantissez la légitimité de la transaction.

Vous devez vérifier que l'adresse email servant de "receiver_email" a été inscrite et confirmée sur votre compte PayPal.

Une fois que votre serveur a reçu la Notification instantanée de paiement, vous devez la confirmer en créant une HTTP POST dans PayPal. Votre variable POST doit être envoyée à https://www.paypal.com/cgi-bin/webscr comme vous l'avez reçu. Vous aurez également à ajouter une variable nommée "cmd" avec la valeur "_notify-validate" (par exemple : cmd=_notify-validate) à la chaîne POST.

PayPal répondra à la publication avec un seul mot, REUSSITE ou ECHEC, sur une ligne dans le corps de la réponse. Dès la réception d'une réponse VERIFIE, vous devez procéder à plusieurs vérifications avant d'honorer la commande :

  • Confirmez que la variable payment_status a pour valeur Terminé dans la mesure où les Notifications instantanées de paiement sont également envoyées pour d'autres résultats tels que En attente ou Échec.
  • Vérifiez que la variable txn_id n'est pas un doublon pour empêcher un fraudeur de réutiliser une ancienne transaction terminée.
  • Validez la variable "receiver_email" comme étant l'adresse email inscrite sur votre compte PayPal, pour éviter l'envoi du paiement sur le compte d'un fraudeur.
  • Vérifiez d'autres détails de la transaction comme le numéro et le prix de l'objet pour confirmer que le prix n'a pas changé.

Une fois que vous avez procédé aux vérifications ci-dessus, vous pouvez mettre à jour votre base de données avec les données IPN et traiter l'achat.

Si vous recevez une notification "NON VALIDE", considérez-la comme douteuse et menez votre étude.

Variables IPN

Guide d'intégration de PayPal Intégral a une liste complète + instructions détaillées.

Plus à

simulateur IPN à https://developer.paypal.com/webapps/developer/applications/ipn_simulator

intro IPN https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/