Cámara o foto, sin librería pesada
El escaneo usa el reconocimiento nativo del propio navegador donde está disponible, y recurre a subir una foto en cualquier otro caso, sin ninguna librería de escaneo empaquetada en ningún camino.
QR y Control de Acceso
El canje es una sola escritura condicional en la base de datos, no una lectura seguida de una escritura. Dos puertas que escanean el mismo código en el mismo segundo igual solo dejan pasar a una persona.
Cada una protege una parte distinta de lo que pasa en el instante en que se escanea un código.
El escaneo usa el reconocimiento nativo del propio navegador donde está disponible, y recurre a subir una foto en cualquier otro caso, sin ninguna librería de escaneo empaquetada en ningún camino.
Marcar un ticket como usado es una sola escritura, condicionada a que siga en estado emitido. Dos escaneos casi simultáneos del mismo código, desde dos puertas distintas, nunca tienen éxito los dos.
Solo el back office puede anular un ticket o deshacer un canje, nunca la pantalla de escaneo. Darle ambos poderes al personal de puerta permitiría "deshacer" un ticket usado en el acto para dejar entrar a una segunda persona con el mismo código.
Un archivo de voucher nunca se sirve desde una URL pública. Cada descarga pasa por una ruta autenticada que también verifica que el archivo realmente pertenece al ticket solicitado.
Cinco pasos, cada vez que se escanea o se ingresa un código manualmente.
Un código escaneado o ingresado manualmente se resuelve hasta su ticket, o devuelve un claro "no encontrado" sin insinuar si ese código alguna vez existió.
El canje es un solo UPDATE con una condición que exige que el ticket siga en estado emitido. Si no se afecta ninguna fila, nada cambió, y el motivo se reporta a partir de una lectura nueva justo después.
Como la verificación del estado y la escritura ocurren como una sola operación atómica, dos puertas compitiendo por escanear el mismo código en el mismo instante nunca pueden tener éxito las dos.
Cada transición, exitosa o no, escribe quién la disparó, desde dónde, escaneo o acción del back office, y cuándo, así una entrada disputada siempre puede reconstruirse.
Revertir un canje o anular un ticket existe solo como una acción del back office detrás de su propio permiso, completamente separado del permiso que permite escanear en la puerta.
Producto, opción, tipo de entrada, fecha, posición en el pedido, nombre del comprador y estado de cumplimiento. Nunca un precio, nunca un margen, nunca nada que el personal de puerta no necesite para decidir.
{
"ticket_code": "AB12CD34EF",
"status": "redeemed",
"redeemed_at": "2026-08-14T10:00:00Z",
"position": 2,
"quantity": 3,
"product_name": "City Food Tour",
"buyer_name": "Jane Buyer",
"fulfillment_status": "not_required"
}Cuando la actualización condicional no toca ninguna fila, eso por sí solo no dice por qué. El sistema vuelve a leer el ticket de inmediato para reportar la causa real, ya canjeado, con marca de tiempo y quién lo hizo, o anulado, en lugar de un fallo genérico. Esa verificación ocurre después de la escritura a propósito: hacerla antes reabriría exactamente la carrera que la escritura atómica existe para cerrar.
No. El canje es una sola escritura en la base de datos condicionada a que el ticket siga en estado emitido. El escaneo que llegue primero a la base de datos gana esa condición; el segundo encuentra cero filas afectadas y recibe "ya canjeado" en su lugar.
No desde la pantalla de escaneo. Deshacer un canje existe solo como una acción del back office detrás de su propio permiso. Dejar que el mismo personal que escanea también pueda deshacer abriría un camino real para dejar entrar a una segunda persona con un código ya usado.
No. Anular es terminal por diseño; no existe "desanular" en ningún punto del sistema. Un anulado por error necesita un ticket nuevo, no una reversión.
No. La respuesta de canje se limita deliberadamente a lo que necesita el personal de puerta para decidir: producto, opción, tipo de entrada, fecha, nombre del comprador, posición dentro del pedido y estado de cumplimiento.
Nunca se sirven desde una URL pública. Cada descarga pasa por una ruta autenticada que también verifica que el archivo realmente pertenece al ticket solicitado, no solo que quien lo pide tiene sesión iniciada.
Tiqory mantiene disponibilidad, precios, pagos y acceso trabajando juntos mientras tu operación crece. Cuéntanos hacia dónde vas; te mostramos cómo llegar sin volver a empezar.