Activar la recuperación de pagos fallidos
A veces la conexión entre Salesforce y Payload falla mientras se envía un pago. Es posible que Payload haya cobrado el dinero, pero Salesforce nunca recibió la respuesta. REDA Pay registra ese intento como una Pay Transaction con estado failed y la marca Process Callout Exception, y muestra al pagador el mensaje que empieza con "Ooops.. we have experienced an unexpected exception. Your payment method may have been debited. Do not try to pay again…" junto con un código (es posible que se haya debitado el método de pago; no vuelvas a intentarlo).
El trabajo Sync Failed Pay Order Transactions encuentra esos intentos y le pregunta a Payload qué ocurrió realmente. Activarlo es un solo clic en la pestaña REDA Pay Admin, y toda organización de producción debería tenerlo activado.
Activar el trabajo
- Abre la app REDA Pay → pestaña REDA Pay Admin.
- En la tarjeta Sync Failed Pay Order Transactions ("System job to sync failed transactions againts a pay order in case of any runtime exceptions.", un trabajo del sistema que sincroniza las transacciones fallidas de una orden ante errores de ejecución), cambia Job Scheduled a Yes.
- El mensaje "Batch job scheduled successfully." lo confirma. A partir de ese momento, el trabajo se ejecuta cada 15 minutos.
Cambiarlo a No lo detiene ("Batch job revoked successfully."). El trabajo aparece en Configuración → Trabajos programados como Sync Failed Pay Order Transactions; no lo elimines allí: usa el interruptor.
Un interruptor. Luego el trabajo revisa cada 15 minutos los pagos cuyo resultado se desconoce.
Qué hace el trabajo
Cada 15 minutos:
- Busca las Pay Transactions creadas en la última hora que tienen Process Callout Exception.
- Para cada una, le pide a Payload todas las transacciones etiquetadas con esa Pay Order.
- Guarda lo que devuelve Payload: actualiza las transacciones que Salesforce tiene y crea las que le faltan, con su estado real: processed, declined, etc.
- Quita la marca. Los intentos de más de una hora no se tocan; para esos, usa Sync Transaction en la orden.
Un pago recuperado: el intento fallido queda como registro; el resultado real está a su lado.
Ejemplo práctico
| Hora | Qué ocurre |
|---|---|
| 10:02 | Un miembro del personal pulsa Process Order en P-052010 por $1,251.75. Payload recibe la solicitud, pero la respuesta nunca llega a Salesforce |
| 10:02 | La pantalla muestra "Ooops.. we have experienced an unexpected exception. Your payment method may have been debited. Do not try to pay again and quote following code to the support team…" seguido de un código. El miembro del personal anota el código y no lo reintenta |
| 10:02 | Bajo P-052010 se guarda una Pay Transaction T-0014500 con Status failed y Process Callout Exception marcado; la orden sigue en Immediate - Not Processed |
| 10:15 | Se ejecuta el trabajo de recuperación. Encuentra T-0014500, le pide a Payload todas las transacciones etiquetadas con P-052010 y recibe una: procesada, $1,251.75 |
| 10:15 | REDA Pay crea T-0014501 con Status processed bajo P-052010 y quita la marca de T-0014500 |
| 10:20 | El administrador revisa la vista de lista Not Processed, ve P-052010 con una transacción procesada y define su Processed Datetime a las 10:02, para que la orden indique Immediate - Processed |
El código del mensaje es el identificador de la transacción en Payload, cuando Payload devolvió uno antes del fallo. Soporte puede encontrar el pago en Payload con él incluso antes de que se ejecute el trabajo.
Dónde ver el trabajo
| Dónde | Qué ves |
|---|---|
| Configuración → Trabajos programados | Sync Failed Pay Order Transactions, con una Siguiente ejecución programada dentro de los próximos 15 minutos |
| Configuración → Trabajos de Apex | Una entrada de lote completada por cada ejecución |
| REDA Pay Logs → Attention Needed | Un registro solo cuando una ejecución tuvo un error, por ejemplo Payload inaccesible |
| Pay Transactions | Las transacciones recuperadas aparecen con su estado real junto al intento fallido |
Si el interruptor no cambia, al usuario le falta REDA Pay - Admin User; el trabajo solo lo puede programar un administrador, y luego se ejecuta como ese administrador.
Después de una recuperación: una cosa que revisar
Cuando el trabajo (o Sync Transaction, o la conciliación) agrega después una transacción processed a una orden, el Processed Datetime de la propia orden no se completa y su Status sigue indicando Immediate - Not Processed. El pago es real; la orden simplemente no lo dice. Dos consecuencias:
- No pulses Process Pay Order en esa orden: enviaría un segundo cargo. La orden tiene debajo una transacción procesada; trátala como pagada.
- Para que la orden se lea correctamente, un administrador puede editarla y definir Processed Datetime con la fecha de la transacción. Luego la orden se bloquea como cualquier orden procesada.
La vista de lista Not Processed de Pay Orders es donde aparecen estos casos; revísala después de cualquier recuperación.
Qué debe hacer el personal cuando aparece el mensaje
- No pulses nada otra vez, y no abras la pantalla de pago del mismo cliente para "probar una vez más".
- Copia el código del mensaje en las Internal Notes de la orden o en un caso.
- Dile al pagador: "Es posible que el pago se haya realizado; te lo confirmaremos en menos de una hora."
- En menos de 15 minutos, abre las Pay Transactions de la Pay Order: una transacción processed nueva confirma el pago; si solo hay una failed con la marca quitada y nada más, Payload nunca cobró y el pago se puede volver a cobrar.
Errores que debes evitar
| Error | Qué ocurre | Solución |
|---|---|---|
| Dejar el trabajo desactivado | Clientes debitados sin registro en Salesforce hasta que alguien sincroniza a mano | Actívalo |
| Pulsar Process Pay Order en una orden que tiene una transacción procesada | Un segundo cargo | Revisa primero la lista Pay Transactions |
| Eliminar el trabajo de Trabajos programados | El interruptor sigue en Yes pero no se ejecuta nada | Cambia a No y luego a Yes |
| Esperar que recupere intentos de hace una semana | Mira solo la última hora | Usa Sync Transaction en la orden |
Preguntas frecuentes
No. Solo los intentos marcados con Process Callout Exception.
Como el administrador que lo activó. Si ese usuario se desactiva, apágalo y vuelve a encenderlo con otro administrador.
No. Los webhooks son Payload avisando a Salesforce de cambios de estado posteriores. Este trabajo es Salesforce preguntando a Payload por un intento cuya primera respuesta se perdió. Ambos deben estar en una organización de producción.