Prototipando un servicio de validación de tickets usando códigos QR

El otro día me propusieron a ver si era posible desarrollar un servicio de validación de entradas, vamos a llamarlo, que permitiera validar las entradas y fuera ágil. El servicio debía cumplir las siguientes especificaciones

  • Estar en producción en 10-12 días
  • Permitir acceder al recinto usando una entrada impresa en papel
  • Permitir acceder al recinto usando la entrada sin imprimirla en papel
  • Comunicarse con los servicios centrales del cliente para integrar la información de quién había entrado y cuando

Nos pusimos a pensar y planteamos las siguientes ideas

  1. Papel/Móvil y Boli
  2. Papel/Móvil y Ordenador
  3. Papel/Móvil y lector de código de barras
  4. Papel/Móvil y móvil


Si alguna vez has estado en un evento en el que la lista de acceso se valida con papel y boli sabrás que tienen varias desventajas (pese a tener una gran ventaja ... que es no necesita desarrollo):

  • Si acude mucha gente no es fácil que todo el mundo le de tiempo a entrar antes de que empiece el evento
  • Si hay varias puertas …. el sistema tiene puntos de fallo si no se organiza quién entra por qué puerta

Por tanto las dos primeras opciones quedan descartadas.
Las otras dos que nos quedan estarían vinculadas al hecho de disponer de un lector de códigos de barras y un servicio que recoja la lectura y la envíe a algún lado.... Si descartamos la del lector porque habría que comprarlos etc... nos quedamos con que lo mejor sería desarrollar un poco más la cuarta opción a ver hasta donde nos lleva.

La opción cuarta aún así tiene una gran debilidad y es la de desarrollar la APP para el dispositivo móvil que permite validar la entrada. Con esto en mente desarrollamos los siguientes diagramas que nos permitían aclarar un poco el panorama .... pintar siempre es una buena idea




Donde se ve que necesitamos un sistema que genere códigos QR para las entradas y un QR que sirva para registrar el móvil que está haciendo de lector de QR. La idea es olvidarnos de desarrollar una app para el móvil y que de alguna forma cualquier móvil que tenga un cámara se puede usar como lector de QR.
 


Si no vamos a tener una app propia disponible tenemos que hacer que no todos los móviles sirvan para enviar la información al servidor, por un tema de seguridad principalmente. Además como queremos poder dar feedback a la persona que está en la puerta vamos a vincular el móvil con un PC que estará también en la puerta. Este gráfico representa cómo se ha diseñado el protocolo que vincula ambos dispositivos... Esto se haría una vez por cada puerta/persona que está validando los accesos.
Por último la fase de validación de las entradas



Donde vemos que la persona que va a entrar, presenta la entrada en la puerta. Esta entrada se escanea con el lector de QR estándar del móvil (hay muchos en el mercado) y al leer la URL que está en el QR la APP que ha leido el QR lanza el navegador con dicha URL que se procesa en el servidor. Esta URL genera una llamada de vuelta al PC vinculado a este móvil (paso 3.2-3.3) y el proceso de validación y registro se da por finalizado.


Ahora bien esto es en teoría y son papeles pintados … así que para probarlo hemos desarrollado una  PoC que usa los siguientes elementos

  • Librería ZXING para generara códigos QR
  • Servicios REST desarrollados usando JAXRS
  • WebSockets para comunicar eventos del servidor al cliente
  • Servidor tomcat 7

En total hemos desarrollado las siguientes clases java

  • QRGenerator
  • RegistService
  • WebSocketService

Con estas tres clases y el programa de lectura de QRs del móvil hemos hecho una PoC plenamente funcional que cumple los requisitos. (Hemos tardado 8 horas, post incluido). Evidentemente faltaría hacer bastantes cosas para poner el desarrollo en producción pero con esta orientación creemos que se podría hacer el proyecto en 10 -12 días

Las grandes ventajas que creemos que tiene este modelo son

  • Poco código desarrollado
  • No depende de una aplicación específica desarrollada para el móvil
  • Permite usar cualquier dispositivo con cámara como lector de códigos
  • Tiene un modelo de seguridad, que sin ser el más seguro del mundo, sirve.

Tiene muchos puntos de mejora está claro

  • Modelo de seguridad
  • Usar una APP propia para controlar mejor el feedback al usuario

En realidad el punto más fuerte de este modelo creemos que es que es facilmente convertible en un sistema de autenticación de dos fases … Adjunto el código del WAR de la PoC para el que tenga interés en ver el código.

00

Más entradas de blog

thumbnail

1 comentario(s)

PG
Pablo G Hace 2 años

Hola,

 

Por lo que entiendo, el móvil sólo se dedica a hacer la petición a una url, y es ahí donde se comprueba si la entrada es o no válida, apareciendo el resultado en el pc, ¿correcto? Siendo así, si tenemos 4 dispositivos validando de forma simultánea, ¿cómo controlar las entradas que valida cada uno?

 

Un saludo.

00