Prérequis
Avoir sollicité l’équipe S-money pour l’activation de cette fonctionnalité. Une fois confirmé, un nouveau paramètre « CallbackSignature » sera ajouté aux contenus des callbacks.
Avoir sollicité l’équipe S-money pour l’activation de cette fonctionnalité. Une fois confirmé, un nouveau paramètre « CallbackSignature » sera ajouté aux contenus des callbacks.
CallbackSignature est une chaîne calculée et cryptée qui permet au client de vérifier la validité de l’appel.
Elle est construite comme suit :
Extraction de tous les paramètres du callback (hors CallbackSignature)
Classement par ordre alphabétique (ascendant) et par clé
Extraction de leurs valeurs vers une liste
Ajout de la chaîne secrète du client à cette liste (en preproduction par la valeur « 0 »)
Concaténation de ces valeurs en une chaîne unique via le symbole « + »
Vérification que la chaîne est au format UTF-8
Hashage de la chaîne via l’algorithme « SHA-1 »
Attribution du résultat au paramètre « CallbackSignature ».
Pour vérifier qu’une requête est valide, il faut d’abord générer une signature selon la méthode construction et effectuer une comparaison de la valeur de la signature généré et la valeur de la signature reçue dans le callback.
Si les deux signatures sont similaires, alors la requête est valide. Sinon, la requête a été corrompue.
Exemple 1 : Callback valide
orderId=123456amount=1020&CallbackSignature=814de6e4d24008b1764fe093026b5127cddbf6c2
Chaine concaténée (avec chaine secrète = 0) : 1020+123456+0
CallbackSignature calculé : 814de6e4d24008b1764fe093026b5127cddbf6c2
Exemple 2 : Callback corrompu
orderId=123456&amount=1020&CallbackSignature=c7ce2c2adb001127d2c2a12612184669f340dfd7
Chaine concaténée (avec chaine secrète = 0) : 1020+123456+0
CallbackSignature calculé : 814de6e4d24008b1764fe093026b5127cddbf6c2