Integrar una API en producción implica manejar fallos de red, validaciones y reglas de negocio. Esta guía te ayuda a interpretar los errores de QRwey! y definir una estrategia estable de reintentos, mensajes al usuario y registro para soporte.
No todos los errores se reintentan.
Reintentar un4xxsuele ser un error (excepto casos muy específicos).Distingue entre fallos temporales y definitivos.
5xxy timeouts suelen ser temporales.4xxsuelen ser definitivos.Registra contexto suficiente para soporte.
Incluye endpoint,Idempotency-Key(si aplica), timestamps y cuerpo del error.
Dependiendo del endpoint, QRwey! puede devolver un JSON con campos como:
code: identificador del errormessage: descripción legibledetails: información adicional (si aplica)
Si tu integración depende del contenido del error, usa
codecomo clave estable y evita parsear textos libres enmessage.
| Código HTTP | Qué significa | Qué hacer |
|---|---|---|
400 Bad Request | Validación: campos faltantes, tipos inválidos, firma/params incorrectos | Corrige request, no reintentar |
401 Unauthorized | API Key inválida o ausente | Verifica X-API-Key y ambiente |
404 Not Found | QR inválido / no existe / revocado | Tratar como “QR inválido” |
409 Conflict | Operación en conflicto: QR ya consumido o idempotencia | No reintentar; mostrar “ya utilizado” |
410 Gone | QR expirado | Solicitar generar un QR nuevo |
422 Unprocessable Entity | Regla de negocio/configuración fiscal | Revisar code y message |
429 Too Many Requests | Límite de tasa (si aplica) | Esperar y reintentar con backoff |
500–599 | Error interno temporal | Reintentar con backoff y límite |
Errores típicos:
400: request inválido (campos fiscales,expires_at, etc.)401: API Key inválida409: conflicto por idempotencia o duplicado lógico422: configuración fiscal incompleta o reglas no cumplidas5xx: error temporal
Acción recomendada:
- Si hay timeout/5xx → reintentar con el mismo
Idempotency-Key - Si hay
4xx→ corregir request / configuración, no reintentar en loop
Errores típicos:
400:v/t/minválidos o firma incorrecta404: token no encontrado / revocado409: QR ya consumido (si aplica)410: QR expirado422: regla de negocio
Acción recomendada:
410→ pedir al comercio generar un QR nuevo409→ mostrar “QR ya utilizado”404→ mostrar “QR inválido”400→ revisar extracción de parámetros desdeqr_content
- Timeout (sin respuesta)
500–599429(si aplica)
- Cualquier
400–499(salvo429) 409(conflicto) sin revisar lógica410(expirado)404(no encontrado)
Para reintentos temporales:
- 1er retry: 1s
- 2do retry: 2s
- 3er retry: 4s
- 4to retry: 8s
Límite recomendado:
- Máximo 3–5 reintentos
- Máximo 30s de ventana total
Evita mostrar mensajes técnicos como “410 Gone”. Mejor:
410: “Este QR ya expiró. Solicita uno nuevo.”409: “Este QR ya fue utilizado.”404: “QR inválido. Verifica el código e inténtalo de nuevo.”401: “No se pudo validar la solicitud.” (solo si aplica al comercio)
Recomendación mínima de logs por request:
- Método + path (sin exponer tokens completos)
- Timestamp inicio/fin
- Código HTTP
Idempotency-Key(si aplica)- Resumen de
codeymessagedel error
Evita loguear
tymcompletos; si necesitas trazabilidad, loguea solo un hash o una versión truncada.
- Manejas explícitamente
404,409,410,422 - Reintentas solo en timeouts y
5xx - Reusas el mismo
Idempotency-Keyen reintentos - Mensajes al usuario son claros y no técnicos
- Logs suficientes sin exponer secretos
- Reintentos seguros: Idempotencia & Reintentos
- Flujo completo: Quickstart
- Detalle de endpoints y schemas: Referencia del API