Implémenter l'IPN
Pour traiter le résultat des paiements, le site marchand doit disposer d'un script sur une page dédiée.
Cette page sera appelée automatiquement après chaque paiement (accepté ou refusé) : les paramètres liés au résultat du paiement sont envoyés en mode POST par la plateforme de paiement.
Cet appel serveur à serveur, synchrone au paiement, doit être le plus court possible et sa durée dépend uniquement de votre temps de traitement.
Le script doit comporter au moins les étapes ci-dessous:
- Récupérer la liste des champs présents dans la réponse envoyée en POST
- Calculer la signature en prenant en compte les données reçues
- Comparer la signature calculée avec celle réceptionnée
- Analyser la nature de la notification
- Récupérer le résultat du paiement
Le script peut par exemple tester l'état de la commande (ou l'information de votre choix) pour vérifier qu'elle n'ait pas déja été mise à jour.
Une fois ces étapes réalisées, le script peut mettre à jour la base de données (nouvel état de la commande, mise à jour du stock, enregistrement des informations du paiement etc.).
Afin de faciliter le support et le diagnostic par le marchand en cas d'erreur lors d'une notification, il est recommandé d'écrire des messages qui permettront de connaître à quel stade du traitement l'erreur s'est produite.
La plateforme lit et stocke les 256 premiers octets du corps de la réponse HTTP.
Vous pouvez écrire des messages tout au long du traitement. Voici un exemple de messages que vous pouvez utiliser:
Message | Cas d'usage |
---|---|
Data received | Message à afficher lors de la récupération des données. Permet de confirmer que la notification a bien été reçue par le site marchand. |
POST is empty | Message à afficher lors de la récupération des données. Permet de mettre en évidence une éventuelle redirection qui aurait fait perdre les paramètres postés par la plateforme de paiement. |
An error occurred while computing the signature. | Message à afficher lorsque la vérification de la signature de la réponse a échouée. |
Order successfully updated. | Message à afficher à la fin du fichier une fois vos traitements terminés avec succès. |
An error occurred while updating the order. | Message à afficher à la fin du fichier si une erreur s'est produite pendant vos traitements. |