Flujo de comunicación del toque inteligente

Comunicación entre una terminal y la app de la Billetera de Google

Una terminal se identifica con un ID de colector que está asignado a un ID de emisor de canje. Cuando se produce un toque inteligente, la terminal transmite su ID de colector al dispositivo del usuario. Luego, la app de la Billetera de Google examina el ID de clase y el ID de recaudador de cada pase almacenado. Cuando se encuentran una o más coincidencias, la app de la Billetera de Google transmite los pases coincidentes a la terminal. Consulta Configuración del comercio para conocer los detalles correspondientes.

Ejemplo 1: una entidad emisora de canje

En la siguiente sección, se describe la configuración que se describe en este gráfico.

En el diagrama anterior, se muestran dos entidades emisoras diferentes:

  • La entidad emisora 2018 es un desarrollador de pases (también llamado agregador).
  • La entidad emisora 1990 es un comercio, fooPizza (también conocida como entidad emisora de canjes).

La entidad emisora de canje, fooPizza, quiere habilitar la funcionalidad de Toque inteligente para su pase (administrado por el Agregador). El agregador y la entidad emisora de canje deben completar los siguientes pasos para habilitar el Toque inteligente en las terminales del comercio.

Step Rol Descripción
1 Agregador Crea una clase de pase y un objeto (en el diagrama, abc y 123, respectivamente).
2 Agregador Incluye el ID de la entidad emisora de canje en la propiedad redemptionIssuers de la clase de pase. Esto le indica a la Billetera de Google que el ID de la entidad emisora 1990 puede canjear objetos de pases que hagan referencia a esta clase.
3 Entidad emisora de canje Obtén un ID de colector (en el diagrama, 12345678).
4 Entidad emisora de canje Establece el ID del recopilador 12345678 en cada terminal compatible con el toque inteligente que se usará. Cualquier objeto con el ID de clase abc y el ID de recaudador 12345678 se transportará al lector.

Ejemplo 2: Varias entidades emisoras de canje

Una clase de pase puede tener varias entidades emisoras de canje. Para poder canjear una clase de pase específica, se debe incluir el ID de la entidad emisora de canje en la propiedad redemptionIssuers de la clase. Luego, cada emisor de canje tiene su propio ID de recaudador, que se configura en sus terminales compatibles con el toque inteligente.

En la siguiente sección, se describe la configuración que se describe en este gráfico.

En el diagrama anterior, se muestran tres entidades emisoras diferentes:

  • La entidad emisora 8088 es un desarrollador de pases (agregador)
  • La entidad emisora 1990 es un comercio, fooPizza (emisor de canje)
  • La entidad emisora 2018 es un comercio, yumPie (emisor de canjes).

Los agregadores y emisores de canjes deben completar los siguientes pasos para habilitar el toque inteligente en las terminales de comercios.

Step Rol Descripción
1 Agregador Crea una clase de pase y un objeto (en el diagrama, abc y 123, respectivamente).
2 Agregador Incluye los IDs de las entidades emisoras de canje en la propiedad redemptionIssuers de la clase de pase. Esto le indica a la Billetera de Google que los IDs de entidad emisora 1990 y 2018 pueden canjear objetos de pase que hagan referencia a esta clase.
3 Entidades emisoras de canje Obtén los IDs del colector (en el diagrama, 12345678 para fooPizza y 18802001 para yumPie).
4 Entidades emisoras de canje Establece el ID de recopilador correspondiente en cada terminal compatible con el toque inteligente que se usará. Cualquier objeto con el ID de clase abc y un ID de recopilador coincidente se transportará al lector.

Ejemplo 3: Sin agregador

Se puede desarrollar y emitir una clase de pase dentro de la misma cuenta de la entidad emisora. En este caso, no hay un agregador que administre las clases de pase para varias entidades emisoras de canje. Para poder canjear una clase de pase específica, el desarrollador del pase debe incluir su ID de emisor en la propiedad redemptionIssuers de la clase. Luego, el desarrollador del pase debe obtener un ID de recopilador y configurarlo en sus terminales compatibles con el toque inteligente.

En la siguiente sección, se describe la configuración que se describe en este gráfico.

El desarrollador del pase debe completar los siguientes pasos para habilitar el toque inteligente en las terminales de comercios.

Step Rol Descripción
1 Desarrollador de pases Crea una clase de pase y un objeto (en el diagrama, abc y 123, respectivamente).
2 Desarrollador de pases Incluye el ID de la entidad emisora en la propiedad redemptionIssuers de la clase del pase. Esto le indica a la Billetera de Google que el ID de la entidad emisora 2018 puede canjear los objetos de pase que hagan referencia a esta clase.
3 Desarrollador de pases Obtén un ID de colector (en el diagrama, 12345678).
4 Desarrollador de pases Establece el ID de recopilador correspondiente en cada terminal compatible con el toque inteligente que se usará. Cualquier objeto con el ID de clase abc y un ID de recopilador coincidente se transportará al lector.

Experiencia y comportamiento del usuario

El comportamiento de lo que se transmite entre una terminal y la app de la Billetera de Google depende del usuario y de cómo esté interactuando con ella en ese momento.

Situación 1: El usuario abre un pase específico

Step Rol Descripción
1 Usuario Selecciona un pase específico en la app de la Billetera de Google.
2 Usuario Presiona una terminal habilitada para el toque inteligente.
3 Terminal (Coincidencias del ID de colector) El pase se transmite a la terminal.
(El ID del colector no coincide). El pase no se transmite a la terminal.

Situación 2: Pestaña principal de la Billetera de Google o vista de pantalla desbloqueada

Step Rol Descripción
1 Usuario Abre la pestaña Casa en la app de la Billetera de Google o desbloquea la pantalla del dispositivo.
2 Usuario Presiona una terminal habilitada para el toque inteligente.
3 Terminal El pase se transmite a la terminal (una coincidencia válida de ID de colector).
(Coinciden con múltiples IDs de colector válidos). Muestra un carrusel de pases válidos y transmite el que seleccionó el usuario.

Ten en cuenta que la validez de un pase depende de la configuración específica del objeto del pase. Asegúrate de verificar las siguientes propiedades del objeto de pase:

  • state
  • validTimeInterval

Ejemplo de recopilación de toque inteligente

En la siguiente tabla, se describen las entidades emisoras y los pases que se usarán en este ejemplo:

Nombre del comercio ILuvCoffee Café-Foo Moca-R-U
ID de la entidad emisora 123 456 789
ID del colector 11111111 44444444 77777777
Niveles de lealtad R-Básico Mis recompensas
R-Oro

ILuvCoffee tiene dos niveles de lealtad diferentes: R-Basic y R-Gold. Mientras tanto, Coffee-Foo tiene un programa de lealtad con un solo nivel, Mis recompensas, y Mocha-R-Us no tiene ningún programa de lealtad.

Como parte de una campaña de promoción cruzada, los comercios desean tener las siguientes opciones disponibles para sus clientes:

  • Los clientes del nivel R-Basic pueden usar el toque inteligente para canjear su membresía de lealtad en Coffee-Foo y Mocha-R-Us.
  • Los clientes del nivel R-Gold no necesitan canje con el toque inteligente.
  • Los clientes de Mis recompensas pueden usar el toque inteligente para canjear su membresía de lealtad únicamente en Coffee-Foo.

Para que esta campaña funcione, cada clase de lealtad necesitará los siguientes valores establecidos en la propiedad redemptionIssuers de la definición de la clase.

Clase de lealtad IDs de las entidades emisoras de canje
R-Básico ["456", "789"]
R-Oro []
Mis recompensas ["456"]

Con esta configuración, cualquier objeto de pase que haga referencia a estas clases tendrá los siguientes IDs de colector:

  • R‐Básico: 44444444, 77777777
  • R-Gold: No se incluirán IDs de recaudador.
  • Mis recompensas: 44444444

Autenticación del colector en el momento de presionar

Como parte de la configuración del emisor, una cuenta de la entidad emisora puede tener varias claves públicas asociadas a ella. Estas claves públicas se almacenan en la app de la Billetera de Google, que las usa para la autenticación cuando un usuario presiona su dispositivo en una terminal habilitada para el toque inteligente. Este paso de autenticación se lleva a cabo después de que la app encuentra un objeto de pase emitido para el usuario con un ID de colector que coincide con el valor anunciado por la terminal.

Para continuar con el ejemplo de la sección anterior, en la siguiente tabla, se describen las claves públicas asociadas con cada entidad emisora.

Nombre del comercio ILuvCoffee Café-Foo Moca-R-U
ID de la entidad emisora 123 456 789
ID del colector 11111111 44444444 77777777
Niveles de lealtad R-Básico Mis recompensas
R-Oro
Claves públicas aaa bbb

Un cliente de ejemplo tiene las siguientes tarjetas de lealtad guardadas en la app de la Billetera de Google:

  • ILuvCoffee: R-Básico
  • Coffee-Foo: Mis recompensas

Al igual que antes, los siguientes valores se establecen en la propiedad redemptionIssuers para cada clase de lealtad.

  • R-Básico: ["456", "789"]
  • Mis recompensas: ["456"]

Si el usuario toca su dispositivo en las terminales de cada comercio, hay tres resultados posibles:

Terminal del comercio Resultado
ILuvCoffee Dado que ILuvCoffee (ID de la entidad emisora de canje 123) no está configurado actualmente para canjear su propia clase de lealtad, R-Basic, no se transmite nada.
Café-Foo La app de la Billetera de Google se autentica en la terminal Coffee-Foo con la clave pública bbb. Según la pantalla actual que el usuario esté viendo en su dispositivo, ocurrirá una de las situaciones que se enumeran en la sección Experiencia del usuario.
Moca-R-U En este ejemplo, no hay una clave pública para Mocha-R-Us. Aunque el programa R-Basic se puede canjear con el comercio, no puede autenticarse en la terminal, por lo que no se transmitirá nada.

Límites de autenticación

Cuando se sincroniza un pase con la app de la Billetera de Google de un usuario, se buscan todas las entidades emisoras de canje de ese pase desde el backend de la Billetera de Google. El ID de recaudador, las claves públicas y las versiones de claves de cada entidad emisora de canje se almacenan de forma local en la app de la Billetera de Google.

Un pase puede tener muchos IDs de entidad emisora de canje. Luego, cada uno se asigna a un ID de recopilador específico para un comercio determinado. Además, puede haber muchas claves públicas y versiones de claves para un solo ID de colector.

La app de la Billetera de Google no intentará autenticarse en una terminal si no tiene pases que se puedan canjear en ella. Se basa en el ID de recopilador y la versión de clave pública. Si quieres actualizar las claves públicas de tu pase, la terminal debe tener una conexión a Internet para que pueda recuperar las claves públicas nuevas del backend de la Billetera de Google.

Un solo pase se puede asociar con muchas claves públicas a la vez. Consulta Configuración del comercio a fin de obtener información para configurar varias claves públicas para el mismo pase.

Transmisión del valor durante el toque

Para enviar datos desde un pase durante el toque, se debe configurar el smartTapRedemptionValue del objeto del pase. Una vez que se habilita la clase que corresponde al objeto para el toque inteligente, este valor se enviará a la terminal.

Según tu integración y tu caso de uso, este valor se usará para identificar el pase del usuario y realizar cualquier lógica de transacción necesaria, como la siguiente:

  1. Actualizar el saldo o el estado del usuario
  2. Actualizar tu propio backend según la transacción
  3. Emite una actualización al objeto Pass con la API de la Billetera de Google para que refleje cualquier cambio en el estado del usuario en su dispositivo

La terminal y la app de la Billetera de Google controlan la encriptación de todos los datos transmitidos a través de NFC. La terminal controla la desencriptación de los datos después de que se realiza el toque inteligente. Dentro de los datos, hay registros NDEF de Objeto de Servicio que representan cada pase transmitido. El Service number NDEF Record del objeto de servicio tiene una carga útil que contiene el valor establecido en la propiedad smartTapRedemptionValue del objeto de pase. Esto significa que el desarrollador del pase no tiene que controlar la encriptación de los datos transmitidos.

Si deseas agregar otra capa de seguridad, puedes configurar la propiedad smartTapRedemptionValue para que solo el sistema que recibe los datos transmitidos (como un punto de venta) pueda desencriptarlos. Sin embargo, el desarrollador del pase y el administrador del POS serán responsables del proceso de encriptación y desencriptación.