Skip to Content
v1.0Documentación oficial de la API LX CloudPos · estable en producción
V1WebhooksDeduplicación

Deduplicación

Por qué importa

Como hay reintentos in-process y persistentes, es esperable que recibás el mismo evento más de una vez. Si no deduplicás, vas a marcar dos veces como “aceptado” la misma factura, mandar correos repetidos o disparar dos veces tu lógica de negocio.

Mecanismo

Cada envío incluye dos campos pensados para detectar la repetición:

  • nonce — identificador único por intento de envío (32 caracteres hexadecimales, 16 bytes).
  • intento — número del intento (1 a 5).

💡 Usá nonce como clave de deduplicación, nunca clave ni numero_consecutivo: esos sí se repiten entre intentos porque pertenecen al comprobante, no al envío.

Patrón

Aprovechá un índice único en tu BD para hacer la deduplicación atómica: si el INSERT falla por colisión, sabés que ya procesaste ese evento y podés salir sin tocar el resto del flujo.

async function procesarWebhook(evento) { try { await db.eventosLxs.create({ data: { nonce: evento.nonce, payload: evento, procesadoEn: new Date() } }); } catch (err) { if (err.code === 'P2002') { // unique constraint violation // Ya procesado, descartar return; } throw err; } await aplicarLogicaDeNegocio(evento); }