RedSys & Bizum Gateway for Contact Form 7

Pagos recurrentes en Contact Form 7: suscripciones con RedSys, paso a paso

Hasta ahora, la integración de Contact Form 7 con RedSys solo sabía cobrar pagos únicos: el cliente rellenaba un formulario, pagaba con tarjeta y ahí terminaba la relación entre el formulario y la pasarela. Con la versión 2.0 incorporamos la novedad que más se nos ha pedido: pago recurrente mediante suscripciones, usando la tokenización de tarjeta (COF, «card on file») que ofrece RedSys.

El primer pago se procesa como siempre, pero además RedSys guarda un identificador de la tarjeta. Con ese identificador, el plugin puede volver a cobrar automáticamente en el futuro sin que el cliente tenga que introducir sus datos otra vez. A partir de ahí ya puedes montar cuotas mensuales, membresías, donaciones periódicas o cualquier cobro que se repita en el tiempo.

Ejemplo: una cuota mensual de 20 €, seis meses

Vamos a montar un caso concreto para ver cómo se configura en la práctica. Editamos el formulario de Contact Form 7 y abrimos su nueva pestaña RedSys:

  • Enable RedSys in this form: Sí.
  • Precio: 20 (también puedes poner una etiqueta de campo, por ejemplo [precio], si el importe lo elige el propio formulario).
  • Pago recurrente: activado. Al marcar la casilla aparecen los campos de periodicidad.
  • Cobrar cada: 1 mes (las unidades disponibles son días, semanas, meses y años).
  • Número de cobros: 6 (déjalo vacío o a 0 si la suscripción no debe tener fecha de fin).

Mientras rellenas estos campos, el propio formulario de ajustes te muestra un resumen en texto: «Se cobrará al cliente cada 1 mes, 6 veces en total», para confirmar de un vistazo que la configuración es la que quieres antes de guardar.

El importe que se cobrará en cada renovación es siempre el que se calculó en el primer pago: si el precio depende de un campo del formulario, ese valor queda fijado en el momento del alta y no cambia aunque el cliente edite el formulario después o tú modifiques el precio por defecto.

Un detalle que cuida los casos límite: si la suscripción se da de alta un día 31, el cobro se hace en el último día de los meses más cortos (28, 29 o 30), pero conserva el «día ancla» original, así que no se va desplazando mes a mes como pasaría con un cálculo ingenuo de «+30 días».

Qué ve el administrador en el escritorio

Dentro del menú de Contact Form 7 aparece un nuevo panel, Suscripciones RedSys, con una fila por cliente y columnas para el estado (pendiente, activa, cobro fallido, suspendida, cancelada, finalizada), el importe, la periodicidad, la fecha del próximo cobro y cuántos cobros lleva realizados sobre el total. Se puede filtrar por formulario, igual que en el listado de pagos, para aislar por ejemplo solo las altas de un formulario de socios concreto.

Al entrar en la ficha de una suscripción concreta encuentras, además de los datos de arriba:

  • El email del cliente y el formulario de origen.
  • La fecha del último cobro y la del próximo esperado (marcada en rojo si está vencido).
  • Si ha habido intentos fallidos, cuántos y cuándo será el próximo reintento.
  • Un historial completo de todos los cobros asociados: número de cobro, fecha, importe, estado y la respuesta que dio RedSys.
  • Un botón para reintentar el cobro ahora mismo cuando la suscripción está en fallida o suspendida, útil cuando el cliente te confirma que ya ha arreglado su tarjeta y no quieres esperar al siguiente reintento automático.
  • Un botón para reenviar el correo de la suscripción al cliente, por si lo ha perdido o pide de nuevo el enlace de gestión.
  • Un botón para cancelarla, con confirmación previa, también disponible como acción rápida desde el propio listado.

Los pagos individuales de una suscripción quedan agrupados dentro de ella, así que todo el historial de un cliente está en un único sitio en lugar de disperso entre pagos sueltos. Y a la inversa: el listado general de pagos incluye ahora una columna con enlace directo a la suscripción a la que pertenece cada cobro, para poder navegar en ambos sentidos.

Cómo se cobran solos: tarea programada y reintentos

Las suscripciones se cobran mediante una tarea programada de WordPress (cra_cobrar_suscripciones), que se ejecuta cada hora y revisa qué suscripciones tienen ya su próximo cobro vencido. Si un intento falla —por ejemplo, tarjeta caducada o fondos insuficientes— el plugin no lo da por perdido: reintenta a los 1, 3 y 7 días. Si los tres reintentos fallan, la suscripción pasa a estado suspendida y deja de intentarlo, avisando tanto al cliente como al administrador.

Para evitar cobros de más se aplican varias comprobaciones antes de lanzar cada cargo: que haya pasado el intervalo mínimo desde el cobro anterior, que el importe siga siendo válido y que no se haya superado el número máximo de cobros pactado; si algo no cuadra, la suscripción se detiene y se avisa al administrador en lugar de intentar cobrar igualmente. Y si por lo que sea se pierde la respuesta que da RedSys justo después de un cobro (por ejemplo, un timeout de red), la notificación posterior que envía el banco reconcilia el estado del pago, de forma que no se acaba cobrando dos veces por el mismo periodo.

Aquí hay un punto importante para sitios con poco tráfico: WordPress solo comprueba si toca ejecutar sus tareas programadas cuando alguien visita la web. Si tu web recibe pocas visitas, esa comprobación puede tardar horas en dispararse, y un retraso aquí significa directamente un cobro que no sale a tiempo. Por eso, si usas pagos recurrentes, te recomendamos sustituir el cron de WordPress por uno real del sistema operativo:

  1. Añade esta línea a tu wp-config.php, antes de la línea «That’s all, stop editing!»:
    define( 'DISABLE_WP_CRON', true );
  2. Configura una tarea programada (cron de Linux, o el planificador de tareas de tu hosting) que visite esta URL cada 5 o 15 minutos:
    https://tusitio.com/wp-cron.php

La mayoría de paneles de control (cPanel, Plesk, etc.) permiten configurar esto sin necesidad de acceso SSH; si tienes dudas, tu proveedor de hosting puede ayudarte con el paso concreto.

Lo que ve el cliente: autogestión sin necesidad de cuenta

Incorporamos el nuevo shortcode [cra_mi_suscripcion]. Basta con crear una página y añadirlo para que el cliente pueda consultar el estado de su suscripción (importe, periodicidad, próximo cobro, cobros realizados sobre el total), ver el historial completo de cargos y darse de baja él mismo, todo sin necesidad de tener una cuenta en la web: el acceso se hace mediante un enlace único y firmado, no por login.

Ese enlace se incluye automáticamente en los correos de la suscripción; solo tienes que indicar qué página lleva el shortcode en Ajustes RedSys → pestaña «Suscripciones» → «Página de gestión de suscripciones», y el plugin construye la URL con el identificador y la clave de la suscripción correspondiente cada vez que envía un correo. Si el cliente además tiene una cuenta en la web y ha iniciado sesión, esa misma página le muestra el listado de todas sus suscripciones, no solo la del último enlace recibido.

Por seguridad, la baja nunca se procesa con un simple enlace de tipo ?cancelar=1: siempre exige el envío de un formulario con confirmación explícita del navegador. Esto evita el problema clásico de que un gestor de correo o un escáner de enlaces «visite» automáticamente la URL del correo y cancele la suscripción sin que el cliente lo haya pedido.

Correos con comodines para cada momento del ciclo de vida

La nueva página «Correos RedSys» (con su propia pestaña dentro de Ajustes RedSys) reúne todos los avisos automáticos del plugin, tanto de pagos sueltos como de suscripciones, y para cada uno puedes activarlo o desactivarlo y reescribir el asunto y el cuerpo con el editor visual TinyMCE. Para las suscripciones hay cinco correos específicos al cliente:

  • Suscripción creada: se envía una sola vez, al confirmarse el alta.
  • Recibo de renovación: se envía en cada cobro posterior al primero.
  • Cobro fallido: se envía desde el segundo intento fallido en adelante, mientras queden reintentos.
  • Suscripción suspendida: se envía cuando se agotan los reintentos y se deja de cobrar.
  • Suscripción cancelada: se envía tanto si cancela el cliente como si lo hace el administrador desde el escritorio.

El cuerpo por defecto del correo de alta, por ejemplo, ya viene con esta plantilla orientativa:

Gracias por suscribirte.

Importe: [importe]
Periodicidad: [periodicidad]
Próximo cobro: [proximo_cobro]

Puedes cancelarla cuando quieras desde este enlace: [enlace_gestion]

Los comodines disponibles para estos correos son [importe], [suscripcion_id], [suscripcion_titulo], [periodicidad], [proximo_cobro], [numero_cobro], [total_cobros], [enlace_gestion] y, en el correo de fallo, también [error] con el motivo que ha dado RedSys. El plugin también avisa al administrador (correos separados para cobro fallido, suspensión y para el caso en que RedSys no devuelva identificador de tarjeta al hacer el primer cobro), y ese aviso de cobros correctos recurrentes se puede desactivar de forma independiente para no recibir un correo por cada cuota que se cobra sin incidencias.

Además, el correo de renovación puede tener un texto distinto al de la primera compra: no es raro querer agradecer efusivamente el alta y, en cambio, mantener el recibo de las siguientes cuotas más breve y funcional.

Resumen

Con esta actualización, Contact Form 7 – Integración con RedSys pasa de gestionar pagos puntuales a gestionar suscripciones completas: alta con tokenización de tarjeta, cobros automáticos con reintentos y comprobaciones de seguridad, gestión detallada desde el escritorio de WordPress (incluyendo reintento y cancelación manual), autogestión del cliente sin necesidad de cuenta, y correos personalizables con comodines para cada paso del ciclo de vida de la suscripción.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

Integración Ceca en WordPress sin errores

Prepara tu integración Ceca en WordPress para WooCommerce, formularios y reservas con pruebas, seguridad y…

hace % días

Cuotas personalizadas con RedSys

El pago fraccionado de RedSys para WooCommerce lleva un tiempo permitiendo dividir el precio de…

hace % días

Cómo añadir CECA a GiveWP para cobrar donaciones

Aprende a añadir CECA a GiveWP, configurar credenciales y validar pagos para aceptar donaciones con…

hace % días

Cobros con formularios WordPress: cómo elegir

Configura cobros con formularios WordPress y conecta RedSys, Bizum o Ceca según tu plugin, tipo…

hace % días

Contact Form 7 – Integración con RedSys ya habla catalán, gallego y euskera

Ya está disponible la versión 1.24 de Contact Form 7 - Integración con RedSys, y…

hace % días

Bizum vs tarjeta en formularios WordPress

Bizum vs tarjeta en formularios WordPress: compara conversión, costes, seguridad y compatibilidad para elegir el…

hace % días