Ce guide explique comment utiliser des rappels avec l'API Google Wallet. Lorsqu'un une carte est créée ou supprimée, Google peut rappeler point de terminaison de votre choix. Ce rappel est spécifique à la carte et inclut des données sur l'événement, comme l'externalPassId et le type d'événement. Cela peut être utilisé pour suivre le nombre d'ajouts et de suppressions effectués par les utilisateurs. Pour Par exemple, les rappels peuvent être configurés pour envoyer des événements à une instance application pour suivre l'engagement client lors d'événements promotionnels.
Prérequis
Avant de commencer, vérifiez les conditions préalables suivantes:
- Mettez en place un point de terminaison HTTPS qui gère les requêtes POST. Ce point de terminaison a besoin pour qu'elles soient accessibles au public.
-
Mettre à jour le rappel par programmation
l'URL du point de terminaison pour l'émetteur. Consultez le
callbackOptions
de l'émetteur dans l'API REST. - Recommandation: utilisez la bibliothèque Tink pour vérifier les signatures.
Implémenter des rappels
Pour chaque ajout ou suppression effectué par l'utilisateur sur une carte , Google rappelle aux marchands les détails de l'ajout ou de la suppression sur une rappel de l'émetteur URL. Les marchands doivent d'abord utiliser les clés publiques pour vérifier l'authenticité le message. Une fois que les rappels ont vérifié le message, ils peuvent être utilisés pour les opérations en aval.
Vérifier la signature
Nous vous recommandons d'utiliser la bibliothèque Tink pour vérifier la signature du message
lorsque vous implémentez votre point de terminaison HTTPS. La
Bibliothèque Tink
fournit PaymentMethodTokenRecipient
, un utilitaire qui
vérifie automatiquement la signature et renvoie le message
validation réussie.
L'exemple suivant montre comment utiliser la bibliothèque Tink pour implémenter
PaymentMethodTokenRecipient
:
import java.io.IOException; import javax.servlet.http.*; import com.google.common.io.CharStreams; import com.google.crypto.tink.apps.paymentmethodtoken.*; // Replace ISSUER_ID with your issuer id private static final String RECIPIENT_ID = "ISSUER_ID"; private static final String PUBLIC_KEY_URL = "https://pay.google.com/gp/m/issuer/keys"; private static final String SENDER_ID = "GooglePayPasses"; private static final String PROTOCOL = "ECv2SigningOnly"; private static final GooglePaymentsPublicKeysManager keysManager = new GooglePaymentsPublicKeysManager.Builder() .setKeysUrl(PUBLIC_KEY_URL) .build(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { // Extract signed message with signature from POST request body. String signedMessage = CharStreams.toString(request.getReader()); PaymentMethodTokenRecipient recipient = new PaymentMethodTokenRecipient.Builder() .protocolVersion(PROTOCOL) .fetchSenderVerifyingKeysWith(keysManager) .senderId(SENDER_ID) .recipientId(RECIPIENT_ID) .build(); String serializedJsonMessage = recipient.unseal(signedMessage); // Use serializedJsonMessage to extract the details } catch (Exception e) { // Handle the error } }
Format de message attendu
Le format du message est JSON, sérialisé en chaîne avec le code suivant : propriétés:
Identifiant | Description |
---|---|
externalPassId |
ID complet de la carte externe. Utilise le format suivant: <issuer_id.external_pass_id> |
expTimeMillis |
Délai d'expiration en millisecondes depuis EPOCH. Après le délai d'expiration, le message doit être considéré comme non valide. |
eventType |
La valeur peut être del ou save pour
DELETE et SAVE .
|
nonce |
Nonce de suivi des diffusions en double. |
Gérer la requête d'un serveur Google
Voici une liste des champs clés de l'en-tête de la requête envoyé au point de terminaison de votre rappel:
- User-agent:
Googlebot
- Type de contenu:
application/json
Configurez votre serveur pour qu'il ne refuse pas la requête. Pour ce faire, vous pouvez
Définissez les éléments suivants dans robots.txt
:
User-agent: Googlebot Disallow:
Tentatives
Les rappels sont exécutés de la manière la plus optimale possible. Google utilisera des stratégies de nouvelle tentative courantes être résilient dans les cas où le point de terminaison du rappel ne répond pas ou a une des pannes intermittentes et annulent les tentatives en douceur.
Distributions en double
Dans certains cas, il peut y avoir des diffusions en double. Nous vous recommandons d'utiliser
nonce
pour les dédupliquer.