Fluxo de comunicação do Toque inteligente

Comunicação entre um terminal e o app Carteira do Google

Um terminal se identifica com um ID do coletor, que está associado a um ID do emissor de resgate. Quando ocorre um Toque inteligente, o terminal transmite o ID do coletor ao dispositivo do usuário. Em seguida, o app Carteira do Google examina os IDs de classe e de coletor de cada cartão armazenado. Quando uma ou mais correspondências são encontradas, o app Carteira do Google transmite os cartões correspondentes ao terminal. Confira mais detalhes em Configuração do comerciante.

Exemplo 1: um emissor de resgate

A seção a seguir descreve a configuração descrita neste gráfico.

No diagrama anterior, há dois emissores:

  • O emissor 2018 é um desenvolvedor de cartão, também chamado de agregador.
  • O emissor 1990 é um comerciante, fooPizza, também chamado de emissor de resgate.

O emissor de resgate, fooPizza, quer ativar o Toque inteligente para o cartão dele (gerenciado pelo agregador). O agregador e o emissor de resgate precisam seguir as etapas abaixo para ativar o Toque inteligente nos terminais do comerciante.

Step Papel Descrição
1 Agregador Crie uma classe de cartão e um objeto (no diagrama, abc e 123, respectivamente).
2 Agregador Inclua o ID do emissor de resgate na propriedade redemptionIssuers da classe do cartão. Assim a Carteira do Google vai saber que o ID de emissor 1990 está autorizado a resgatar objetos de cartão que se referem a essa classe.
3 Emissor do resgate Consiga um ID do coletor (no diagrama, 12345678).
4 Emissor do resgate Defina o ID do coletor 12345678 em cada terminal compatível com o Toque inteligente que será usado. Qualquer objeto com o ID de classe abc e o ID do coletor 12345678 será transmitido ao leitor.

Exemplo 2: vários emissores de resgate

Uma única classe de cartão pode ter vários emissores de resgate. Para resgatar uma classe de cartão específica, é necessário incluir o ID do emissor de resgate na propriedade redemptionIssuers da classe. Cada emissor de resgate tem o próprio ID do coletor, que é configurado nos terminais compatíveis com o Toque inteligente.

A seção a seguir descreve a configuração descrita neste gráfico.

No diagrama anterior, há três emissores:

  • O emissor 8088 é um desenvolvedor de cartão (agregador)
  • O emissor 1990 é um comerciante, fooPizza (emissor de resgate)
  • O emissor 2018 é um comerciante, yumPie (emissor de resgate).

O agregador e os emissores de resgate precisam seguir as etapas abaixo para ativar o Toque inteligente nos terminais dos comerciantes.

Step Papel Descrição
1 Agregador Crie uma classe de cartão e um objeto (no diagrama, abc e 123, respectivamente).
2 Agregador Inclua os IDs dos emissores de resgate na propriedade redemptionIssuers da classe do cartão. Assim a Carteira do Google vai saber que os IDs de emissor 1990 e 2018 têm permissão para resgatar objetos de cartão que se referem a essa classe.
3 Emissores de resgate Consiga os IDs do coletor (no diagrama, 12345678 para fooPizza e 18802001 para yumPie).
4 Emissores de resgate Defina o ID do coletor correspondente em cada terminal compatível com o Toque inteligente que será usado. Qualquer objeto com o ID de classe abc e um ID do coletor correspondente será transmitido ao leitor.

Exemplo 3: sem agregador

É possível desenvolver e emitir uma classe de cartão na mesma conta de emissor. Nesse caso, não há um agregador gerenciando classes de cartão para vários emissores de resgate. Para resgatar uma classe de cartão específica, o desenvolvedor de cartão precisa incluir o ID de emissor dele na propriedade redemptionIssuers da classe. O desenvolvedor de cartão precisa conseguir um ID do coletor e configurá-lo nos terminais compatíveis com o Toque inteligente.

A seção a seguir descreve a configuração descrita neste gráfico.

O desenvolvedor de cartão precisa seguir as etapas abaixo para ativar o Toque inteligente nos Terminais do comerciante.

Step Papel Descrição
1 Desenvolvedor de cartão Crie uma classe de cartão e um objeto (no diagrama, abc e 123, respectivamente).
2 Desenvolvedor de cartão Inclua o ID de emissor na propriedade redemptionIssuers da classe de cartão. Assim a Carteira do Google vai saber que o ID de emissor 2018 está autorizado a resgatar objetos de cartão que se referem a essa classe.
3 Desenvolvedor de cartão Consiga um ID do coletor (no diagrama, 12345678).
4 Desenvolvedor de cartão Defina o ID do coletor correspondente em cada terminal compatível com o Toque inteligente que será usado. Qualquer objeto com o ID de classe abc e um ID do coletor correspondente será transmitido ao leitor.

Experiência do usuário e comportamento

O comportamento do que é transmitido entre um terminal e o app Carteira do Google depende do usuário e de como ele está interagindo com o app naquele momento.

Cenário 1: o usuário abre um cartão específico

Step Papel Descrição
1 Usuário Selecione um cartão específico no app Carteira do Google.
2 Usuário Toque em um terminal com Toque inteligente.
3 Terminal (O ID do coletor é correspondente) O cartão é transmitido para o terminal.
(O ID do coletor não está correto) O cartão não é transmitido ao terminal.

Cenário 2: guia inicial da Carteira do Google ou exibição de tela desbloqueada

Step Papel Descrição
1 Usuário Abra a guia Início no app Carteira do Google ou desbloqueie a tela do dispositivo.
2 Usuário Toque em um terminal com Toque inteligente.
3 Terminal (Só um ID do coletor válido) O cartão é transmitido ao terminal.
(Vários IDs de coletor válidos) Exibe um carrossel de cartões válidos e transmite aquele selecionado pelo usuário.

Observação: a validade de um cartão depende da configuração do objeto dele. Verifique as seguintes propriedades do objeto de cartão:

  • state
  • validTimeInterval

Exemplo da coleção de Toque inteligente

A tabela a seguir descreve os emissores e os cartões que serão usados neste exemplo:

Nome do comerciante ILuvCoffee Café-Foo Mocha r-Us
Código do emissor 123 456 789
ID do coletor 11111111 44444444 77777777
Níveis de fidelidade R-Basic Minhas recompensas
R-Ouro

A ILuvCoffee tem dois níveis de fidelidade: R-Basic e R-Gold. Enquanto isso, a Coffee-Foo tem um programa de fidelidade com um único nível, My Rewards, e a Mocha-R-Us não tem programa.

Como parte de uma campanha de promoção cruzada, os comerciantes querem disponibilizar as seguintes opções para os clientes:

  • Os clientes do nível R-Basic podem usar o smart tap para resgatar pontos de fidelidade na Coffee-Foo e na Mocha-R-Us.
  • Os clientes do nível R-Gold não precisam do resgate do Toque inteligente.
  • Os clientes de My Rewards podem usar o Toque inteligente para resgatar pontos de fidelidade apenas na Coffee-Foo.

Para que a campanha funcione, é necessário definir os valores a seguir na propriedade redemptionIssuers de cada classe de fidelidade.

Classe de fidelidade IDs de emissor de resgate
R-Basic ["456", "789"]
R-Ouro []
Minhas recompensas ["456"]

Com essa configuração, qualquer objeto de cartão que se refira a essas classes terá os seguintes IDs de coletor:

  • R-Basic:44444444, 77777777
  • R-Gold:nenhum ID do coletor será incluído
  • Minhas recompensas: 44444444

Autenticação do coletor no momento do toque

Como parte da configuração do emissor, é possível associar várias chaves públicas à conta de um emissor. Essas chaves são armazenadas no app Carteira do Google, que as usa para autenticação quando um usuário toca o dispositivo em um terminal com Toque inteligente. Essa etapa de autenticação ocorre depois que o app encontra um objeto de cartão emitido para o usuário que tem um ID do coletor correspondente ao valor anunciado pelo terminal.

Continuando com o exemplo na seção anterior, a tabela a seguir descreve as chaves públicas associadas a cada emissor.

Nome do comerciante ILuvCoffee Café-Foo Mocha r-Us
Código do emissor 123 456 789
ID do coletor 11111111 44444444 77777777
Níveis de fidelidade R-Basic Minhas recompensas
R-Ouro
Chaves públicas aaa bbb

Um cliente de exemplo tem os seguintes cartões de fidelidade salvos no app Carteira do Google:

  • ILuvCoffee:R-Basic (em inglês)
  • Coffee-Foo: Minhas recompensas

Como antes, os valores a seguir são definidos na propriedade redemptionIssuers de cada classe de fidelidade.

  • R-Basic:["456", "789"]
  • Minhas recompensas: ["456"]

Se o usuário tocar o dispositivo em terminais de cada comerciante, vai haver três resultados possíveis:

Terminal do comerciante Resultado
ILuvCoffee Como o ILuvCoffee (ID do emissor de resgate 123) não está configurado para resgatar a própria classe de fidelidade, R-Basic, nada é transmitido.
Café-Foo O app Carteira do Google é autenticado no terminal Coffee-Foo usando a chave pública bbb. Dependendo da tela em exibição no dispositivo, um dos cenários da seção Experiência do usuário vai ocorrer.
Mocha r-Us Não há chave pública da Mocha-R-Us neste exemplo. Embora o programa R-Basic possa ser resgatado com o comerciante, ele não pode ser autenticado no terminal. Por isso, nada será transmitido.

Limites de autenticação

Quando um cartão é sincronizado com o app Carteira do Google de um usuário, todos os emissores de resgate do cartão são pesquisados no back-end da Carteira do Google. O ID do coletor, as chaves públicas e as versões de chave de cada emissor de resgate são armazenadas localmente no app Carteira do Google.

Um cartão pode ter muitos IDs de emissor de resgate. Cada um está associado a um ID do coletor específico de um comerciante específico. Além disso, pode haver muitas chaves públicas e versões de chave para um único ID do coletor.

O app Carteira do Google não vai tentar se autenticar em um terminal se não tiver cartões resgatáveis no terminal. Isso é baseado no ID do coletor e na versão da chave pública. Para atualizar as chaves públicas do cartão, o terminal precisa ter uma conexão de Internet para recuperar as novas chaves públicas do back-end da Carteira do Google.

Um cartão pode ser associado a muitas chaves públicas de uma só vez. Saiba como definir várias chaves públicas para o mesmo cartão em Configuração do comerciante.

Transmissão de valor durante o toque

Para enviar dados de um cartão durante o toque, o smartTapRedemptionValue do objeto do cartão precisa ser definido. Quando a classe correspondente ao objeto está ativada para uso com o Toque inteligente, o valor é enviado ao terminal.

Com base na integração e no caso de uso, esse valor é usado para identificar o cartão do usuário e executar a lógica de transação necessária, como a seguinte:

  1. Atualizar o saldo ou o status do usuário
  2. Atualizar o back-end com base na transação
  3. Emitir uma atualização para o objeto de cartão usando a API Google Wallet para que reflita as mudanças no status do usuário no dispositivo

O terminal e o app Carteira do Google processam a criptografia de todos os dados transmitidos por NFC. O terminal processa a descriptografia de dados após o Toque inteligente. Dentro dos dados, há registros NDEF do objeto de serviço que representam cada cartão transmitido. O Service number NDEF Record do objeto de serviço tem um payload que contém o valor definido na propriedade smartTapRedemptionValue do objeto de cartão. Isso significa que o desenvolvedor do cartão não precisa processar a criptografia dos dados transmitidos.

Se quiser adicionar outra camada de segurança, defina a propriedade smartTapRedemptionValue para que apenas o sistema que recebe os dados transmitidos (como um ponto de venda) possa descriptografá-los. No entanto, o desenvolvedor do cartão e o administrador do PDV serão responsáveis pelo processo de criptografia/descriptografia.