Flux de communication de Smart Tap

Communication entre un terminal et l'application Google Wallet

Un terminal s'identifie à l'aide d'un ID de marchand associé à un ID d'émetteur d'offres. Lorsque Smart Tap est utilisé, le terminal transmet son ID de marchand à l'appareil de l'utilisateur. L'application Google Wallet examine ensuite l'ID de classe et l'ID de marchand de chaque carte stockée. Lorsqu'une ou plusieurs correspondances sont trouvées, l'application Google Wallet transmet les cartes correspondantes au terminal. Pour en savoir plus sur la configuration, consultez Configuration du marchand.

Exemple 1 : Un émetteur d'offres

La section suivante décrit la configuration illustrée dans ce schéma.

Dans le schéma ci-dessus, il y a deux émetteurs différents :

  • L'émetteur 2018 est un développeur de cartes (également appelé "agrégateur").
  • L'émetteur 1990 est un marchand, fooPizza (également appelé "émetteur d'offres").

L'émetteur d'offres, fooPizza, souhaite activer la fonctionnalité Smart Tap pour sa carte (gérée par l'agrégateur). L'agrégateur et l'émetteur d'offres doivent suivre la procédure ci-dessous afin d'activer Smart Tap pour les terminaux du marchand.

Étape Rôle Description
1 Agrégateur Créez une classe et un objet de carte (dans le schéma, abc et 123, respectivement).
2 Agrégateur Incluez l'ID de l'émetteur d'offres dans la propriété redemptionIssuers de la classe de carte. Cela indique à Google Wallet que l'ID d'émetteur 1990 est autorisé à utiliser des objets de carte qui font référence à cette classe.
3 Émetteur d'offres Obtenez un ID de marchand (dans le schéma, 12345678).
4 Émetteur d'offres Définissez l'ID de marchand 12345678 sur chaque terminal compatible avec Smart Tap qui sera utilisé. Tout objet ayant l'ID de classe abc et l'ID de marchand 12345678 sera transmis au lecteur.

Exemple 2 : Plusieurs émetteurs d'offres

Une même classe de carte peut comporter plusieurs émetteurs d'offres. Pour qu'un émetteur d'offres puisse utiliser une classe de carte spécifique, son ID doit être inclus dans la propriété redemptionIssuers de la classe. Chaque émetteur d'offres possède alors son propre ID de marchand, qui est configuré sur ses terminaux compatibles avec Smart Tap.

La section suivante décrit la configuration illustrée dans ce schéma.

Dans le schéma ci-dessus, il y a trois émetteurs différents :

  • L'émetteur 8088 est un développeur de cartes (agrégateur).
  • L'émetteur 1990 est un marchand, fooPizza (émetteur d'offres).
  • L'émetteur 2018 est un marchand, yumPie (émetteur d'offres).

L'agrégateur et les émetteurs d'offres doivent suivre la procédure ci-dessous afin d'activer Smart Tap pour les terminaux des marchands.

Étape Rôle Description
1 Agrégateur Créez une classe et un objet de carte (dans le schéma, abc et 123, respectivement).
2 Agrégateur Incluez les ID des émetteurs d'offres dans la propriété redemptionIssuers de la classe de carte. Cela indique à Google Wallet que les ID d'émetteur 1990 et 2018 sont autorisés à utiliser des objets de carte qui font référence à cette classe.
3 Émetteurs d'offres Obtenez les ID de marchand (dans le schéma, 12345678 pour fooPizza et 18802001 pour yumPie).
4 Émetteurs d'offres Définissez l'ID de marchand correspondant sur chaque terminal compatible avec Smart Tap qui sera utilisé. Tout objet ayant l'ID de classe abc et un ID de marchand correspondant sera transmis au lecteur.

Exemple 3 : Aucun agrégateur

Une classe de carte peut être développée et émise dans le même compte d'émetteur. Dans ce cas, aucun agrégateur ne gère les classes de carte pour plusieurs émetteurs d'offres. Pour que le développeur de cartes puisse utiliser une classe de carte spécifique, il doit inclure son ID d'émetteur dans la propriété redemptionIssuers de la classe. Le développeur de cartes doit ensuite obtenir un ID de marchand et le configurer sur ses terminaux compatibles avec Smart Tap.

La section suivante décrit la configuration illustrée dans ce schéma.

Le développeur de cartes doit suivre la procédure ci-dessous afin d'activer Smart Tap pour les terminaux du marchand.

Étape Rôle Description
1 Développeur de cartes Créez une classe et un objet de carte (dans le schéma, abc et 123, respectivement).
2 Développeur de cartes Incluez son ID d'émetteur dans la propriété redemptionIssuers de la classe de carte. Cela indique à Google Wallet que l'ID d'émetteur 2018 est autorisé à utiliser des objets de carte qui font référence à cette classe.
3 Développeur de cartes Obtenez un ID de marchand (dans le schéma, 12345678).
4 Développeur de cartes Définissez l'ID de marchand correspondant sur chaque terminal compatible avec Smart Tap qui sera utilisé. Tout objet ayant l'ID de classe abc et un ID de marchand correspondant sera transmis au lecteur.

Expérience utilisateur et comportement

Le comportement des données transmises entre un terminal et l'application Google Wallet dépend de l'utilisateur et de la manière dont il interagit avec cette application à ce moment-là.

Scénario 1 : L'utilisateur ouvre une carte spécifique

Étape Rôle Description
1 Utilisateur Sélectionnez une carte spécifique dans l'application Google Wallet.
2 Utilisateur Passez votre appareil sur un terminal compatible avec Smart Tap.
3 Terminal (L'ID de marchand correspond) La carte est transmise au terminal.
(L'ID de marchand ne correspond pas) La carte n'est pas transmise au terminal.

Scénario 2 : Onglet "Accueil" de Google Wallet ou vue d'écran déverrouillée

Étape Rôle Description
1 Utilisateur Accédez à l'onglet "Accueil" de l'application Google Wallet ou déverrouillez l'écran de l'appareil.
2 Utilisateur Passez votre appareil sur un terminal compatible avec Smart Tap.
3 Terminal (Un seul ID de marchand valide correspond) La carte est transmise au terminal.
(Plusieurs ID de marchand valides correspondent) Affichez un carrousel de cartes valides et transmettez celle sélectionnée par l'utilisateur.

Notez que la validité d'une carte dépend de la configuration spécifique de l'objet de carte. Veillez à vérifier les propriétés suivantes de l'objet de carte :

  • state
  • validTimeInterval

Exemple d'utilisation de Smart Tap chez des marchands

Le tableau suivant décrit les émetteurs et les cartes qui seront utilisés dans cet exemple :

Nom du marchand ILuvCoffee Coffee-Foo Mocha-R-Us
ID d'émetteur 123 456 789
ID de marchand 11111111 44444444 77777777
Niveaux de fidélité R-Basic My Rewards
R-Gold

ILuvCoffee propose deux niveaux de fidélité différents : R-Basic et R-Gold. Dans le même temps, Coffee-Foo dispose d'un programme de fidélité à un seul niveau, My Rewards, et Mocha-R-Us n'a pas de programme de fidélité.

Lors d'une campagne de promotion croisée, les marchands souhaitent proposer les options suivantes à leurs clients :

  • Les clients bénéficiant du niveau R-Basic peuvent utiliser Smart Tap pour profiter de leur programme de fidélité chez Coffee-Foo et Mocha-R-Us.
  • Les clients bénéficiant du niveau R-Gold n'ont pas besoin d'utiliser Smart Tap.
  • Les clients bénéficiant du niveau My Rewards peuvent utiliser Smart Tap pour profiter de leur programme de fidélité uniquement chez Coffee-Foo.

Pour que cette campagne fonctionne, les valeurs suivantes doivent être définies dans la propriété redemptionIssuers de la définition de chaque classe de fidélité.

Classe de fidélité ID d'émetteur d'offres
R-Basic ["456", "789"]
R-Gold []
My Rewards ["456"]

Avec cette configuration, tous les objets de carte qui font référence à ces classes auront les ID de marchand suivants :

  • R-Basic : 44444444, 77777777
  • R-Gold : aucun ID de marchand ne sera inclus
  • My Rewards : 44444444

Authentification du marchand au moment de la transaction

Lors de la configuration de l'émetteur, un compte d'émetteur peut être associé à plusieurs clés publiques. Ces clés publiques sont stockées dans l'application Google Wallet, qui les utilise pour l'authentification lorsqu'un utilisateur passe son appareil sur un terminal compatible avec Smart Tap. Cette étape d'authentification a lieu une fois que l'application a trouvé un objet de carte émis pour l'utilisateur dont l'ID de marchand correspond à la valeur annoncée par le terminal.

Sur la base de l'exemple de la section précédente, le tableau suivant décrit les clés publiques associées à chaque émetteur.

Nom du marchand ILuvCoffee Coffee-Foo Mocha-R-Us
ID d'émetteur 123 456 789
ID de marchand 11111111 44444444 77777777
Niveaux de fidélité R-Basic My Rewards
R-Gold
Clés publiques aaa bbb

Par exemple, les cartes de fidélité suivantes sont enregistrées dans l'application Google Wallet d'un client :

  • ILuvCoffee : R-Basic
  • Coffee-Foo : My Rewards

Comme précédemment, les valeurs suivantes sont définies dans la propriété redemptionIssuers de chaque classe de fidélité.

  • R-Basic : ["456", "789"]
  • My Rewards : ["456"]

Si l'utilisateur passe son appareil sur le terminal de chaque marchand, trois résultats sont possibles :

Terminal du marchand Résultat
ILuvCoffee Comme ILuvCoffee (ID d'émetteur d'offres 123) n'est pas configuré actuellement pour utiliser sa propre classe de fidélité (R-Basic), rien n'est transmis.
Coffee-Foo L'application Google Wallet s'authentifie auprès du terminal Coffee-Foo à l'aide de la clé publique bbb. En fonction de l'écran actuellement affiché sur l'appareil de l'utilisateur, l'un des scénarios décrits dans la section Expérience utilisateur se produira.
Mocha-R-Us Il n'existe aucune clé publique pour Mocha-R-Us dans cet exemple. Même si le programme R-Basic peut être utilisé avec le marchand, il ne peut pas s'authentifier auprès du terminal. Par conséquent, rien ne sera transmis.

Limites de l'authentification

Lorsqu'une carte est synchronisée avec l'application Google Wallet d'un utilisateur, tous les émetteurs d'offres associés à cette carte sont recherchés depuis le backend Google Wallet. L'ID de marchand, les clés publiques et les versions de clé de chaque émetteur d'offres sont stockés localement dans l'application Google Wallet.

Une carte peut comporter plusieurs ID d'émetteur d'offres. Chacun d'eux est ensuite associé à un ID de marchand spécifique. De plus, il peut y avoir plusieurs clés publiques et versions de clé pour un même ID de marchand.

L'application Google Wallet n'essaiera pas de s'authentifier auprès d'un terminal si elle ne contient aucune carte pouvant être utilisée par ce terminal. Elle se base sur l'ID de marchand et la version de clé publique. Pour mettre à jour les clés publiques de votre carte, le terminal doit être connecté à Internet afin de pouvoir récupérer les nouvelles clés publiques depuis le backend Google Wallet.

Une même carte peut être associée à plusieurs clés publiques à la fois. Consultez Configuration du marchand afin de savoir comment définir plusieurs clés publiques pour la même carte.

Transmission de valeur lors de la transaction

Pour envoyer des données à partir d'une carte lors de la transaction, le paramètre smartTapRedemptionValue de l'objet de carte doit être défini. Une fois que la classe correspondant à l'objet est activée pour Smart Tap, cette valeur est envoyée au terminal.

En fonction de votre intégration et de votre cas d'utilisation, cette valeur servira à identifier la carte de l'utilisateur et à effectuer toutes les logiques de transaction nécessaires, telles que les suivantes :

  1. Mettre à jour le solde ou l'état de l'utilisateur
  2. Mettre à jour votre propre backend en fonction de la transaction
  3. Mettre à jour l'objet de carte à l'aide de l'API Google Wallet afin que les modifications de l'état de l'utilisateur soient prises en compte sur son appareil

Le terminal et l'application Google Wallet gèrent le chiffrement de toutes les données transmises via la technologie NFC. Le terminal gère le déchiffrement des données après que Smart Tap a été utilisé. Les données contiennent des enregistrements NDEF d'objets de service qui représentent chaque carte transmise. Le Service number NDEF Record de l'objet de service présente une charge utile qui contient la valeur définie dans la propriété smartTapRedemptionValue de l'objet de carte. Cela signifie que le développeur de cartes n'a pas besoin de gérer le chiffrement des données transmises.

Si vous souhaitez ajouter une couche de sécurité supplémentaire, vous pouvez définir la propriété smartTapRedemptionValue afin que seul le système recevant les données transmises (comme un point de vente) puisse les déchiffrer. Le développeur de cartes et l'administrateur du point de vente seront toutefois responsables du processus de chiffrement/déchiffrement.