Calcular la firma de la IPN
La firma se calcula de acuerdo con la misma lógica utilizada al solicitar el pago.
La plataforma de pago transmite datos codificados en UTF-8. Cualquier alteración de los datos recibidos resulta en un cálculo de firma erróneo.
Debe calcular la firma con los campos recibidos en la notificación y no con los que transmitió en la solicitud de pago.
- Considere todos los campos cuyos nombres comienzan convads_.
- Ordene los campos por orden alfabético.
- Concatene los valores de estos campos separándolos con el carácter “+".
- Concatene el resultado a la clavede prueba o de producción separándolos con el carácter "+".
- Según 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. Obsoleto
- si su tienda está configurada para usar "HMAC-SHA-256", calcule y codifique la firma del mensaje en formato Base64 usando el algoritmo HMAC-SHA-256 con los siguientes parámetros:
- la función de hash SHA-256,
- la clave de test o de producción (según el valor del campovads_ctx_mode) como clave compartida,
- el resultado de la etapa anterior como mensaje para autentificar.
Ejemplos en PHP
función getSignature ($params,$key) { /** * Función que calcula la firma. * $ params: tabla que contiene los campos recibidos en la IPN. * $key : clave de TEST o PRODUCTION */ //Inicialización de la variable que contiene la cadena que se debe 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."+"; } } //Adición de la clave al final de la cadena $contenu_signature .= $key; //Codificación base64 de cifrada con el algoritmo HMAC-SHA-256 $sign = base64_encode(hash_hmac('sha256',$contenu_signature, $key, true)); return $sign; }