Présentation
Les futures notifications de gestion du cycle de vie des jetons (LCM) sont envoyées depuis l'API Google Pay Online à l'adresse tokenUpdateUrl fournie lors de la transaction d'origine. Elles sont envoyées si un jeton est désactivé ou supprimé. Elles sont également envoyées de la manière la plus optimale possible, avec des nouvelles tentatives en cas d'échec de l'envoi. Voici un exemple de flux LCM lorsqu'un utilisateur supprime une carte de Google Wallet :
MerchantTokenUpdateNotificationRequest
Un message HTTP POST provenant de l'API Google Pay Online contient un corps JSON encapsulant une charge utile chiffrée. La charge utile est chiffrée avec votre clé de chiffrement publique partagée et signée par la clé privée de Google. Vous pouvez déchiffrer les données avec votre clé de chiffrement privée et les valider avec la clé de signature racine de Google.
Ce format d'encapsulation de charge utile chiffrée est identique à celui que vous pouvez recevoir en tant que PaymentMethodToken. Vous pouvez utiliser la même bibliothèque pour déchiffrer cette notification LCM.
Dans la charge utile chiffrée, il existe un objet MerchantTokenUpdateNotificationRequest, comme indiqué ici.
| Propriété | Type | Nécessité | Description |
|---|---|---|---|
messageId |
chaîne | Obligatoire | ID unique de cette notification permettant de dédupliquer les messages et à des fins de débogage. Si cette notification n'est pas envoyée, elle reste la même pour les futures tentatives. |
targetNotificationUrl |
chaîne | Obligatoire | URL prévue pour cette notification. Vous devez confirmer que cette URL est le point de terminaison prévu pour recevoir les notifications LCM de jeton de Google Pay. |
timestamp |
chaîne | Obligatoire | Horodatage de la création de cette notification. Il reste le même pour les futures tentatives. Si vous recevez plusieurs notifications pour le même ID de jeton, seule celle avec le dernier code temporel est considérée comme exacte. |
apiVersion |
int | Obligatoire | Version majeure de l'API. |
apiVersionMinor |
int | Obligatoire | Version mineure de l'API. |
merchantTokenId |
Chaîne | Obligatoire | ID du jeton du marchand avec une mise à jour. Il s'agit de l'ID renvoyé à l'origine lorsque l'utilisateur a terminé le flux Google Pay pour le MIT. Il s'agit d'un champ de la charge utile chiffrée, envoyé dans l'objet
Card de
Objet Card.
|
cardUpdateInfo |
CardUpdateInfo | Obligatoire | Contient les mises à jour du jeton. |
CardUpdateInfo
| Propriété | Type | Nécessité | Description |
|---|---|---|---|
fpanSuffix |
chaîne | Conditionnel | Description permettant aux utilisateurs d'identifier le numéro de compte principal de financement (FPAN) sous-jacent. Il s'agit d'une chaîne de quatre chiffres contenant les quatre derniers caractères du FPAN. En sa présence, l'état du jeton peut être considéré comme actif. Elle n'est pas présente si aucune modification n'a été apportée. |
tokenState |
string(enum) | Conditionnel | Nouvel état du jeton, s'il a changé depuis la transaction initiale ou la notification précédente. Elle n'est pas présente si aucune modification n'a été apportée. La plage de valeurs valides est |
MerchantTokenUpdateNotificationResponse
Codes de réponse HTTP
| Code de réponse HTTP | Utilisation |
|---|---|
| 200 | La notification a bien été reçue. Des informations supplémentaires sur l'état peuvent être fournies dans le corps de la réponse sous la forme d'un objet JSON, comme décrit dans le tableau suivant. |
| 401 | Le targetNotificationUrl dans MerchantTokenUpdateNotificationRequest n'est pas valide. Vous pouvez désactiver toutes les futures notifications pour ce jeton. |
| 5xx | Erreur temporaire du serveur. La notification doit être renvoyée ultérieurement. |
| Autre | Erreur non récupérable. La notification ne doit pas être renvoyée ultérieurement. |
| Propriété | Type | Nécessité | Description |
|---|---|---|---|
requestMessageId |
chaîne | Obligatoire | ID du message généré à partir de la requête. Il doit correspondre à l'ID du message de la requête. Sinon, la réponse peut être ignorée et les futures notifications pour ce jeton sont arrêtées. |
status |
string(enum) | Obligatoire | Le marchand ou le prestataire de services de paiement (PSP) peuvent renvoyer un état qui reflète leur ingestion de la notification et leur utilisation du jeton. Les valeurs valides sont les suivantes :
|
Exemple
Notification de cycle de vie
Demande de notification
Il s'agit de la requête HTTP POST contenant la notification LCM du jeton, envoyée par Google Pay à votre point de terminaison. Le corps est une charge utile chiffrée.
Requête HTTP
HTTP POST /token/notification/123 Host: api.merchant.com Content-Type: application/json { "protocolVersion":"ECv2", "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d", "intermediateSigningKey":{ "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}", "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"] }, "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}" }
Decrypted MerchantTokenUpdateNotificationRequest
{ // MerchantTokenUpdateNotificationRequest "messageId": "ZlxoWhLC3su", "targetNotificationUrl": "https://api.merchant.com/token/notification/123", "timestamp": "2025-03-28T07:53:12.39Z", "apiVersion": 1, "apiVersionMinor": 0, "merchantTokenId": "123", "cardUpdateInfo": { "tokenState": "DISABLED" } }
Réponse de notification
HTTP 200 OK Content-Type: application/json { // MerchantTokenUpdateNotificationResponse "requestMessageId": "ZlxoWhLC3su", "status": "SUCCESS", }
Tester avec votre point de terminaison tokenUpdateUrl
En mode TEST, Google Pay envoie une notification LCM de jeton à votre tokenUpdateUrl.
Pour déclencher cette action, procédez comme suit :
- Effectuez une transaction test en appelant
loadPaymentDataavec un objet*TransactionInfo, en renseignant le champtokenUpdateUrlavec l'URL de votre point de terminaison. - Le service Google enverra une notification LCM de jeton à votre point de terminaison.
- Vérifiez que vous pouvez déchiffrer la notification à l'aide de votre clé privée. Notez qu'en mode TEST, cette notification remplacera toujours les quatre derniers chiffres du numéro de carte par "1234" et contiendra
"tokenState": "DISABLED", quel que soit le jeton de la demande.