Calculer la signature de l'IPN
La signature se calcule selon la même
logique utilisée lors de la demande de paiement.
- Prenez en considération la totalité des champs dont le nom commence par vads_ .
- Triez ces champs par ordre alphabétique.
- Concaténez les valeurs de ces champs en les séparant avec le caractère " +".
- Concaténez le résultat avec la clé de test ou de production en les séparant avec le caractère " +".
- Selon l'algorithme de signature défini dans la configuration de votre
boutique:
- si votre boutique est configurée pour utiliser "SHA-1", appliquez la fonction de hachage SHA-1 sur la chaîne obtenue à l'étape précédente. Déprécié.
- si votre boutique est configurée pour utiliser
"HMAC-SHA-256", calculez et encodez au format Base64 la signature du
message en utilisant l'algorithme HMAC-SHA-256
avec les paramètres suivants:
- la fonction de hachage SHA-256,
- la clé de test ou de production (en fonction de la valeur du champ vads_ctx_mode ) comme clé partagée,
- le résultat de l'étape précédente comme message à authentifier.
Exemples en PHP
function getSignature ($params, $key) { /** * Fonction qui calcule la signature. * $params : tableau contenant les champs reçus dans l'IPN. * $key : clé de TEST ou de PRODUCTION */ //Initialisation de la variable qui contiendra la chaine à chiffrer $contenu_signature = ""; //Tri des champs par ordre alphabétique ksort($params); foreach($params as $nom=>$valeur){ //Récupération des champs vads_ if (substr($nom, 0, 5)=='vads_'){ //Concaténation avec le séparateur "+" $contenu_signature .= $valeur."+"; } } //Ajout de la clé en fin de chaine $contenu_signature .= $key; //Encodage base64 de la chaine chiffrée avec l'algorithme HMAC-SHA-256 $sign = base64_encode(hash_hmac('sha256', $contenu_signature, $key, true)); return $sign; }