Desde hace un tiempo, todas aquellas personas que tengan un comercio on-line y hagan uso del tpv virtual de Redsýs para recibir los pagos, habrán recibido una notificación en las que se les solicita migrar su firma electrónica al algoritmo SHA256, si no lo han hecho antes.
Hasta ahora, muchas tiendas en internet se comunicaban con su tpv mediante el algoritmo SHA1, considerado hoy en día inseguro y declarado obsoleto por la industria. Por ello, a partir del pŕoximo 23 de noviembre, Redsýs dejará de aceptar peticiones que no utilicen los nuevos tipos de firma, obligando a todos los propietarios de comercios online a actualizar sus métodos de pago.
Redsýs a puesto a disposición de los usuarios gran cantidad de documentación sobre este tema para ayudar a los usuarios a realizar los cambios necesarios, así como un número de teléfono en el que resolverán cualquier duda o problema que pueda surgir durante la migración.
Se trata de un cambio, a priori, sencillo. En el mejor de los casos, la extensión/plugin que utilicemos en nuestra tienda estará lo suficientemente actualizada para soportar SHA256, y bastará con indicarle nuestra nueva clave proporcionada por Redsýs.
Si no tenemos la opción de cambiar el tipo de firma, tendremos que actualizar el plugin que usemos a la última versión. Y si, por la razón que fuera, nuestro plugin no ha ofrecido una actualización para este propósito, podemos descargarnos de manera gratuita la extensíón oficial de Redsýs desde su página web (ofrecen librerías y plugins para las principales plataformas de comercio).
Sobre la extensión de Redsýs
En Bikuma, hemos realizado la migración de una tienda on-line que hacía uso de Magento.
En este caso concreto, para realizar los pagos usaban una extensión antigua de Servired para la que ya no existen actualizaciones, por lo que nos vimos obligados a instalar una nueva.
Accediendo a la documentación del TPV, descargamos la extensión de Redsýs para Magento, y siguiendo los pasos del manual que ofrecen, pudimos configurarlo de manera sencilla. Tras probarlo, comprobamos que los pagos se realizaban de manera correcta con la nueva firma, y todo parecía funcionar correctamente.
Sin embargo, al acceder al backend de la tienda, comprobamos que los pagos quedaban en estado pendiente, y las ventas quedaban incompletas. Tras investigar en los logs y haciendo distintas pruebas, descubrimos que, en la respuesta del tpv, el pedido no se cargaba correctamente, por lo que nunca llegaba a actualizarse como pagado.
Para solucionar este problema, tuvimos que editar el archivo IndexController.php (en Excellenceredsys/Redsys/controllers), concretamente a partir de la línea 298:
//Id pedido
$ord = $pedido;
$orde = $ord;
$order = Mage::getModel('sales/order')->loadByIncrementId($orde);
Si tenemos unos mínimos conocimientos de programación, podemos ver el uso extraño y sin sentido que se hace de las variables $ord y $orde. Sin embargo, el principal problema se encuentra en la línea que carga el pedido en cuestión. El método loadByIncrementId nos devuelve el pedido que solicitemos mediante un ID numérico, pero aquí se le está indicando un ID en formato de texto ($orde), por lo que, tras un pago terminado, magento lo considerará incompleto.
Para solucionar este error, basta con sustituir las líneas de arriba por lo siguiente:
//Id pedido
$order = Mage::getModel('sales/order')->loadByIncrementId((int)$pedido);