Ir al contenido

Subscriptions

El módulo de suscripciones añade productos con pagos recurrentes. Los clientes compran suscripciones con renovación manual, y el administrador las gestiona en WooCommerce.

  1. El administrador crea un tipo de producto “Suscripción” con un ciclo y un precio
  2. El cliente compra una suscripción y paga el primer pedido
  3. El plugin crea una suscripción con el estado “Activa”
  4. Antes de la fecha de renovación, el cliente recibe un correo de recordatorio
  5. En la fecha de renovación, el plugin crea un pedido de renovación
  6. El cliente paga el pedido de renovación (renovación manual)
  7. El ciclo se repite hasta que se cancela la suscripción

Desde Polski PRO 1.22.0 las suscripciones tienen su propia fila en Polski > Módulos (clave de módulo subscriptions). Ahí se activa el módulo y en esa misma fila se establecen los valores de toda la tienda; al guardar se escriben en la opción polski_subscriptions. El módulo se entrega apagado.

La fila no muestra todas las claves que lee el módulo. Lo que falte se puede seguir estableciendo directamente en la opción, por ejemplo con WP-CLI:

Ventana de terminal
wp option patch update polski_subscriptions reminder_first_days 10

Los valores por producto (si un producto es o no una suscripción, y su ciclo) están en la pestaña Polski Pro del editor de productos, consulte Per-product settings.

Clave Por defecto Descripción
show_on_single true Mostrar las opciones de suscripción en la página de producto
reminder_first_days 14 Días antes de la renovación para el primer recordatorio
reminder_second_days 7 Días antes de la renovación para el segundo recordatorio
allow_cancellation true Permitir que el cliente cancele desde Mi cuenta
allow_pause true Permitir que el cliente pause y reanude desde Mi cuenta
show_in_account / account_label true / Suscripciones Sección de Mi cuenta con las suscripciones
date_format d.m.Y Formato de fecha en los textos para el cliente

Los correos de recordatorio y de renovación, los nombres de estado y el texto del ciclo tienen cada uno su clave (reminder_subject, renewal_intro_text, status_paused, etc.). Los valores por defecto están en Polski\Pro\Service\SubscriptionService. Los recordatorios y los pedidos de renovación se ejecutan en el evento cron polski_daily_maintenance.

  1. Vaya a Productos > Añadir nuevo
  2. Seleccione el tipo de producto: Suscripción
  3. Configure el precio y el ciclo:
Campo Descripción
Precio de la suscripción Importe por periodo de facturación
Periodo de facturación Día / Semana / Mes / Año
Duración del periodo Número de periodos (p. ej. 1 mes, 3 meses)
Precio inicial Opcional - precio distinto para el primer periodo
Cuota de activación Opcional - cuota única en el primer pedido
Límite de renovaciones 0 = sin límite, o número de renovaciones
  1. Publique el producto

Precio inicial frente a precio de renovación

Sección titulada «Precio inicial frente a precio de renovación»

El plugin admite escenarios en los que el precio del primer periodo difiere del precio de los periodos siguientes. Casos de uso habituales:

  • periodo de prueba gratuito o de prueba a precio reducido
  • precio promocional de introducción
  • cuota de activación + precio recurrente más bajo

El precio inicial se aplica únicamente al primer pedido. Los pedidos de renovación posteriores utilizan el precio estándar de la suscripción.

Pending -> Active -> On Hold -> Active -> ...
-> Expired
-> Cancelled
Estado Descripción
Pending A la espera del pago del primer pedido
Active Activa - el cliente tiene acceso al producto
On Hold Suspendida - el pedido de renovación está a la espera de pago
Expired Caducada - el número de renovaciones alcanzó el límite o transcurrió el periodo de gracia
Cancelled Cancelada por el cliente o el administrador

En la versión actual, el plugin admite renovaciones manuales. Esto significa que:

  1. El plugin crea un pedido de renovación con el estado “Pago pendiente”
  2. El cliente recibe un correo con un enlace para pagar el pedido
  3. El cliente paga el pedido con el método de pago que elija
  4. Tras el pago, la suscripción se renueva por el siguiente periodo

El plugin comprueba a diario las suscripciones pendientes de renovación mediante WP-Cron:

polski_daily_maintenance

La tarea cron se ejecuta una vez al día y realiza lo siguiente:

  • comprobar las suscripciones cuya fecha de renovación es hoy o anterior
  • crear pedidos de renovación para las suscripciones que requieren renovación
  • suspender las suscripciones que han superado el periodo de gracia
  • caducar las suscripciones que han alcanzado el límite de renovaciones

El plugin envía recordatorios por correo antes de la fecha de renovación:

Correo Cuándo Contenido
Recordatorio de renovación X días antes de la renovación Información sobre la próxima renovación, importe, enlace al área
Pedido de renovación En la fecha de renovación Pedido a pagar con enlace de pago
Suscripción suspendida Tras vencer el plazo de pago Información sobre la suspensión, enlace para pagar
Suscripción caducada Tras finalizar el periodo de gracia Información sobre la caducidad, enlace para volver a comprar

Las plantillas de correo pueden personalizarse en WooCommerce > Ajustes > Correos electrónicos.

El módulo añade un endpoint /polski-subscriptions al área Mi cuenta del cliente. El endpoint está disponible en:

/moje-konto/polski-subscriptions/

El cliente ve una tabla con las suscripciones:

Columna Descripción
Producto Nombre del producto de suscripción
Estado Estado actual de la suscripción
Precio Importe por periodo
Próxima renovación Fecha de la próxima renovación
Acciones Cancelar / Pagar renovación

Tras hacer clic en una suscripción, el cliente ve:

  • los datos completos de la suscripción (producto, precio, ciclo, fechas)
  • el historial de renovaciones (lista de pedidos asociados)
  • el botón para cancelar la suscripción
  • el botón para pagar una renovación pendiente (si corresponde)

El cliente puede cancelar una suscripción activa desde el área Mi cuenta. La cancelación:

  • cambia el estado de la suscripción a “Cancelled”
  • la suscripción permanece activa hasta el final del periodo pagado en curso
  • se informa al cliente de la fecha de finalización del acceso

Acción que se dispara tras un cambio de estado de la suscripción.

/**
* @param int $subscription_id ID subskrypcji
* @param string $new_status Nowy status
* @param string $old_status Poprzedni status
*/
do_action('polski_pro/subscription/status_changed', int $subscription_id, string $new_status, string $old_status);

Ejemplo:

add_action('polski_pro/subscription/status_changed', function (int $subscription_id, string $new_status, string $old_status): void {
if ($new_status === 'cancelled') {
$subscription = polski_pro_get_subscription($subscription_id);
// Wysłanie ankiety o powód rezygnacji
wp_mail(
$subscription->get_customer_email(),
'Szkoda, że odchodzisz',
'Powiedz nam, dlaczego anulujesz subskrypcję: https://example.com/ankieta'
);
}
}, 10, 3);

Acción que se dispara tras crear un pedido de renovación.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_created', int $order_id, int $subscription_id);

Ejemplo:

add_action('polski_pro/subscription/renewal_created', function (int $order_id, int $subscription_id): void {
$order = wc_get_order($order_id);
$order->add_order_note(
sprintf('Zamówienie odnowienia dla subskrypcji #%d', $subscription_id)
);
}, 10, 2);

Acción que se dispara tras pagar un pedido de renovación.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_paid', int $order_id, int $subscription_id);

Hooks de recordatorio de renovación (1.8.2+)

Sección titulada «Hooks de recordatorio de renovación (1.8.2+)»

El motor de recordatorios (14 + 7 días antes de la renovación por defecto) expone filtros y acciones:

// Customise windows (days before renewal)
add_filter('polski_subscription_reminder_windows', fn ($w) => ['first' => 21, 'second' => 7, 'last' => 1]);
// Subject / body / headers filters
add_filter('polski_subscription_reminder_subject', fn ($s, $sub, $type) => "[$type] $s", 10, 3);
add_filter('polski_subscription_reminder_body', fn ($b, $sub, $type) => $b . "\n\nThanks!", 10, 3);
add_filter('polski_subscription_reminder_headers', fn () => ['Content-Type: text/html; charset=UTF-8']);
// Skip a specific subscription
add_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
// Observe dispatch
add_action('polski_subscription_reminder_sent', fn ($sub, $type, $days) => null, 10, 3);
add_action('polski_subscription_reminder_failed', fn ($sub, $type) => null, 10, 2);

SubscriptionRepository::updateRecurringAmount() detecta un cambio de importe y envía un correo al cliente con el precio anterior/nuevo, la próxima fecha de facturación efectiva y un enlace de cancelación con un solo clic (requisito de protección al consumidor de la UE).

add_action('polski_subscription_amount_changed', function (int $id, float $prev, float $next) {
error_log("Subscription $id: $prev -> $next");
}, 10, 3);
add_filter('polski_subscription_amount_change_body', fn ($body, $sub, $prev, $next) => $body, 10, 4);
add_action('polski_subscription_amount_change_notified', fn ($sub, $prev, $next, $sent) => null, 10, 4);

Vaya a WooCommerce > Suscripciones. La tabla contiene:

  • ID de la suscripción
  • cliente (nombre, apellidos, correo)
  • producto
  • estado
  • precio y ciclo
  • fecha de la próxima renovación
  • fecha de creación

Filtros disponibles: estado, producto, fecha de creación.

El administrador puede:

  • cambiar el estado de la suscripción
  • cambiar la fecha de la próxima renovación
  • cambiar el precio (afecta a las renovaciones posteriores)
  • añadir una nota
  • consultar el historial de estados y los pedidos asociados
  1. Compruebe si WP-Cron funciona correctamente (se está llamando a wp_cron)
  2. Vaya a Herramientas > Scheduled Actions y compruebe si la tarea polski_daily_maintenance está programada
  3. Verifique que la suscripción tenga el estado “Active” y una fecha de renovación correcta
  1. Compruebe la configuración de correos de WooCommerce
  2. Verifique que la plantilla del correo de recordatorio esté activada
  3. Compruebe el ajuste “Días de recordatorio” - si es mayor que 0

La suscripción no cambia de estado tras el pago

Sección titulada «La suscripción no cambia de estado tras el pago»
  1. Compruebe si el pedido de renovación está correctamente asociado a la suscripción
  2. Verifique los registros de WooCommerce en busca de errores
  3. Compruebe si la pasarela de pago cambia correctamente el estado del pedido
Esta página tiene únicamente carácter informativo y no constituye asesoramiento legal. Consulte a un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) proporcionado sin garantía.