• France
Rechercher
Catégories
Tags
Français
Français
Anglais
Implémentation
Formulaire embarqué (cartes)
API REST de paiement
Formulaire en redirection
Push mail
Échange de fichiers
Paiement mobile
Exemples de code
Logos
Modules de paiement
Back office
Guides
Aide
FAQ
Tutoriels vidéos
Contacter le support

Calculer la signature de l'IPN

La signature se calcule selon la même logique utilisée lors de la demande de paiement.

 Les données transmises par la plateforme de paiement sont encodées en UTF-8. Toute altération des données reçues aboutira à un calcul de signature erroné.

Vous devez calculer la signature avec les champs reçus dans la notification et pas ceux que vous avez transmis dans la demande de paiement.

  1. Prenez en considération la totalité des champs dont le nom commence par vads_.
  2. Triez ces champs par ordre alphabétique.
  3. Concaténez les valeurs de ces champs en les séparant avec le caractère " +".
  4. Concaténez le résultat avec la clé de test ou de production en les séparant avec le caractère " +".
  5. Selon l'algorithme de signature défini dans la configuration de votre boutique:
    1. 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é.
    2. 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;
 }
© 2023 | Tous droits réservés à Systempay | Mentions légales
2.16.0-doc-1.8