Calculer la signature
- de la totalité des champs dont le nom commence par vads_
- du type d'algorithme choisi dans la configuration de la boutique
- de la clé
La valeur de la clé est disponible dans votre Back Office Marchand depuis le menu Paramétrage > Boutique > onglet Clés.
Le type d'algorithme est défini dans votre Back Office Marchand depuis le menu Paramétrage > Boutique > onglet Configuration.
Pour un maximum de sécurité, il est recommandé d'utiliser l'algorithme HMAC-SHA-256 ainsi qu'une clé alphanumérique.
L'utilisation de l'algorithme SHA-1 est dépréciée mais maintenue pour des raisons de compatibilité.
Attention vous ne devez pas utiliser les clés d'API REST pour calculer la signature de votre formulaire de paiement.
Seule l'utilisation de l'algorithme HMAC-SHA-256 est implémentée dans notre exemple de code.
Pour calculer la signature :
- Triez les champs dont le nom commence par vads_ par ordre alphabétique.
- Assurez-vous que tous les champs soient encodés en UTF-8.
- 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.
- Sauvegardez le résultat de l'étape précédente dans le champ signature.
<form method="POST" action="https://scelliuspaiement.labanquepostale.fr/vads-payment/entry.silentInit.a"> <input type="hidden" name="vads_action_mode" value="INTERACTIVE" /> <input type="hidden" name="vads_amount" value="5124" /> <input type="hidden" name="vads_ctx_mode" value="TEST" /> <input type="hidden" name="vads_currency" value="978" /> <input type="hidden" name="vads_page_action" value="PAYMENT" /> <input type="hidden" name="vads_payment_config" value="SINGLE" /> <input type="hidden" name="vads_site_id" value="12345678" /> <input type="hidden" name="vads_trans_date" value="20170129130025" /> <input type="hidden" name="vads_trans_id" value="123456" /> <input type="hidden" name="vads_version" value="V2" /> <input type="hidden" name="signature" value="ycA5Do5tNvsnKdc/eP1bj2xa19z9q3iWPy9/rpesfS0="/> <input type="submit" name="payer" value="Payer"/> </form>
Cet exemple de formulaire s'analyse de la manière suivante:
- On trie par ordre alphabétique les champs dont le nom commence par vads_ :
- vads_action_mode
- vads_amount
- vads_ctx_mode
- vads_currency
- vads_page_action
- vads_payment_config
- vads_site_id
- vads_trans_date
- vads_trans_id
- vads_version
- On concatène la valeur de ces champs avec le caractère "+" :
INTERACTIVE+5124+TEST+978+PAYMENT+SINGLE+12345678+20170129130025+123456+V2
- On ajoute la valeur de la clé de test à la fin de la chaîne en la séparant par le caractère "+". Dans cet exemple, la clé de test est 1122334455667788
INTERACTIVE+5124+TEST+978+PAYMENT+SINGLE+12345678+20170129130025+123456+V2+1122334455667788
- Si vous utilisez l’algorithme SHA-1, appliquez le à la chaîne obtenue.
Le résultat à transmettre dans le champ signature est : 59c96b34c74b9375c332b0b6a32e6deeec87de2b
- 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.
Le résultat à transmettre dans le champ signature est :
ycA5Do5tNvsnKdc/eP1bj2xa19z9q3iWPy9/rpesfS0=