Hola Javier buenas tardes
El evento “refresh” notifica transacciones nuevas y transacciones actualizadas recientemente. Para las transacciones nuevas creo que se entiende perfectamente. Las transacciones actualizadas recientemente se pueden ejemplificar de la siguiente manera:
- En el caso de transacciones del SAT a veces los archivos adjuntos tardan más tiempo en bajarse (problemas de red, timeouts, etc), entonces el webhook avisaria cuando se baja la transacción y cuando el adjunto este listo notificaria de nuevo.
- Algunos bancos reportan una transacción con una descripción hoy, pero pasa un periodo de tiempo y la descripción cambia. Entonces el webhook te notificaría que algo cambio (en este caso la descripción).
Lo que hace el webhook es identificar si esa cuenta ha sido actualizada o no.
Cuentas Nuevas
En el caso de las cuentas nuevas lo que hace es reportar un arreglo para accounts, transactions y attachments en donde se generan todos los llamados que se necesitaría para hacer la replica inicial. En el ejemplo que mencionas solo te regreso un llamado, supongo que existen menos de 5000 transacciones en esa credencial por eso solo existe un solo llamado.
Pero supongamos que la credencial hubiera tenido 6,000 transacciones, entonces hubieras visto dos llamados:
transactions: [
'/v1/transactions?id_credential=...&limit=5000&skip=0',
'/v1/transactions?id_credential=...&limit=5000&skip=5000'
]
Con estos dos llamados obtendrías todas las transacciones que estuvieran registradas en ese momento.
Cuentas Registradas
Si la cuenta no es nueva entonces los llamados tendrán un campo adicional dt_refresh_from y dt_refresh_to, para indicar en qué fecha buscar.
transactions: [
'/v1/transactions?id_credential=...&dt_refresh_from=xxxxx&dt_refresh_to=yyyyy&limit=5000&skip=0',
'/v1/transactions?id_credential=...&dt_refresh_from=xxxxx&dt_refresh_to=yyyyy&limit=5000&skip=5000'
]
La idea es que ese llamado o llamados te regresen los datos nuevos o los que han sido actualizado recientemente, estos llamados pueden representar N registros. Puede ser 1 transacción o 100,000 transacciones representado en multiples llamados.
Internamente el campo dt_refresh se va incrementando en automático, y el webhook lo va reportando en base a como se va actualizando los datos a través del tiempo.
Para identifcar si la transacción es nueva puedes guardar el id_transaction en tu base de datos y comprobar si se necesita actualizar o agregar.
Gracias,
Saludos.