Saltar al contenido principal

Configuración del Cron Job

Order Payment Reminders Pro no envía correos por sí solo — necesita una llamada externa recurrente (un cron job) para activar el motor de recordatorios.

nota

Disponible desde la v1.0.0

Sin un cron job funcionando correctamente, no se enviarán correos de recordatorio, los pedidos no se cancelarán automáticamente y el resumen para el administrador nunca llegará.

Descripción general

Cada vez que se llama a la URL del cron, el módulo recorre todos los pedidos pendientes de pago y decide qué hacer:

  • Enviar correos de recordatorio — Para cada pedido que ha alcanzado la hora programada para su próximo recordatorio, el módulo envía el correo configurado.
  • Cancelar pedidos vencidos — Si la cancelación automática está activada y un pedido ha superado el plazo de cancelación configurado, el estado del pedido cambia a Cancelado y se restaura el stock.
  • Enviar el resumen al administrador — Si la función de Correo Resumen del Administrador está activada, el módulo envía un resumen de los pedidos que se acercan a su plazo de cancelación. Esta acción está limitada a una vez al día, independientemente de la frecuencia con que se ejecute el cron.

Las tres acciones ocurren en una sola llamada al cron. No es necesario configurar entradas de cron separadas para cada función.

El endpoint del cron está protegido por una clave secreta. Las llamadas sin una clave válida devuelven una respuesta 403 Forbidden y registran un aviso de acceso no autorizado. Ningún correo se envía nunca desde una solicitud no autorizada.

Configuración

Con qué frecuencia ejecutar el Cron

Una vez al día a una hora fija es el requisito mínimo y funciona bien para la mayoría de las tiendas. Ejecútalo una vez al día en un horario que tenga sentido para tus clientes — por la mañana temprano (por ejemplo, a las 09:00) significa que los recordatorios llegan durante el horario comercial.

Cada hora es mejor cuando se utilizan horarios de recordatorio basados en horas (por ejemplo, "enviar un recordatorio 12 horas después del pedido"). Si todos los recordatorios son por días, las ejecuciones horarias son innecesarias pero no causan ningún problema.

Más de una vez por hora no es nunca necesario. El módulo registra qué recordatorios ya se han enviado y no los duplicará.

Paso 1 — Encontrar la URL del Cron en el Back Office

Tu URL de cron única y protegida se muestra directamente en la configuración del módulo.

  1. Ve a Módulos > Gestor de módulos, busca Order Payment Reminders Pro y haz clic en Configurar.
  2. Haz clic en la pestaña Cron Jobs en la navegación del módulo.
  3. Busca la línea URL check and send the emails is:. Ahí se muestra la URL completa.

Copia esta URL. La pegarás en tu configuración de cron en los pasos siguientes.

El valor key= es un token hexadecimal de 32 caracteres generado cuando el módulo se instala por primera vez y almacenado en tu base de datos. Es único para tu tienda. Nunca lo compartas públicamente ni lo incluyas en un sistema de control de versiones.

El formato de la URL depende de tu configuración de URL amigables

El módulo muestra automáticamente el formato de URL correcto para tu tienda. Existen dos formas:

Forma con URL amigable (cuando las URL amigables están activadas en Parámetros de la tienda > Tráfico y SEO > SEO y URLs):

https://tutienda.com/wiretransferreminder/cron?key=a1b2c3d4e5f6...

Forma estándar (cuando las URL amigables están desactivadas):

https://tutienda.com/index.php?fc=module&module=wiretransferreminder&controller=cron&key=a1b2c3d4e5f6...

Ambas formas funcionan de manera idéntica. Copia siempre la URL exactamente como la muestra el módulo — el módulo selecciona automáticamente el formato correcto para tu tienda. La forma con URL amigable se introdujo en la v1.3.1 a través del hook moduleRoutes.

Paso 2 — Elegir el método de configuración

Usa el método que soporte tu entorno de alojamiento. Solo necesitas uno.

  • Cron Jobs de cPanel — disponible en la mayoría de hostings compartidos (cPanel, Plesk)
  • crontab de Linux — disponible cuando tienes acceso SSH al servidor
  • PrestaShop Cron Tasks Manager — disponible como módulo gratuito en tiendas PrestaShop 1.6

Opción A — Cron Jobs de cPanel

  1. Inicia sesión en tu cPanel y abre Cron Jobs.
  2. En Agregar nuevo Cron Job, establece la frecuencia. Para diariamente a las 09:00:
    • Minuto: 0
    • Hora: 9
    • Día: *
    • Mes: *
    • Día de la semana: *
  3. En el campo Comando, pega:
curl -s -o /dev/null "https://tutienda.com/wiretransferreminder/cron?key=TU_CLAVE_AQUI"

Reemplaza la URL con la URL completa que copiaste del Back Office.

  1. Haz clic en Agregar nuevo Cron Job.

Para una programación horaria, establece el Minuto en 0 y la Hora en *.


Opción B — crontab de Linux (SSH)

  1. Conéctate a tu servidor mediante SSH.
  2. Abre el editor de crontab:
crontab -e
  1. Añade una de las siguientes líneas al final del archivo.

Diariamente a las 09:00:

0 9 * * * curl -s -o /dev/null "https://tutienda.com/wiretransferreminder/cron?key=TU_CLAVE_AQUI"

Cada hora en punto:

0 * * * * curl -s -o /dev/null "https://tutienda.com/wiretransferreminder/cron?key=TU_CLAVE_AQUI"

Cada 3 horas (0:00, 3:00, 6:00, 9:00 ...):

0 */3 * * * curl -s -o /dev/null "https://tutienda.com/wiretransferreminder/cron?key=TU_CLAVE_AQUI"
  1. Guarda y cierra el editor. El demonio cron tomará el cambio inmediatamente.

El parámetro -s suprime la salida de progreso de curl. El parámetro -o /dev/null descarta el cuerpo de la respuesta (que de otro modo acabaría en tu buzón de correo). Si quieres registrar la salida para depuración, reemplaza -o /dev/null por -o /ruta/a/wr-cron.log.

En algunos servidores, curl puede no estar en el PATH predeterminado para cron. Si el trabajo no se ejecuta, usa la ruta completa: ejecuta which curl en tu sesión SSH para encontrarla (habitualmente /usr/bin/curl).


Opción C — PrestaShop Cron Tasks Manager (solo PS 1.6)

El módulo gratuito Cron Tasks Manager (disponible en el Marketplace de Addons) proporciona un programador de cron en el navegador que funciona sin acceso a nivel de servidor. Se muestra en la pestaña Cron Jobs para tiendas PrestaShop 1.6.

  1. Instala y configura Cron Tasks Manager si aún no lo has hecho.
  2. En Cron Tasks Manager, haz clic en Agregar nueva tarea.
  3. Introduce una descripción como Order Payment Reminders Pro.
  4. Pega tu URL del cron en el campo URL del script.
  5. Establece la frecuencia de la tarea en una vez al día (o una vez por hora).
  6. Guarda.

Este método depende del tráfico de clientes para activar el cron. En tiendas con poco tráfico puede no dispararse a horas predecibles. Para una entrega fiable, es preferible la Opción A o la Opción B.


Configuraciones que afectan a lo que hace el Cron

Estas configuraciones en Configurar > Configuración Global determinan qué hace cada ejecución del cron. No forman parte de la configuración de la URL del cron en sí.

ConfiguraciónDónde encontrarlaEfecto durante el cron
Activate Cancel Orders FeaturePestaña Configuración GlobalActiva la cancelación automática de pedidos cuando superan el plazo
Cancel Order after (days)Pestaña Configuración GlobalNúmero de días tras los cuales se cancela un pedido impagado; 0 desactiva la cancelación
Admin Digest EmailPestaña Configuración GlobalActiva el correo resumen diario al administrador de la tienda
Digest EmailPestaña Configuración GlobalDirección de destinatario para el resumen del administrador; por defecto es el correo de la tienda
Alert Before Cancellation (hours)Pestaña Configuración GlobalLos pedidos que estén dentro de este número de horas antes de su cancelación se incluyen en el resumen; por defecto 24
Test ModePestaña Configuración GlobalCuando está activado, envía todos los correos a la dirección de prueba en lugar de a los clientes reales

Cómo funciona

Cuando se llama a la URL del cron con una clave válida, el módulo ejecuta los siguientes pasos en orden:

  1. Valida la clave — Compara el parámetro ?key= con el valor almacenado wr_cron_key. Si no coinciden, la solicitud se rechaza con una respuesta 403 Forbidden y se registra. También se comprueba el parámetro heredado ?token= para compatibilidad con versiones anteriores.
  2. Consulta los pedidos impagados — Obtiene todos los pedidos con estado de pago pendiente para los módulos de pago que hayas configurado.
  3. Envía el resumen al administrador (si está activado) — Comprueba si ya se ha enviado un resumen hoy. Si no es así, envía uno y registra la fecha para no volver a enviarlo hasta el día siguiente, independientemente de la frecuencia con que se ejecute el cron.
  4. Procesa cada pedido — Para cada pedido impagado:
    • Si el pedido ha superado el plazo global de cancelación, se cancela y se restaura el stock (a menos que el Modo de Prueba esté activado).
    • En caso contrario, el módulo comprueba si el pedido debe recibir su próximo recordatorio programado y, si es así, envía el correo.

El módulo registra un resumen tras cada ejecución. Puedes encontrarlo en Parámetros Avanzados > Registros filtrando por WireTransferReminder.

Seguridad: parámetro key= vs token=

El módulo acepta dos nombres de parámetro para la autenticación:

ParámetroEstadoCuándo usarlo
?key=TU_CLAVEActual — preferidoTodas las nuevas entradas de cron
?token=TOKEN_HEREDADOHeredado — aún compatibleEntradas de cron existentes de versiones anteriores a la 1.2.0

El valor key= es un token hexadecimal estático de 32 caracteres almacenado en la base de datos (wr_cron_key). Se genera una vez en la instalación y no cambia a menos que desinstales y reinstales el módulo.

El parámetro heredado ?token= utilizaba un token de administrador basado en sesión que podía cambiar con cada actualización de versión de PrestaShop o modificación de usuario administrador. Si tienes una entrada de cron antigua que usa ?token=, seguirá funcionando, pero se recomienda actualizarla a ?key= para mayor fiabilidad a largo plazo. Para obtener una URL nueva basada en ?key= en cualquier momento, ve a Configurar > Cron Jobs en el Back Office.

Ejemplos de uso

Ejemplo: Recordatorios diarios para una tienda de transferencia bancaria

Vendes productos en los que los clientes pagan por transferencia bancaria. Configura un cron para ejecutarse diariamente a las 09:00. Tu secuencia de recordatorios es: día 3, día 5, día 7 (aviso final con cancelación automática). El cron se activa cada mañana, envía el correo adecuado a cada cliente según el número de días que lleva pendiente su pedido, y cancela automáticamente cualquier pedido que haya superado el día 7.

Ejemplo: Recordatorios por hora para productos con tiempo limitado

Configuras un recordatorio a las 24 horas y otro a las 48 horas del pedido. Con un cron diario, un cliente que realiza un pedido a las 15:00 podría no recibir su recordatorio de 24 horas hasta las 09:00 del día siguiente — con 18 horas de retraso. Cambiar a un cron horario garantiza que el recordatorio se envíe exactamente a las 15:00 del día siguiente, dentro de una hora del horario previsto.

Ejemplo: Servicio de cron externo en hosting compartido

Tu plan de alojamiento no incluye cron de cPanel. Regístrate con una cuenta gratuita en cron-job.org, añade un nuevo trabajo, pega la URL completa del cron desde Configurar > Cron Jobs y establece la programación en una vez al día. El servicio externo realiza una solicitud HTTP GET a tu tienda en el horario configurado, activando el módulo exactamente igual que lo haría un cron del servidor.

Notas importantes

  • Adapta la programación de recordatorios a la frecuencia del cron. Si tu recordatorio más temprano está configurado para "3 días después del pedido", ejecutar el cron cada hora no supone ninguna ventaja sobre la ejecución diaria. Si tienes recordatorios configurados en horas, el cron horario es necesario para entregarlos a tiempo.
  • No ejecutes el cron más de una vez por hora. El módulo es seguro de llamar más de una vez — registra los recordatorios enviados y no los duplicará — pero no hay ningún beneficio en ejecutarlo con más frecuencia.
  • Suprime la salida de correo del cron. La mayoría de los demonios cron envían la salida estándar al buzón del sistema. Usa -o /dev/null en los comandos curl (ya incluido en los ejemplos) para evitar correos no deseados.
  • Prueba la URL manualmente primero. Antes de configurar el cron, pega la URL completa en tu navegador sin iniciar sesión. Una configuración que funciona correctamente devuelve una página en blanco o un texto mínimo. Una respuesta 403 Forbidden significa que la clave es incorrecta.
  • La clave del cron es global. Se almacena como un valor de configuración global y se aplica a todas las tiendas en una configuración multishop. Una sola llamada al cron procesa los pedidos de todas las tiendas.
  • La forma con URL amigable requiere que las URL amigables estén activadas. Si desactivas las URL amigables después de configurar un cron con la forma amigable, la URL dejará de funcionar. Ve a Configurar > Cron Jobs y copia la URL actualizada.

Solución de problemas

ProblemaSolución
No se envían recordatoriosVerifica que el cron job se está ejecutando revisando los registros de cron del servidor o añadiendo registro de salida. Confirma también que la URL funciona cuando se abre manualmente en un navegador.
El cron devuelve 403 ForbiddenLa clave en tu URL de cron no coincide con la clave almacenada. Ve a Configurar > Cron Jobs en el Back Office, copia la URL de nuevo y actualiza tu entrada de cron.
Los recordatorios se envían a la hora equivocadaComprueba que la zona horaria de tu servidor coincide con tus expectativas. Ejecuta date mediante SSH para confirmarlo. Ajusta la hora del cron en consecuencia (por ejemplo, si el servidor está en UTC y quieres las 09:00 a UTC+2, establece la hora del cron en 7).
Los pedidos no se están cancelandoConfirma que Activate Cancel Orders Feature está activado y que Cancel Order after tiene un valor mayor que 0 en la Configuración Global. Confirma también que el Modo de Prueba está desactivado.
El resumen del administrador no llegaConfirma que Admin Digest Email está activado en la Configuración Global. Comprueba que Alert Before Cancellation (hours) está configurado correctamente — si no hay pedidos dentro de ese margen, no se envía ningún resumen. Revisa también tu carpeta de spam.
El cron se ejecuta pero no envía correosComprueba que tienes al menos un mensaje de recordatorio activo configurado en la pestaña Reminder Messages y que los pedidos llevan pendientes el tiempo suficiente para coincidir con tu programación.
curl: command not found en los registros del cronUsa la ruta completa a curl. Ejecuta which curl mediante SSH para encontrarla, luego actualiza el comando del cron para usar la ruta absoluta (por ejemplo, /usr/bin/curl).
El cron con URL amigable devuelve 404Es posible que tu tienda tenga las URL amigables desactivadas. Ve a Configurar > Cron Jobs y copia la URL tal como se muestra — el módulo mostrará la forma correcta para la configuración actual de tu tienda.

Preguntas frecuentes

¿Cómo sé si el cron se está ejecutando realmente?

La comprobación más sencilla es abrir la URL del cron directamente en tu navegador sin iniciar sesión. Deberías ver una página en blanco o un breve mensaje de estado — nunca una página de error. Tras una ejecución real del cron, también puedes consultar Parámetros Avanzados > Registros en tu Back Office para ver las entradas de WireTransferReminder.

¿Llamar a la URL del cron varias veces en el mismo día enviará correos de recordatorio duplicados?

No. El módulo registra qué recordatorio se ha enviado para cada pedido. Una segunda llamada en el mismo día encontrará esos pedidos ya procesados y los omitirá. El resumen del administrador está además limitado a una vez por día natural.

¿Qué ocurre si el cron deja de ejecutarse durante varios días?

En la siguiente ejecución exitosa del cron, el módulo procesa todos los pedidos como si se ejecutara normalmente. Los pedidos que hayan superado el plazo de cancelación serán cancelados (si esa función está activada). Los pedidos pendientes de un recordatorio recibirán su próximo recordatorio programado, pero los recordatorios intermedios que debían enviarse durante el período de inactividad se omiten — el módulo envía el recordatorio más adecuado para el estado actual de cada pedido.

Mi hosting no permite cron del lado del servidor. ¿Cuáles son mis opciones?

Puedes utilizar un servicio de cron externo como cron-job.org o EasyCron para llamar a la URL según una programación. Estos servicios realizan una solicitud HTTP GET a tu URL de cron en el intervalo que especifiques. Pega la URL completa desde Configurar > Cron Jobs en el campo de URL del servicio y establece la frecuencia deseada.

¿Puedo usar el parámetro heredado ?token= si ya lo tengo configurado?

Sí. El parámetro heredado sigue funcionando por compatibilidad con versiones anteriores. Sin embargo, el valor de ?token= puede cambiar tras una actualización de PrestaShop o un cambio en los permisos de usuario. Para mayor fiabilidad a largo plazo, actualiza tu entrada de cron para usar ?key= en su lugar, que puedes copiar desde Configurar > Cron Jobs.

¿Es seguro poner la URL del cron en una herramienta de monitorización o comprobador de disponibilidad?

Sí, siempre que la herramienta solo realice solicitudes GET. El endpoint del cron procesará los pedidos pendientes en cada llamada, pero con una programación correcta no habrá nada extra que procesar entre tus ejecuciones programadas. La clave en la URL es un secreto — no la compartas en paneles públicos o páginas de estado de monitorización visibles para otros.

¿Funciona el cron en una configuración multishop?

Sí. Una sola llamada al cron procesa los pedidos de todas las tiendas. El módulo filtra los pedidos por tienda usando la restricción de tienda integrada de PrestaShop, por lo que los pedidos de cada tienda se gestionan según la configuración de esa tienda.

¿Qué forma de URL debo usar — la URL amigable o la forma estándar?

Copia siempre la URL exactamente como se muestra en Configurar > Cron Jobs. El módulo muestra la forma correcta para la configuración actual de URL amigables de tu tienda. Si posteriormente cambias la configuración de URL amigables, vuelve a la pestaña Cron Jobs y copia la URL actualizada.

Funciones relacionadas