En QRwey!, los códigos QR están diseñados para ser seguros y efímeros. Eso significa que tienen una ventana de validez (expiración) y una política de uso que evita fraudes, duplicados e inconsistencias fiscales.
Esta guía explica:
- Cómo definir
expires_at - Qué pasa cuando un QR expira
- Por qué no debe reutilizarse un QR
- Qué hacer cuando el cliente necesita un QR nuevo
La expiración limita el tiempo durante el cual un QR es válido. Esto reduce riesgos como:
- Reuso indebido de tickets
- Capturas tardías no controladas
- Copias/fotos del QR usadas fuera de contexto
- Discrepancias entre venta y facturación
En el contrato del API, la expiración se define mediante el campo:
expires_at
al generar el QR (POST /api/v1/qrs).
Para la mayoría de comercios:
- La expiración debe de ir acorde a las reglas del negocio
- Es común usar este campo como la fecha actual más 5 días o hasta fin de mes
Evita ventanas demasiado largas o que brinquen de mes a menos que exista una justificación de negocio y controles adicionales.
Consejo: usa tiempos "standard" por default y aumenta solo si el flujo real lo requiere.
Cuando el QR expira, el endpoint de resolución responde:
410 Gone
Esto indica que:
- El QR ya no puede resolverse
- No puede reactivarse
- Se requiere generar uno nuevo
Consulta: Manejo de errores
Un QR en QRwey! representa una única intención de autofactura y por diseño:
- Debe corresponder a una sola venta
- No debe repetirse en otra operación
- No debe “reciclarse” para nuevos tickets
Reutilizar QRs puede provocar:
- Facturación duplicada
- Errores de conciliación
- Riesgos fiscales
- Experiencias confusas para el usuario
Depende del contexto:
- Volver a imprimir el ticket si el QR sigue vigente
- Volver a mostrar el QR en pantalla si no ha expirado
- Alterar monto/conceptos y usar el mismo QR
- Usar el mismo QR para otra venta
Escenarios típicos:
Acción:
- Genera un QR nuevo con
POST /api/v1/qrs - Presenta el nuevo QR al cliente
Acción:
- Puedes mostrar el mismo QR original
Acción:
- Reintenta con el mismo
Idempotency-Key - No generes un QR adicional si ya existe uno
Consulta: Idempotencia & Reintentos
- Define expiración "standard" como hasta fin de mes por default
- Maneja explícitamente
410 Gone - No reutilices QRs entre ventas
- Usa idempotencia para evitar duplicados
- Registra
expires_atycreated_atpara soporte
-
expires_atdefinido según operación y reglas del negocio - UI/UX maneja “expiró” de forma clara
- Backend maneja
410y genera QR nuevo - No reutilizas QRs entre ventas
- Reintentos usan el mismo
Idempotency-Key
- Manejo de errores: Manejo de errores
- Reintentos seguros: Idempotencia & Reintentos
- Flujo completo: Quickstart