Muchos de nosotros, lo primero que hacemos tras registrar un dominio o cuando llega la hora de publicar una web, es activar el registro y la cuenta en Cloudflare para apuntar las DNS del mismo y aprovechar las aplicaciones y mejoras que ofrece incluso con la capa gratuita.
Pero hay que tener mucho cuidado con lo que configuramos en Cloudflare. Al actuar como proxy pudiendo ser capaz de alterar todo el código y comportamiento de la web, también es posible que alguna de las modificaciones acabe causando un problema y que, en el caso que nos ocupa, lo apliquemos a un eCommerce Magento y deje de funcionar, por ejemplo, la pasarela de pago.
Y si, esto es lo que puede ocurrir si utilizamos la pasarela de pago Redsys y nuestro eCommerce pasa por el proxy de Cloudflare, que los pagos dejen de confirmarse.
El usuario que realiza el pago en nuestro eCommerce Magento, sale de la web para dirigirse a la pasarela de pago. Una vez introducidos los datos y confirmada la compra, Redsys nos envía un callback con los datos de confirmación de la misma para que Magento cambie el estado de la transacción.
Asegurar constantemente el correcto funcionamiento de los cambios de estado con Redsys es clave para no terminar desquiciado y con tu cliente con los cojones hinchados.
El problema es que Cloudflare bloquea las peticiones callback que envía Redsys a nuestra web y estas no se registran correctamente.
Lo que hace Cloudflare concretamente es bloquear la petición de Redsys por no superar el “Browser integrity check”. En la siguiente captura podréis ver un ejemplo real de una petición callback hacia la url: /es/redsys/index/notify
Esto hace que el eCommerce (Magento, Prestashop, WooCommerce o cualquiera) no pueda cambiar el estado del pedido y el responsable de servirlos tenga problemas para saber si el pago se ha realizado correctamente o no.
Solución? Crear una regla de Firewall
La solución pasa por crear una regla en Cloudflare para que las peticones de Redsys no pasen por su sistema de comprobación de seguridad.
Podríamos crear una regla de URL con las ‘Page Rules’ pero no podemos limitarlas por IP y eso lo hace menos seguro. Debemos crear una regla de Firewall por URL y también por ASN.
Como vemos en la captura anterior, el ASN de Redsys / Sermepa es 31627. La regla de Firewall quedaría de esta manera:
Igualmente, tras hacer este cambio, es indispensable que hagas una nueva prueba de compra para asegurar que funciona. Duda siempre de todo, incluso de este post. Aprende qué significa crear esta regla y todo lo que conlleva. Puede que me funcione a mi pero no a ti. Puede que funcione hoy y no mañana. Que cambie el ASN de Redsys. Mil cosas para que todo vuelva a fallar.
Bienvenidos al fantástimo mundo de los eCommerce 😉