Configurar Redsys, Woocommerce, CloudFlare: pedidos pendientes de pago

Probablemente tengas el problema de “Pedidos pendientes de pago” de Woocommerce cuando estés utilizando el plugin de Redsys.

Simplemente 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

He instalado un certificado SSL gratis desde mi panel (cPanel) en mi caso: cPanel free SSL Comodo (pero puedes utilizar también uno de Let’s Encrypt).
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)

Yo me he encontrado con dos errores:

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 Let’s Encrypt 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.

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.222195.76.9.187195.76.9.182193.16.243.33

 

Problema solucionado 😉