Saltar al contenido
Idempotency Ledger

Auditoría de idempotencia para APIs de pagos y pedidos

Encuentra las peticiones que tu API cobró dos veces.

Idempotency Ledger lee tus logs de peticiones, anota cada escritura bajo su clave de idempotencia y muestra dónde un reintento creó un segundo cobro, un segundo pedido o un segundo pago. Cada problema viene con el importe en riesgo y el arreglo.

Qué detecta

Cobros por claveNo. 0417

HoraClaveImporte
10:00:00ik_7f3a49.99
10:00:03ik_7f3a49.99
10:05:00ik_c04489.00
10:05:00ik_c04489.00
10:12:00ik_f6119.99

Cobrado de más+89.00 EUR

Qué es

Un auditor de claves de idempotencia. Repite las peticiones de tu log según las reglas que sigue una API correcta y anota cada una como primera escritura, repetición segura o problema.

Para quién

Ingenieros de backend y de pagos, SRE y responsables de soporte que necesitan saber si a un cliente de verdad se le cobró dos veces y por qué.

Qué resuelve

Los reintentos son normales, pero un reintento que vuelve a hacer el trabajo causa problemas de dinero reales. Los logs los esconden entre miles de líneas. El libro los sube arriba con los totales.

Audita tu log de peticiones

Pega o abre una exportación de log. No se sube nada: el análisis y las comprobaciones se hacen en esta página.

Una petición por línea, un array JSON o un CSV con fila de cabecera.

Los campos se detectan por nombre: time o ts, method, path o url, status, la clave de idempotencia, el id del objeto creado como charge_id u order_id, amount, currency y customer. También funcionan el JSON anidado y las cabeceras Idempotency-Key.

Tu auditoría aparecerá aquí

Pega un log y pulsa Auditar log, o carga el ejemplo para ver todos los tipos de hallazgo.

Qué detecta el libro

Cada clave repetida se revisa en orden de tiempo y se compara con lo que debería haber hecho un servidor correcto.

  1. Efecto doble

    Misma clave, misma petición y dos ids creados distintos. El servidor hizo el trabajo dos veces. Es el caso más caro.

  2. Carrera

    Dos copias llegaron con menos de dos segundos de diferencia y ambas tuvieron éxito. Pasa mucho con dobles clics y reintentos agresivos.

  3. Contenido distinto

    Una clave antigua llegó con parámetros nuevos. Un servidor correcto la rechaza con 422. Aceptarla oculta errores del cliente.

  4. Fallo parcial

    Un 5xx que aun así creó un objeto, seguido de un reintento que creó otro. Solo se ve si los logs incluyen ids.

  5. Sin clave

    Las escrituras sin clave no se pueden deduplicar. Dos iguales muy seguidas se anotan como duplicado.

  6. Clave caducada

    Una clave que vuelve después de la ventana se trata como trabajo nuevo. Elige la ventana que usa tu servidor.

Cómo se usa

  1. Exporta un log

    Saca las peticiones a un endpoint o servicio durante un periodo desde los logs del gateway, del balanceador o de la aplicación.

  2. Pégalo o ábrelo

    Funcionan líneas JSON, un array JSON, CSV con cabeceras o líneas normales con pares key=value.

  3. Elige la ventana de claves

    Indica cuánto tiempo guarda tu servidor las claves. Las APIs al estilo de Stripe usan 24 horas.

  4. Lee el libro

    Los problemas salen primero con el importe en riesgo. Abre una clave para ver cada línea y el arreglo, y luego copia el informe o descarga el CSV.

Conviene saber

  • Un efecto doble solo se demuestra si el log incluye el id del objeto creado. Sin ids, las repeticiones se anotan como correctas.
  • Las peticiones se comparan por método, ruta y cuerpo, o por importe, moneda y cliente cuando no hay cuerpo.
  • Las horas se muestran en UTC y las que no tienen zona se leen como UTC. Las líneas sin hora mantienen el orden del archivo.
  • Los logs grandes funcionan, pero recórtalos a los endpoints que te interesan para leerlos más rápido.
  • Nada sale de tu navegador. Aun así, quita números de tarjeta y datos personales antes de compartir un informe.

Preguntas

¿Qué es una clave de idempotencia?

Un valor único que el cliente envía con una escritura. Si la misma petición vuelve con la misma clave, el servidor devuelve el primer resultado en lugar de hacer el trabajo otra vez.

¿Por qué un 409 se marca como correcto?

Significa que llegó una segunda copia mientras la primera seguía en marcha y el servidor se negó a ejecutarlas en paralelo. El cliente puede reintentar después y recibir el resultado guardado.

¿Por qué importa un contenido distinto si solo hubo un cobro?

Aceptar parámetros nuevos con una clave antigua revela un error del cliente que reutiliza claves. La próxima vez creará un cobro equivocado que parecerá una repetición.

¿Necesito ids en mis logs?

Hacen que la auditoría sea precisa. Registra el id del objeto que creó cada escritura, como charge_id u order_id.

Habla con el creador

¿Tienes una pregunta, una idea o una oferta de trabajo? Escribe por X o Telegram.

Apoya al creador

Si esta herramienta te ahorró tiempo, puedes enviar una propina a esta dirección EVM desde tu propia billetera.

0xd28Fd90eD69092bd01598f237aad33a0cc9c3EeA