Códigos de barras rotativos

Introdução

Os códigos de barras rotativos são como os normais, mas mudam com regularidade, geralmente a cada minuto, e o terminal/leitor é programado para aceitar ao mais recente. Essa medida de segurança reduz os riscos associados Captura de tela com código de barras, especificamente em caso de roubo ou não autorização de passagem revenda. Os códigos de barras rotativos também podem funcionar como substitutos para dispositivos aproveitar o Toque inteligente, porque não há suporte para NFC (falta de hardware ou software desativado).

Referência da API

Para ver detalhes técnicos sobre códigos de barras rotativos, consulte a Tipo RotatingBarcode.

Exemplo de payload

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 substitutos

No dispositivo do usuário, somente um mecanismo de resgate é usado por vez, dependendo de como o cartão está configurado e dos recursos do dispositivo. Em ordem de prioridade, os tipos de resgate a seguir são usados:

  1. Toque inteligente: se um payload de toque inteligente for especificado e se o dispositivo oferecer suporte NFC/HCE
    • Isso pode ser substituído pelo usuário clicando em "Mostrar código", que força a exibição do código de barras rotativo/estático.
  2. Código de barras rotativo: se um payload de código de barras rotativo for especificado
  3. Código de barras estático: se um payload de código de barras for especificado

Especificar vários payloads de resgate garante suporte para todos os usuários, mas podem ter implicações na segurança. Mais especificamente, o uso de um código de barras estático como um código de barras rotativo, por sua vez, anula a maioria dos benefícios de segurança códigos de barras rotativos. Um código de barras estático substituto só vai aparecer nas visualizações da Web ou em clientes que não suportam códigos de barras rotativos. A partir de hoje, esperamos todos os clientes da Carteira virtual do Google para oferecer suporte a códigos de barras rotativos.

Fluxo para salvar

A API Google Wallet oferece vários fluxos, incluindo:

  • Criar classes de vale-presente no horário salvo ou com antecedência
  • Enviar objetos completos no JWT ou salvá-los antes e, em seguida, referenciá-las por ID no JWT
  • Atualizar os objetos depois de salvá-los

O campo rotaBarcode proposto é compatível com todos esses fluxos, No entanto, para melhorar a segurança, sugerimos o seguinte:

  • Chame a API object:insert para inserir o cartão na servidor da Carteira do Google e configure o botão "Adicionar à Carteira do Google" para faça referência ao objeto específico por ID no JWT. Isso garante que o O JWT resultante não inclui a chave secreta do código de barras rotativo.
  • Use uma chave secreta de OTP com escopo para um único cartão
  • A menos que seja atualizada, espera-se que a chave seja válida durante a vida útil do o passe. Não esperamos que essa chave seja atualizada em qualquer frequência durante durante as operações normais.

O diagrama de sequência a seguir ilustra o fluxo entre os vários atores para uma integração típica:

Diagrama de sequência para uso de códigos de barras rotativos