Idempotency-Key: <idempotency-key-value>.
Una clave de idempotencia es un valor único que genera tu cliente. Fintoc usa esta clave para reconocer los reintentos de una misma solicitud. Usa UUID de versión 4 o cadenas aleatorias con suficiente entropía para evitar colisiones. Las claves de idempotencia pueden contener hasta 255 caracteres.
Fintoc guarda el código de estado y el cuerpo de la respuesta de la primera solicitud para cada clave de idempotencia, tanto si la solicitud tiene éxito como si falla. Las solicitudes posteriores con la misma clave devuelven el resultado guardado, incluidos los errores 4xx y 5xx. Las respuestas repetidas incluyen el encabezado Idempotent-Replayed: true.
Autenticación necesariaFintoc no guarda un resultado idempotente cuando falla la autenticación porque la solicitud no llega al endpoint de la API.
400 Bad Request con el código invalid_idempotent_request.
Si envías una solicitud mientras otra solicitud anterior con la misma clave sigue en curso, Fintoc no la procesa una segunda vez. Fintoc espera hasta cerca de 1 segundo el primer resultado y lo devuelve. Si la primera solicitud no ha terminado para entonces, Fintoc devuelve un error 503 Service Unavailable con el código idempotency_unavailable. Fintoc no guarda esta respuesta 503. Reintenta más tarde con la misma clave para obtener el resultado de la primera solicitud.
Reintentar una transferencia de forma segura
Una respuesta5xx o un timeout aún pueden significar que Fintoc creó la transferencia. Como Fintoc repite una respuesta 5xx guardada, reintentar con la misma clave devuelve el mismo error y no te dice si la transferencia existe.
Para evitar enviar un pago dos veces:
- Guarda tu propio identificador de cada pago en la
metadatade la transferencia, y envía unIdempotency-Keypor pago. - Si la solicitud expira o la conexión se corta antes de recibir una respuesta, reintenta con la misma clave. Obtienes el resultado guardado o el resultado de un nuevo intento.
- Si recibes una respuesta
5xx, lista las transferencias conaccount_id,direction=outboundysincejusto antes de tu solicitud. Busca una transferencia con tu identificador enmetadata. - Si encuentras la transferencia, sigue su estado y sus webhooks. Si no la encuentras, crea la transferencia con un nuevo
Idempotency-Key.
POST aceptan claves de idempotencia. Enviar claves de idempotencia en solicitudes GET y DELETE no tiene efecto porque estas solicitudes son idempotentes por definición.
Los siguientes ejemplos crean un cargo con una clave de idempotencia. Puedes reintentar la solicitud sin crear un cargo duplicado.