Introducción
La rotación de códigos de barras se parece a los códigos de barras normales, pero cambian periódicamente. normalmente cada minuto, y el terminal o lector está programado para solo aceptar el más reciente. Esta medida de seguridad reduce los riesgos asociados Captura de pantalla del código de barras, en particular el robo de tickets o los tickets no autorizados la reventa. La rotación de códigos de barras también puede servir como resguardo en dispositivos que no pueden aprovechar el Toque inteligente, ya que no es compatible con NFC (falta de hardware o el software o el software malicioso).
Referencia de la API
Para obtener detalles técnicos acerca de la rotación de códigos de barras, consulta la
Tipo de RotatingBarcode
.
Carga útil de ejemplo
JSON | |
---|---|
{ "rotatingBarcode": { "type": "QR_CODE", "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}", "alternateText": "Ticket#: 1234567890", "totpDetails": { "algorithm": "TOTP_SHA1", "periodMillis": "3000", "parameters": [ { "key": "3132333435363738393031323334353637383930", "valueLength": "8" } ] } } } |
Mecanismos de resguardo
En el dispositivo del usuario, solo se usa un mecanismo de canje por vez, según cómo esté configurado el pase y las capacidades del dispositivo. En orden de prioridad, se usan los siguientes tipos de canje:
-
Toque inteligente: Si se especifica una carga útil de toque inteligente y si el dispositivo es compatible
NFC/HCE
- Ten en cuenta que el usuario puede anular esta acción haciendo clic en “Mostrar código”, forzará la visualización del código de barras rotativo o estático.
- Código de barras rotativo: si se especifica una carga útil de código de barras que rota
- Código de barras estático: si se especifica una carga útil de código de barras
Especificar varias cargas útiles de canje puede garantizar que todos los usuarios sean compatibles, pero pueden tener implicaciones de seguridad. En particular, el uso de un código de barras estático como resguardo de un código de barras rotativo, anula la mayoría de los beneficios de usar rotar códigos de barras. Solo se mostrará un resguardo de código de barras estático en las vistas web. o en clientes que no admiten la rotación de códigos de barras. A partir de hoy, esperamos a todos los clientes de la Billetera de Google para admitir códigos de barras rotativos.
Guardar flujo
La API de la Billetera de Google ofrece varios flujos, incluidos los siguientes:
- Crea las clases de transporte público de forma oportuna o con anticipación
- Enviar los objetos completos en tu JWT o guardar los objetos antes de tiempo y luego hacer referencia a ellas por ID en tu JWT
- Actualiza los objetos después de guardarlos
El campo rotarBarcode propuesto es compatible con todos estos flujos Sin embargo, para mejorar la seguridad, sugerimos lo siguiente:
-
Llama a la API de
object:insert
para insertar el pase en el servidor de Google Wallet y configura el botón Agregar a la Billetera de Google para hacer referencia al objeto específico por ID en tu JWT. Esto garantiza que el El JWT resultante no incluye la clave secreta del código de barras rotativo. - Usa una clave secreta de OTP que se limite a un solo pase
- A menos que se actualice, se espera que la clave sea válida durante toda la vida útil el pase. No esperamos que esta clave se actualice con ninguna frecuencia durante el curso de las operaciones normales.
El siguiente diagrama de secuencia ilustra el flujo entre los distintos actores para una integración típica:
![Diagrama de secuencias para usar códigos de barras rotativos](https://developers-dot-devsite-v2-prod.appspot.com/static/wallet/images/rotating-barcodes-sequence-diagram.png?authuser=4&hl=es)