Prezentare generală
Notificările viitoare privind gestionarea ciclului de viață al token-urilor (LCM) sunt trimise de la API-ul Google Pay Online către URL-ul tokenUpdateUrl furnizat în momentul tranzacției inițiale. Acestea sunt trimise dacă un token este dezactivat sau șters. De asemenea, sunt trimise în baza principiului „cele mai bune eforturi”, cu reîncercări pentru livrările eșuate. Iată un exemplu de flux LCM atunci când un card este eliminat din Google Wallet de către un utilizator:
Cerere de notificare a actualizării jetonului comerciantului
Un mesaj HTTP POST de la API-ul Google Pay Online conține un corp JSON care încapsulează o sarcină utilă criptată. Sarcina utilă este criptată cu cheia dvs. publică de criptare partajată și semnată cu cheia privată a Google. Puteți decripta cu cheia dvs. privată de criptare și verifica cu cheia de semnare rădăcină a Google . Acest format de încapsulare a sarcinii utilă criptate este identic cu ceea ce ați putea primi ca PaymentMethodToken . Puteți utiliza aceeași bibliotecă pentru a decripta această notificare LCM. În sarcina utilă criptată, există un obiect MerchantTokenUpdateNotificationRequest așa cum este detaliat aici.
| Proprietate | Tip | Necesitate | Descriere |
|---|---|---|---|
messageId | şir | Necesar | ID-ul unic al acestei notificări pentru deduplicarea mesajelor și în scopuri de depanare. Dacă această notificare nu este livrată cu succes, rămâne aceeași pentru încercările viitoare. |
targetNotificationUrl | şir | Necesar | Adresa URL dorită pentru această notificare. Trebuie să confirmați că această adresă URL este punctul final destinat pentru a primi notificări LCM cu token-uri de la Google Pay. |
timestamp | şir | Necesar | Marcajul temporal al momentului în care a fost creată inițial această notificare. Rămâne același pentru viitoarele încercări. Dacă primiți mai multe notificări pentru același ID de token, numai notificarea cu cea mai recentă marcaj temporal este considerată corectă. |
apiVersion | întreg | Necesar | Versiune majoră a API-ului. |
apiVersionMinor | întreg | Necesar | Versiune minoră a API-ului. |
merchantTokenId | Şir | Necesar | ID-ul token-ului comerciantului cu o actualizare. Acesta este ID-ul returnat inițial când utilizatorul a finalizat fluxul Google Pay pentru MIT. Acesta este un câmp din sarcina criptată, trimis în Obiect Card . |
cardUpdateInfo | Informații actualizare card | Necesar | Conține actualizări pentru token. |
Informații actualizare card
| Proprietate | Tip | Necesitate | Descriere |
|---|---|---|---|
fpanSuffix | şir | Condiţional | O descriere care ajută utilizatorii să identifice Numărul Contului Principal de Finanțare (FPAN) subiacent. Este un șir de patru cifre care conține ultimele patru caractere ale FPAN-ului. Când este prezent, se poate presupune că starea token-ului este activă. Nu este prezent dacă nu există nicio schimbare. |
tokenState | șir(enumerare) | Condiţional | Noua stare a token-ului, dacă a fost modificată de la tranzacția inițială sau de la notificarea anterioară. Nu este prezent dacă nu există nicio schimbare. Valoarea validă este |
Răspuns la notificarea actualizării jetonului comerciantului
Coduri de răspuns HTTP
| Cod de răspuns HTTP | Utilizare |
|---|---|
| 200 | Notificarea a fost primită cu succes. Informații suplimentare despre stare pot fi furnizate în corpul răspunsului ca obiect JSON, așa cum este descris în tabelul următor. |
| 401 | URL-ul targetNotificationUrl din MerchantTokenUpdateNotificationRequest este nevalid. Toate notificările viitoare pentru acest token pot fi dezactivate. |
| 5xx | Eroare temporară a serverului. Notificarea ar trebui trimisă din nou mai târziu. |
| Alte | Eroare neraportabilă. Notificarea nu ar trebui trimisă din nou ulterior. |
| Proprietate | Tip | Necesitate | Descriere |
|---|---|---|---|
requestMessageId | şir | Necesar | ID-ul mesajului generat în urma solicitării. Trebuie să corespundă cu ID-ul mesajului din solicitare, altfel răspunsul poate fi ignorat, iar notificările viitoare pentru acest token vor fi oprite. |
status | șir(enumerare) | Necesar | Comerciantul sau Furnizorul de Servicii de Plată (PSP) poate returna o stare care reflectă modul în care au preluat notificarea și utilizarea token-ului. Valorile valide sunt:
|
Exemplu
Notificare privind ciclul de viață
Cerere de notificare
Aceasta este solicitarea HTTP POST care conține notificarea LCM a tokenului, trimisă de Google Pay către terminalul dvs. Corpul este o sarcină utilă criptată.
Cerere 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\"}" }
Cerere de notificare de actualizare a jetonului comerciantului decriptată
{ // 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ăspuns la notificare
HTTP 200 OK Content-Type: application/json { // MerchantTokenUpdateNotificationResponse "requestMessageId": "ZlxoWhLC3su", "status": "SUCCESS", }
Testează cu endpoint-ul tokenUpdateUrl
În modul TEST, Google Pay trimite o notificare LCM pentru token-uri către adresa tokenUpdateUrl . Pentru a declanșa această notificare, urmați acești pași:
- Finalizați o tranzacție de test apelând
loadPaymentDatacu un obiect*TransactionInfo, populând câmpultokenUpdateUrlcu adresa URL a punctului final. - Serviciul Google va trimite o notificare LCM de tip token către endpoint-ul dvs.
- Verificați dacă puteți decripta notificarea folosind cheia privată. Rețineți că, în modul TEST, această notificare va schimba întotdeauna ultimele 4 cifre ale numărului cardului în „1234” și va conține
"tokenState": "DISABLED", indiferent de token-ul din solicitare.