errorRedsys

Solución al fallo del modulo de Redsys para Magento

Recientemente hemos tenido que lidiar con un problema en Magento relacionado con el TPV virtual que suministra Redsys en la sección de descargas de su página web.

Algunos de nuestros clientes nos comentaban que estaban recibiendo pagos correctamente de pedidos realizados a través de la Passarela de pago de Redsys, que la tienda online Magento habían registrados como Cancelados.

Al ser un tema tan sensible como el pago, esto estaba causando muchos problemas a nuestros clientes, cuyos compradores quedaban confundidos al recibir mensajes de contradictorios.

Después de analizar el problema, comprobamos que la pasarela de pago estaba procesando correctamente los pagos y los clientes recibían la confirmación en la web de la pasarela de pago, sin embargo, al volver a la tienda online, el comprador recibía un mensaje de error, creando una gran confusión. Este problema derivó en la repitición de algunos de los pedidos de los compradores con el consecuente perjuicio para nuestros clientes.

Tras conversaciones infructuosas con el servicio de soporte del TPV virtual, pasamos a analizar el problema nosotros mismo. Nos dimos cuenta de que en el panel de configuración de Magento no podía comprobarse cuales eran las url_OK y url_KO, que el módulo de Redsys estaba utilizando para  procesar la respuesta del banco.

El módulo de Redsys establece el valor para esos parámetros en el siguiente fichero:  Excellenceredsys\Redsys\controllers\IndexController.php

Concretamente el módulo de Magento estaba asignando el mismo valor para los parámetros DS_MERCHANT_MERCHANTURL, DS_MERCHANT_URLOK y DS_MERCHANT_URLKO
que son las URL de nuestra tienda que se utilizan para mostrar al comprador un mensaje de Éxito o Error en la compra.

fallo_redsys_indexControllers

 

A su vez la variable $urltienda se asignaba en el mismo fichero con el valor siguiente:

fallo_redsys_indexControllers1

 

Que casualmente era la URL de la tienda online que estaban lanzando el error.

fallo_redsys_indexControllers2

 

Lo que hicimos para solucionar el problema fue modificar el código para cambiar el valor de los parámetros correspondientes a las url_OK y url_KO, de la siguiente forma:

Creamos nuevas variables para dichas URLs

fallo_redsys_indexControllers3
…y las asignamos a los parámetros correspondientes

fallo_redsys_indexControllers4