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 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 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.
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:
- Actualizar el saldo o el estado del usuario
- Actualizar tu propio backend según la transacción
- 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.