El pago se recibe correctamente mediante RedSys pero...
…ni rastro del pedido en nuestro backend de Prestashop, ni se le ha enviado los pertinentes emails al cliente, ni nada de nada.
Hemos estado teniendo problemas con uno de nuestros desarrollos en Prestashop. Cuando ya teníamos casi todo el entorno configurado para salir a producción hemos detecado un problema muy gordo. ¡Los clientes pagan correctamente mediante pasarela RedSys sus pedidos pero el pedido no queda registrado en Prestashop por ninguna parte!
Pago correcto mediante pasarela de RedSys
Si accedemos a nuestra consola de administración de RedSys enseguida comprobamos como el pago queda autorizado correctamente y se le realiza el cobro al cliente.
En cambio, nos llama la atención que sobre la misma operación existe un error en la devolución de la información a nuestro servidor web por parte de RedSys y parece que este es el motivo por el cual no queda reflejado el pedido en Prestashop. Como vemos en el error el servidor ha devuelto un código 403 (Forbidden), por lo que nos lleva a pensar que se debe a algún tema de persmisos o bloqueo por parte de algún firewall.
https://tudominio.com/index.php?fc=module&module=redsysoficial&controller=validation
-1 Server returned HTTP response code: 403 for URL: https://tudominio.com/index.php?fc=module&module=redsysoficial&controller=validation El Firewall de Cloudflare, el cuplable
Tras revisar la configuración del servidor web y los logs de arriba a abajo se nos ocurre pensar en que Cloudflare (el CDN que estamos utilizando para esta tienda online) puede tener algo que ver. Accedemos al registro del firewall y descubrimos como es aquí donde está el origen de todos nuestros dolores de cabeza.
¿Por qué me está bloqueando? Y la solución
Cloudflare posee de una herramienta de comprobación de la integridad del navegador, que en la práctica evita que spammers y robots hagan uso de solicitudes de encabezados HTTP para enviarnos spam (en este caso pedidos falsos por ejemplo). En este caso nos está bloqueando a nosotros mismos.
Deshabilitar la comprobación de integridad del navegador
La manera más rápida de solucionar el problema es deshabilitando esta herramienta. Para ello accedemos a Firewall -> Configuración y desactivamos la “Comprobación de integridad del navegador”
Crear una regla de validación en el firewall de Cloudflare
Si no queremos desactivar completamente la herramienta de comprobación de integridad (que es lo más recomendable), podemos crear una regla que permita las peticiones que cumplan una serie de condiciones. Para configurar esta regla accedemos a Firewall -> Reglas de Firewall y creamos una nueva regla de firewall. En ella hacemos coincidir los campos que permitan identificar que el módulo de RedSys pueda hacer uso de dicha petición a la url solicitada. En nuestro caso el utilizamos el nombre del módulo que quiere acceder y el identificador ASN ¿qué es el ASN?
Y con esto tenemos el problema solucionado y los pedidos de nuestros clientes vuelven a registrarse correctamente en nuestro Prestashop. Esperamos que os sirva de ayuda.