Configurar una pasarela de pago en una e-commerce de WordPress es muy sencillo, pero la opción de la TPV de Redsys en Woocommerce con un hosting compartido puede complicarse, debemos tomar medidas para que al pagar con tarjeta el estado del pedido sea el adecuado y lo recibamos correctamente en nuestro correo.
Configurar la pasarela virtual Redsys en Woocommerce
Seguro que si estás aquí es porque has tenido el mismo problema que yo con la TPV de Redsys en Woocommerce con un hosting compartido. No recibimos el pedido correctamente porque el estado, en la administración de la tienda, no cambia. Por eso Woocommerce no envía el email.
Para realizar este tutorial he utilizado los siguientes recursos, pero cumpliendo las normas que indico en el artículo podéis utilizar los que mejor se adapten a vuestras posibilidades:
- Alojamiento: Siteground, Hosting que utilizo para todas mis webs en producción. También funciona perfectamente en Hostgator, que es donde alojo las webs que lanzo nuevas.
- Certificado SSL: Gratuito con el hosting, Let’s Encrypt.
- Plugins: Woocommerce para crear la tienda online en WordPress. Really Simple SSL para forzar HTTPS en el archivo .htaccess y corregir el contenido mixto. iThemes como plugin de seguridad. Woocommerce Redsys Lite para pagar con tarjeta de crédito.
- Tema: Divi de Elegant Themes, para mí el mejor tema premium para Woocommerce que permite configurar la tienda con módulos.
El problema con Redsys en WordPress
Es difícil resolver un problema cuando la compañía que ofrece el servicio de la pasarela de pago no ofrece lo que el cliente demanda.
He leído muchos artículos donde decían que se estaban poniendo las pilas para adaptarse a la situación actual, pero la verdad es que sigue dando problemas.
Cuando Redsys empezó a ofrecer los servicios de pago virtual online, sólo se podía instalar en webs que tuvieran una IP dedicada, condición indispensable también para disponer de un certificado digital.
Pero los tiempos cambian y hoy día es posible tener una tienda en un hosting compartido (donde es posible que la misma IP sea compartida por varios usuarios), con un certificado digital (obligatorio) y ofrecer los mismos servicios que antes sólo permitía una IP dedicada.
He aquí el principal problema, Redsys sólo envía peticiones a través del protocolo HTTP en los hostings compartidos porque no entiende que pueda disponer de un certificado HTTPS.
Redsys no ha conseguido adaptarse a este cambio, y si tienes un hosting compartido con un certificado digital como «Let’s Encrypt«, «Comodo» u otros, no se comunicará con tu web para indicar el estado del pedido.
Condiciones para instalar Redsys en Woocommerce con un hosting compartido
Partiendo de la obligatoriedad de disponer de un certificado de seguridad SSL y de tener instalado el plugin Woocommerce, es necesario configurar varias cosas para conseguir que funcione la pasarela de pago correctamente.
Desactivar «Forzar HTTPS» de las opciones del hosting
Si ya tienes tu tienda preparada con todo configurado, es posible que este primer método no te funcione, ya que exige disponer de un hosting con las prestaciones adecuadas para poder desactivar la opción de «Forzar HTTPS«.
Si tu hosting tiene esta opción bloqueada, te recomiendo que cambies de servidor, como el que yo uso de SiteGround, para instalar Redsys en Woocommerce con un hosting compartido correctamente.

Si no puedes permitírtelo en estos momentos, al final del vídeo explico un apaño para poder recibir los correos de Woocommerce cada vez que tenemos un pedido y que el estado del pedido cambie correctamente.
Tener desactivada la redirección HTTPS con esta opción no tiene porque interferir en el certificado de seguridad si tenemos bien configurada la web.
Configurar HTTPS a través de .htaccess
Al desactivar la opción del hosting podemos tener problemas con algunas URLs de nuestra web que no están cambiadas de forma manual.
Para solucionarlo utilizamos el archivo .htaccess para forzar la redirección de todas las URLs a través de HTPPS.
Si estás acostumbrado a editar los archivos de la web no tendrás problema alguno en añadir este código en el archivo:
1 2 3 4 5 | # FORZAR REDIRECCIÓN CERTIFICADO SSL RewriteEngine On RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # FIN REDIRECCIÓN |
Además, deberás asegurarte que WordPress no está forzando esta redirección ni está configurada esta opción con ningún otro plugin que tengas instalado.
Configurar HTTPS a través de Really Simple SSL
Si te encuentras más cómodo utilizando un plugin, puedes utilizar el mejor complemento hasta el momento que es Really Simple SSL.

En las opciones del plugin, para que funcione Redsys en Woocommerce con un hosting compartido, tienes que desactivar la opción de redirección 301 de WordPress y activar la redirección 301 de .htaccess.
Si no vas a usar la TPV virtual de Redsys puedes tener activas las dos opciones anteriores.
Configurar las opciones de seguridad
Si tienes un plugin de seguridad como iThemes para proteger tu web, es posible que estés bloqueando algunas funciones de la pasarela de pago sin saberlo.
Como indiqué más arriba, la función SSL tiene que estar desactivada, pero además tienes que desmarcar lo siguiente:
Dentro de los «Usuarios baneados», hay que dejar desactivada cualquier opción que incluya conectarse con alguna lista negra, ya que pueden bloquearnos el acceso a través de HTTP a la pasarela de pago.

Dentro de los ajustes del sistema desmarcamos, si están marcadas, las opciones de «Cadenas de consultas sospechosas» que puede impedir que los pedidos se marquen como pagados, y las «Cadenas de URL largas».

Instalar la pasarela de pago con tarjeta a través de Redsys
El proceso para que el banco proporcione las claves necesarias para activar el servicio suele ser muy lento. Varias semanas concretamente, pero esto no impide que podamos realizar las configuraciones necesarias para ir avanzando.
Como he dicho al principio, el complemento oficial de Redsys está pensado ahora mismo para usarse con IP dedicadas y certificados homologados por ellos, espero que esto cambie algún día para facilitarnos la vida.
Así que, si lo usas y tienes suerte puede funcionar o no, lo más lógico es que te acabe dando algún problema.
Instalar el plugin de Woocommerce Redsys
Woocommerce dispone de su propio plugin para configurar la pasarela de pago para pagar con tarjeta de crédito y, además, el creador del plugin ofrece en el repositorio de WordPress una versión «Lite» con las opciones necesarias para que funcione bajo los ajustes que hemos realizado.
Así que vamos a instalar «Woocommerce Redsys Gateway Light» en nuestra web.

Este plugin, permite de una vez, configurar el pago con tarjeta de crédito y Bizum con los mismos datos que nos proporcione el banco para configurar la TPV virtual.
Una vez instalado y activado en WordPress, vamos a los ajustes de Woocommerce y al apartado de «Pagos» para configurar las opciones de Redsys.

En un principio, y hasta que comprobemos que funciona y tengamos los datos del banco para su uso en modo producción, usaremos el «Entorno de pruebas», que viene activado por defecto al final de las opciones.
La información para añadir a los campos de configuración en prueba los encontramos en la página de Redsys en el apartado «Desarrolladores». Te los dejo aquí para que los tengas más a mano:
- Número de comercio (FUC): 999008881
- Número de terminal: 001
- Clave secreta SHA256 (en pruebas): sq7HjrUOBfKmC576ILgskD5srU870gJ7
Además de estos datos debemos marcar las casillas «Enable PSD2» y «Compatibilidad HTTPS SNI».
El resto de opciones las podemos dejar como están. Puedes modificar el texto que aparece a la hora de pagar si te apetece, pero para las pruebas el que viene por defecto es suficiente.

Añadir excepción en el archivo .htaccess
Ahora si que nos toca editar el archivo del servidor queramos o no. Hay que añadir una regla para que el plugin consiga funcionar a la perfección con Redsys en Woocommerce con un hosting compartido.
Al código que añadimos para forzar el certificado SSL para que la web funcionara siempre la web bajo HTTPS (de forma manual o a través del plugin Really Simple SSL), hay que añadir una línea de código para que Redsys pueda comunicarse con nuestro sitio.
1 | RewriteCond %{QUERY_STRING} !^wc-api=WC_Gateway_(.*)redsys |
Si hemos utilizado el plugin «Really Simple SSL», debemos eliminar las líneas que hacen que el plugin modifique el código y después marcar la pestaña «Dejar de editar el archivo .htaccess», dentro de las opciones del plugin.
El código resultante sería el siguiente:
1 2 3 4 5 6 | # FORZAR REDIRECCIÓN CERTIFICADO SSL con Redsys RewriteEngine On RewriteCond %{QUERY_STRING} !^wc-api=WC_Gateway_(.*)redsys RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # FIN REDIRECCIÓN |
Otras configuraciones
Como no todas las páginas o sitios webs son iguales y cada uno tenemos nuestras preferencias a la hora de utilizar los plugins o configurarlas, es posible que necesitemos realizar alguna acción más para que esto funcione.
Hay que vigilar aspectos como posibles firewalls que puedan bloquear las peticiones de Redsys, o la utilización de centros de datos como Cloud Flare.
En este enlace podéis encontrar soluciones que pueden adaptarse a vuestra situación concreta. Espero que os funcione.
Prueba de funcionamiento con tarjetas simuladas en Redsys
En el mismo enlace donde encontramos los datos para configurar el entorno de pruebas, podemos utilizar una serie de tarjetas de crédito que nos permitirán ver si todo el proceso de compra funciona correctamente.
Aquí os dejo un par de ellas y el teléfono para el test con Bizum para quien le interese.
Tarjeta para una compra correcta
- Número de tarjeta: 4918019199883839
- Caducidad: 12/32
- Código CVV2: 123
Tarjeta para compra con error:
- Número de tarjeta: 4907271141151707
- Caducidad: 12/32
Datos para probar BIZUM (pruebas correctas con precios menores a 15 euros)
Teléfono Bizum: 700000000
Clave Bizum: 1234
Código SMS: 12345678

Si todo funciona estaréis recibiendo los correos de los pedidos y veréis que los estados de los pedidos se ajustan a las operaciones de los clientes.
Configuración en la administración de la pasarela de pago Redsys
Este paso sólo se puede realizar cuando el banco os envíe los datos para la conexión con la TPV en producción.
La forma de controlar los pagos, o hacer devoluciones en caso de necesitarlo, es accediendo a la administración de la pasarela de pago de Redsys en la dirección web que os envíe el banco.
Para sincronizar la comunicación entre Redsys y nuestra web hay que acceder a las opciones del comercio y modificar los siguientes campos:
- Notificación online: (HTTP + Email Comercio) -> Email Entidad
- Sincronización: Síncrona
- URL OK: Vacío
- URL KO: Vacío
- Enviar parámetros en las URLs: No

Para tener terminada la configuración en producción, el banco nos exige realizar una operación correcta y otra fallida con las tarjetas de prueba. También realizar una prueba con una tarjeta real con una operación correcta que luego podemos revertir con una devolución.
Cambiar estado del pedido a través de la página de agradecimiento utilizando Redsys en Woocommerce con un hosting compartido
Si lo anteriormente explicado no funciona, seguramente vuestra web sea incompatible para poder comunicarse con Redsys y recibir los cambios de estado de los pedidos.
Esto no quiere decir que no funcione el pago con tarjeta de crédito, sólo que tendréis que estar más pendientes y comprobar los pagos desde la administración de Redsys, ya que no recibiréis los correos de los pedidos.
Para evitar esto y, al menos, recibir el correo de un pedido cuando se ha tramitado correctamente, podemos añadir una función especial en la página de agradecimiento para que sea Woocommerce quien cambie el estado del pedido en lugar de Redsys.
No es la mejor solución, pero al menos sabremos cuando alguien ha realizado un pago con tarjeta correctamente.
Para este proceso necesitamos crear un tema hijo o configurar un plugin personalizado donde colocar el código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /** * Autocompleta los pedidos pendientes de pago */ add_action( 'woocommerce_thankyou', 'letsgo_auto_processing_orders'); function letsgo_auto_processing_orders( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); //ID’s de las pasarelas de pago a las que afecta $paymentMethods = array( 'redsys' , 'bizumredsys'); if ( !in_array( $order->payment_method, $paymentMethods ) ) return; // If order is "pending" update status to "processing" if( $order->has_status( 'pending' ) ) { $order->update_status( 'processing' ); } } |
Dentro del tema hijo pegamos el código dentro del archivo «funtions.php» o en el plugin de funciones personalizadas.
Para que funcione el código hay que colocar el nombre correcto de cada pasarela de pago, en este caso está configurado para funcionar con el plugin Woocommerce Redsys Lite.
Si utilizas otro plugin tendrás que cambiar o añadir las pasarelas de pago a las que quieres que afecte el cambio.
Para ver como se llama la pasarela de pago que quieres utilizar tienes que editar la configuración de esta desde los ajustes de Woocommerce y fijarte en la URL del navegador. Al final aparecerá el nombre que tienes que utilizar.

Descargo de responsabilidad: Existe una relación publicitaria con Elegant Themes, Siteground y Hostgator por la que ganaremos una pequeña comisión si adquiere el producto por medio de los enlaces de esta página. Gracias a ello podemos ofrecerle ofertas como estas, a usted no le supone ninguna carga adicional económica ni compromiso alguno y a mí me sirve para tomarme un café.
Hola Juan :
Me salvaste la vida y las navidades!!
Estuve buscando soluciones al problema de redsys y woocomerce (Todos los pedidos en pendiente de pago) y mi hosting tiene deshabilitado .htaccess a partir de la version PHP 7.4
Utilizo Let’s Encrypt. y cloud Flare
Revise cientos de webs y por todos los medios busque opciones para solucionarlo , hasta que encontré tu pagina y el código «para que sea Woocommerce quien cambie el estado del pedido en lugar de Redsys.»
Una solución de lo más creativa, la única que ha funcionado y me ha ahorrado muchísimas mas horas de trabajo .
La información con el código y siguiendo el video paso a paso para crear el plugin , me llevaron a poder solucionarlo en menos de 10 minutos
En plena campaña de Black Friday y estando próximas las navidades no puedo estar más agradecido!!
Gracias
Carlos, Gracias a ti por el comentario
Como la mayoría de la gente, yo también me encontré en esa situación, y cuando encontré la solución me pareció oportuno dejarlo en un artículo para que cualquiera pudiera solucionarlo.