Calcular la firma de la IPN
La firma se calcula de acuerdo con la misma lógica utilizada al solicitar el pago.
- Considere todos los campos cuyos nombres comienzan con vads_ .
- Ordene estos campos alfabéticamente.
- Concatene los valores de estos campos separándolos con el carácter " +".
- Concatene el resultado con la clave de prueba o de producción separándolos con el carácter " +".
- De acuerdo con el algoritmo de firma definido en la configuración de su tienda:
- si su tienda está configurada para usar "SHA-1", aplique la función de hash SHA-1 en el string obtenido en el paso anterior. Depreciado.
- si su tienda está configurada para usar "HMAC-SHA-256", calcule y codifique en formato Base64 la firma del mensaje usando el algoritmo HMAC-SHA-256 con los siguientes parámetros:
- la función hash SHA-256,
- la clave de prueba o de producción (según el valor del campo vads_ctx_mode ) como clave compartida,
- el resultado del paso anterior como mensaje a autenticar.
Ejemplos en PHP:
función getSignature ($params, $key) { /** * Función que calcula la firma. * $ params: matriz que contiene los campos que se enviarán en la IPN. * $key : clave de TEST o PRODUCTION */ //Inicialización de la variable que contendrá el string a cifrar $contenu_signature = ""; //Ordenar los campos alfabéticamente ksort($params); foreach($params as $nom=>$valeur){ //Recuperación de los campos vads_ if (substr($nom, 0, 5)=='vads_'){ //Concatenación con el separador "+" $contenu_signature .= $valeur."+"; } } //Añadir la clave al final del string $contenu_signature .= $key; //Codificación base64 del string cifrada con el algoritmo HMAC-SHA-256 $sign = base64_encode(hash_hmac('sha256', $contenu_signature, $key, true)); return $sign; }