Su partner en Internet

Redsys In Site problemas de diagnóstico

Hola, seguro que más de uno se ha encontrado con un comercio desarrollado en WooCommerce y quiere implementar como método de pago el sistema In Site que redsys ofrece para los comercios. En resumen la opción In Site permite interactuar con la entidad financiera de manera que no salgamos del comercio en ningún momento evitando redirecciones. Esto al usuario le facilita la interacción y el comercio se asegura que la venta se hace de una manera más fácil e intuitiva para el usuario.

Lo que no te dicen muchas veces es el problemón que genera usando según que plugins para hacer esto.

Habiendo hecho consultas y más consultas al soporte técnico de Redsys (me parece que ni ellos saben exactamente la magnitud del problema) no nos han dado nunca una respuesta clara. A ver si este post les ayuda! 🙂

Disposición inicial:

  • Sitio web de comercio electrónico, desarrollado en WordPress (últimas versiones, siempre actualizada a la última (6.9) ahora mismo.
  • Plugin de Woocommerce para toda la interacción para ventas.
  • Diferentes métodos de pago entre ellos Pago por Redsys modalidad in site que la hemos configurado a través del plugin: Pasarela Unificada de Redsys para WooCommerce. Desarrollado por RedSys.

Infraestructura:

Servidor Cloudlinux / WHM / CPanel. Con privilegios de acceso a consola por root. (Si utilizas servidores compartidos donde no tienes privilegios, tendrás que tirar de tickets para que el administrador te haga las tareas por ti y son unas cuantas)

Problema principal: Una vez desarrollada la tienda y sus métodos de pago, nos damos cuenta que el apartado del pago por tarjeta de crédito (redsys in site) no está disponible para el usuario. Analizando el código nos damos cuenta que devuelve un error de javascript que indica que una url no la detecta. Accediendo al administrador, vamos a ver el diagnóstico de Redsys y nos damos cuenta que el apartado que indica Conexión Redsys: indica KO. Todo el resto parece correcto. Y porqué este KO. Analizando la documentación https://sis-d.redsys.es/sis/CAs/comunicadoCertificado.html Indica toda una serie de instrucciones que en resumen te indican que hay dos certificados que se han de descargar para instalarlos en tu servidor. Se han de descargar estos dos certificados y descomprimirlos (.zip), yo los guardé en una carpeta de mi servidor /certs (archivos .crt) dentro de mi estructura de disco /home/[usuario]/certs.

Una vez ahí, y buscando y buscando me di cuenta de varias cosas.

Los certificados deben de estar almacenados en un almacén de confianza. Como los tenía en /certs, los tuve que copiar al almacén de confianza (este almacén de confianza es el de mi infraestructura):
cp /home/[usuario]/certs/DigiCertEVRSACAG2.crt /etc/pki/ca-trust/source/anchors/
cp /home/[usuario]/certs/DigiCertGlobalRootG2.crt /etc/pki/ca-trust/source/anchors/

Donde [usuario] es el que tiene permisos para ejecución de PHP en el servidor.
Los dos certificados dados son estos y ahora ya están en un almacén de confianza donde Redsys irá a buscarlos.

Genial! Ya te piensas que todo OK, PUES NO! Sigue KO. Solamente hemos indicado que existen dos certificados de Redsys en un almacén de confianza global del servidor. Un detalle IMPORTANTÍSIMO! para el desarrollo y buen funcionamiento del plugin debéis actualizar vuestro PHP a 8.1 porque el plugin Pasarela Unificada de Redsys para WooCommerce. no está pensado para soluciones PHP mayores a la 8.1 (por ahora) se entiende que algún día eso no sucederá.

Bien, tengo PHP 8.1, Los certificados bien ubicados en el almacén de confianza. Y continua dando KO la conexión Redsys! Qué pasa? Y ahí está el quid de la cuestión que nadie te ha explicado.

Normalmente cuando desarrollas una tienda y empiezas a hacer pruebas recibes unas credenciales para el modo testeo así pues los hashes, contraseñas y puertos son diferentes y ahí radica la solución. Todo pasa porque las conexiones de Redsys al almacén de certificados anteriormente indicado reciben error de conexión cuando está en modo test y es porque el puerto 25443 que es el de test para todas la conexiones Redsys está cerrado en el firewall del servidor. Por tanto el problema ya viene desde el inicio. Si tienes acceso a tu firewall deberías habilitar como outbound port el 25443 (en mi caso tengo Inmunify 360) y accediendo a Firewall>>Ports en el apartado Outbound ports, añadí ese puerto a la lista de puertos habilitados. Y voilà! El diagnóstico de Redsys en mi tienda ya me dio el esperado OK en la conexión.

Cuando la pasarela Redsys entre en modo producción como usa el puerto 443 (muy típico) es probable que vuestro firewall lo tenga habilitado y por tanto el diagnóstico sea favorable, pero por si acaso, aqui tenéis la respuesta.

Espero que a alguien le sirva de ayuda este POST porque a mi me ha costado lo suyo encontrar la solución y después de haberle dado 1000 vueltas no me gustaría que quien leyera esto tuviera que pasar por lo mismo que yo. 🙂

Os dejo un diagrama por si os sirve:

diagrama redsys para conexiones test

Saludos

Etiquetas: , , ,

Entradas relacionadas

Deja un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada.




Top