Programar el trabajo diario de pagos recurrentes
Los pagos recurrentes son plantillas; un trabajo en segundo plano los convierte en pagos reales en sus fechas de vencimiento. REDA Pay incluye el trabajo pero no lo programa: lo hace un administrador una vez, en Configuración. Hasta entonces, todas las programaciones que creen tu equipo o tus clientes aparecen activas y nunca se ejecutan.
Programar el trabajo
- Abre Configuración, escribe Clases de Apex en el cuadro Búsqueda rápida y haz clic en Clases de Apex.
- Haz clic en Programar Apex en la parte superior de la lista.
- Completa:
| Campo | Ingresa |
|---|---|
| Nombre del trabajo | Un nombre que reconozcas en la lista de trabajos programados, por ejemplo REDA Pay - Recurring Payments |
| Clase de Apex | Haz clic en la búsqueda y elige SchedulePayOrderJob (aparece con el espacio de nombres de REDA Pay, rpay) |
| Frecuencia | Semanal, con todos los días de la semana marcados |
| Inicio | Hoy |
| Fin | Una fecha lejana, por ejemplo dentro de diez años |
| Hora de inicio preferida | Una hora tranquila antes de tu jornada, por ejemplo las 06:00. Los pagos que vencen ese día se crean y se envían a esa hora |
- Haz clic en Guardar.
Un trabajo, todos los días. La hora que elijas es cuando se cobran los pagos recurrentes del día.
Qué hace el trabajo cada día
- Busca todas las Pay Orders de tipo Schedule cuyo Schedule Active esté activado y cuya Schedule Next Run Date sea hoy.
- Clona cada una en una nueva Pay Order Immediate vinculada mediante Parent Pay Order y luego procesa esas órdenes de una en una, sin registrar nada nuevo, porque el cliente y el método se registraron al crear la programación.
- Completa la Schedule Last Run Date de cada programación, lo que hace avanzar Schedule Next Run Date y suma uno a System Run Instances.
- Escribe un REDA Pay Log si algo falló, y el propietario de la orden recibe "Scheduled Payment [P-000000] failed." por cada ejecución fallida.
Una ejecución que falla no se reintenta; la programación simplemente continúa en su fecha siguiente. Consulta Configurar un pago recurrente.
Comprobar que se está ejecutando
| Dónde | Qué buscar |
|---|---|
| Configuración → Trabajos programados | El nombre de tu trabajo con una fecha en Siguiente ejecución programada |
| Configuración → Trabajos de Apex | Después de cada ejecución, entradas de las clases por lotes de REDA Pay con el Estado completado |
| App REDA Pay → REDA Pay Logs → Attention Needed | Registros del trabajo cuando fallaron ejecuciones, con los fallos en un archivo adjunto |
| Vista de lista Order Type - Schedule de Pay Orders | Schedule Last Run Date = hoy para las programaciones que vencían |
Ejemplo práctico: la ejecución de una mañana
Tres programaciones vencen el 1 de noviembre: el alquiler de dos residentes con cuenta bancaria y una cuota de atención a propietarios con tarjeta.
| Programación | Qué hace el trabajo a las 06:00 | Resultado |
|---|---|---|
| P-051850, $1,250.00 mensual, Checking x-7890 | La clona en P-052001 (Parent Pay Order P-051850) y la procesa | T-0014601 processed; P-052001 Schedule - Processed; Last Run Date de P-051850 el 1 de noviembre, Next Run Date el 1 de diciembre, Run Instances 1 |
| P-051860, $980.00 mensual, Checking x-1122 | La clona en P-052002 y la procesa | Payload la rechaza por fondos insuficientes. T-0014602 failed; P-052002 Schedule - Not Processed; el propietario de P-051860 ve "Scheduled Payment [P-051860] failed."; P-051860 igual pasa al 1 de diciembre |
| P-051870, $45.00 mensual, Visa x-4242 (vencida) | La clona en P-052003 y la procesa | Rechazada; igual que arriba |
Un REDA Pay Log de la ejecución registra dos fallos, con las dos órdenes y sus errores en el archivo adjunto, y los administradores reciben el correo "ATTENTION NEEDED". Cobranzas hace el seguimiento de las dos ejecuciones fallidas; las programaciones en sí no necesitan cambios salvo que se reemplace la tarjeta.
Elegir la hora
La hora que elijas está en la zona horaria del usuario que programa el trabajo. Una hora temprana antes de la jornada hace que los fallos ya estén esperando en la vista Attention Needed cuando llega el personal, y que los pagadores vean una hora de cobro constante. Evita la hora en punto en que se ejecutan tus otros trabajos pesados; el trabajo de REDA Pay llama a Payload una vez por programación y es rápido, pero compite por los mismos espacios de procesamiento por lotes.
Ejecutarlo más de una vez al día, o para una fecha pasada
El trabajo se ejecuta una vez al día por diseño: las programaciones se basan en fechas, y una segunda ejecución el mismo día no encuentra nada nuevo. Si el trabajo no se ejecutó un día (por ejemplo, porque todavía no estaba programado o la organización no estaba disponible), un administrador puede ejecutarlo para esa fecha desde la Developer Console (consola para desarrolladores), con Debug → Open Execute Anonymous Window (la ventana para ejecutar código anónimo):
rpay.SchedulePayOrderJob job = new rpay.SchedulePayOrderJob();
job.processDate = Date.newInstance(2026, 11, 1); // la fecha que faltó
System.schedule('REDA Pay - catch-up ' + String.valueOf(DateTime.now().getTime()), '0 0 * * * ?', job);
Esto programa una ejecución única en la hora siguiente para la fecha indicada; se procesan las programaciones que vencían en esa fecha y todavía no se ejecutaron. El trabajo también acepta batchSize (50 de forma predeterminada) para la cantidad de programaciones que se procesan por lote.
Errores que debes evitar
| Error | Qué ocurre | Solución |
|---|---|---|
| No programar nunca el trabajo | Todas las programaciones siguen "activas" para siempre y no se cobra nada | Prográmalo; luego revisa las programaciones cuya Next Run Date ya pasó |
| Programarlo dos veces | No causa daño, pero confunde: la segunda ejecución no encuentra nada | Mantén un solo trabajo |
| Elegir una hora de inicio en horario laboral | Los pagos se cobran a media mañana; los fallos aparecen cuando el personal está ocupado | Elige una hora temprana |
| Eliminar el trabajo programado al "hacer limpieza" | Se detiene el pago automático | Vuelve a programarlo |
| Esperar que el trabajo reintente los pagos fallidos | No lo hace | Cobra aparte los importes pendientes |
Preguntas frecuentes
El trabajo se ejecuta como el usuario que lo programó. Ese usuario debe tener REDA Pay - Admin User y tener permitidos los cobros; si esa persona deja la organización, vuelve a programar el trabajo con otro administrador.
No, pero las organizaciones de producción deberían tenerlos para que los rechazos y devoluciones posteriores lleguen a Salesforce; consulta Configurar webhooks.
Elimina el trabajo programado en Configuración → Trabajos programados para pausar; vuelve a programarlo para reanudar. Las programaciones cuyas fechas pasaron mientras tanto no se recuperan automáticamente.