Importante: no te encontrarás con este problema si utilizas un certificado de LetsEncrypt.
Esto me ha sucedido cuando he intentado usar un certificado auto-emitido por cPanel. En mi caso cPanel free SSL Comodo
.
Requerimientos de Redsys
Necesitas un certificado SSL emitido por alguna entidad aprobada por Redsys. Puedes contactar con ellos y solicitarles el archivo PDF:
«REQUERIMIENTOS DE LOS CERTIFICADOS DE SERVIDOR DE TERCEROS EMPLEADOS EN LAS CONEXIONES SEGURAS CON REDSYS» Referencia RS.RI.SEG.MAN.0004
Recuerda previamente verificar que el certificado que tengas instalado este entre los aprobados por Redsys.
Puedes realizar en este punto una compra y verificar si la notificación de Redsys te llega. Si configuraste entre las opciones de Woocommerce -> Redsys, que una vez realizado el pago el estado del pedido sea actualizado a «Procesando», entonces verás que el pedido ha cambiado su estado. Esto significa que las notificaciones de Redsys te han llegado. Puedes también verificarlo desde el propio panel de Redsys, tienes una opción de «Notificaciones» y ver el estado de la notificación (esto servirá para detectar en el caso de un error, que puede estar sucediendo)
Si utilizas un certificado auto-emitido
En mi caso he utilizado un certificado auto-emitido cPanel free SSL Comodo
y me he encontrado con dos errores:
Error 1 – «Received fatal alert: handshake_failure»
https://dominio.com/?wc-api=WC_redsys
Received fatal alert: handshake_failure
El primer error recibido, fue porque tenía un certificado SSL emitido por cPanel instalado en el servidor, pero activado CloudFlare. Lo que sucede es que cuando tenemos activado CloudFlare, este utiliza un certificado SSL compartido, por lo que Redsys no valida. Al desactivar CloudFlare me di cuenta de que este error no sucedía y las notificaciones de los pagos llegaban sin problema. Si queremos activar CloudFlare debemos comprar un certificado dedicado desde dentro de CloudFlare para nuestro dominio. Una vez dentro del dominio en CloudFlare, vamos a la opción «Crypto» y activamos en SSL la opción FULL (strict) esto hará que CloudFlare se comunique con nuestro servidor y en cada request valide con el certificado (recuerda que antes debes tener en tu servidor un certificado válido.
Lo que haremos en el siguiente paso es solicitar un certificado SSL dedicado en esa misma pantalla, en mi caso «Edge Certificates» y click al botón «Order SSL Certificate». Con el de 5 dólares mensual estaremos bien.
Una vez tenemos ambos certificados, uno a nivel de servidor (válido por Redsys) y otro a nivel de CloudFlare (también válido por Redsys) tenemos el problema resuelto.
Error 2 – «Server returned HTTP response code: 403 for URL: https://dominio.com/?wc-api=WC_redsys»
https://dominio.com/?wc-api=WC_redsys
Server returned HTTP response code: 403 for URL: https://dominio.com/?wc-api=WC_redsys
Este segundo error sucedió porque CloudFlare estaba activado en este dominio y el firewall estaba bloqueando las notificaciones. Para solucionarlo puedes ingresar a la página de CloudFlare y seleccionar el dominio en cuestión. Luego en Firewall agregas los IP’s de las notificaciones de Redsys, en mi caso, los he consultado y son: 195.76.9.222, 195.76.9.187, 195.76.9.182, 193.16.243.33
Problema solucionado 😉
Si tienes problemas o necesitas un desarrollador web para WooCommerce, recuerda que puedas contactarme.
¿NECESITAS AYUDA CON TU WEB?
HAGAMOS DESPEGAR TU NEGOCIO ONLINE 🚀
Te ayudo a potenciar tu página web o tienda online con estos servicios.
Buenas a mí me da el segundo error: Server returned HTTP response code: 403 for URL: dominio.com/?wc-api=WC_redsys.
Cómo puedo saber si mi servidor tiene Cloudflare?
Gracias
Hola Juanjo, la forma «fácil» sería consultar con tu proveedor de hosting –o servidor– si esta activado CloudFlare. La «avanzada» sería revisar las cabeceras de respuesta de tu web y verificar si existe alguna propia de las que inserta CloudFlare, si me dices la URL de tu web me puedo fijar y te comento. Un saludo.