Redsys TPV virtual Pasarela de Pago

Redsys en la compañía que hace de intermediario entre tu plataforma o comercio y el banco para la transacción económica realizada con tarjeta de débito o de crédito. Esta compañía tiene la capacidad de comprobar la seguridad de tu comercio en la transacción.

Ahora bien, si estás aquí es porque tienes el modulo instalado de Redsys y funciona correctamente, pero la autorización como que el pago ha sido realizado correctamente no es recibido en tu plataforma de comercio electrónico, puede ser woocomerce, prestashop o Magento.

Lo que sucede es que el pedido es realizado correctamente, el cliente realiza el pago correctamente, pero la página de administración de tu tienda de comercio electrónico no sabe que el pedido ha sido pagado correctamente. Este problema esta dado por la versión que tienes instalada en tu servidor y por los sistemas de encriptamiento que tienes instalados en tu servidor.

 

Php 7 y redsys

Nuevos usuarios y gestores de servidores están actualizando el Core del servidor instalando las nuevas versiones de PHP7. Aquí esta el problema, la plataforma de REdyss para el comercio electrónico fue realizada con la versión 5 de PHP que lleva como modulo de encriptación el Encrypt y la nueva versión 7 la ha sido cambiada por la versión de Encrypt_3DES.

 

Como puede ser solucionado este problema

Como la versión de php ha sido actualizada de la versión 5 a la 7, el sistema de encriptamiento ha cambiado y no puede ser utilizado Encrypt sobre Php7 pero lo que deberemos de realizar unos cambios de código hasta que la nueva actualización de la plataforma de Redsys llegue.

En primer lugar debemos buscar esta parte de código

function encrypt_3DES($message, $key) {
  // Se establece un IV por defecto
  $bytes = array(0, 0, 0, 0, 0, 0, 0, 0);
  $iv = implode(array_map("chr", $bytes));
  // Se cifra
  $ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
  return $ciphertext;
}

Es recomendado siempre antes de hacer cualquier cambio de este código gardar el fichero original y además en la modificación comentar el código que ha sido cambiado .

La opción tomada para que la nueva encryptacion funcione es utilizando Openssl_encrypt.

function encrypt_3DES($message, $key) {
  $l = ceil(strlen($message) / 8) * 8;
  return substr(openssl_encrypt($message . str_repeat("\0", $l - strlen($message)), 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
}

Una vez aplicado el cambio en magento por ejemplo el modulo tiene que ser reinstalado para que el nuevo código sea reconocido ademas de un «deploy» del magento en todos los idiomas que tengamos instalados.

 

Deja un comentario


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.