Обзор
Уведомления о дальнейшем управлении жизненным циклом токенов (LCM) отправляются из API Google Pay Online на адрес tokenUpdateUrl , указанный во время первоначальной транзакции. Они отправляются, если токен деактивирован или удален. Также они отправляются в порядке очередности попыток с повторными попытками в случае неудачных доставок. Вот пример работы LCM при удалении карты из Google Wallet пользователем:
MerchantTokenUpdateNotificationRequest
HTTP POST-сообщение от API Google Pay Online содержит JSON-тело, инкапсулирующее зашифрованную полезную нагрузку. Полезная нагрузка зашифрована с помощью вашего общего открытого ключа шифрования и подписана закрытым ключом Google. Вы можете расшифровать её с помощью своего закрытого ключа шифрования и проверить с помощью корневого ключа подписи Google . Формат этой зашифрованной полезной нагрузки идентичен тому, что вы могли бы получить в качестве PaymentMethodToken . Вы можете использовать ту же библиотеку для расшифровки этого уведомления LCM. Внутри зашифрованной полезной нагрузки находится объект MerchantTokenUpdateNotificationRequest , как подробно описано здесь.
| Свойство | Тип | Необходимость | Описание |
|---|---|---|---|
messageId | нить | Необходимый | Уникальный идентификатор этого уведомления используется для устранения дубликатов сообщений и в целях отладки. Если это уведомление не будет успешно доставлено, то при последующих попытках оно останется без изменений. |
targetNotificationUrl | нить | Необходимый | Указан URL-адрес, предназначенный для этого уведомления. Вам необходимо подтвердить, что этот URL-адрес является вашей целевой точкой для получения уведомлений о токене LCM от Google Pay. |
timestamp | нить | Необходимый | Отметка времени создания этого уведомления. Она остается неизменной при последующих попытках. Если вы получаете несколько уведомлений для одного и того же идентификатора токена, то точным считается только уведомление с самой последней меткой времени. |
apiVersion | инт | Необходимый | Основная версия API. |
apiVersionMinor | инт | Необходимый | Дополнительная версия API. |
merchantTokenId | Нить | Необходимый | Идентификатор токена продавца с обновлением. Это идентификатор, возвращенный пользователем при завершении процесса оплаты через Google Pay для MIT. Это поле в зашифрованном содержимом, отправляемом в Объект Card . |
cardUpdateInfo | CardUpdateInfo | Необходимый | Содержит обновления для токена. |
CardUpdateInfo
| Свойство | Тип | Необходимость | Описание |
|---|---|---|---|
fpanSuffix | нить | Условный | Описание, помогающее пользователям идентифицировать основной номер счета финансирования (FPAN). Это четырехзначная строка, содержащая последние четыре символа FPAN. Если оно присутствует, можно предположить, что состояние токена активно. Оно отсутствует, если нет изменений. |
tokenState | строка(перечисление) | Условный | Новое состояние токена, если оно изменилось с момента первоначальной транзакции или предыдущего уведомления. Оно отсутствует, если нет изменений. Допустимое значение — |
MerchantTokenUpdateNotificationResponse
коды ответов HTTP
| код ответа HTTP | Использование |
|---|---|
| 200 | Уведомление успешно получено. Дополнительная информация о статусе может быть предоставлена в теле ответа в виде объекта JSON, как описано в следующей таблице. |
| 401 | Параметр targetNotificationUrl в запросе MerchantTokenUpdateNotificationRequest недействителен. Все будущие уведомления для этого токена можно отключить. |
| 5xx | Временная ошибка сервера. Уведомление будет отправлено повторно позже. |
| Другой | Ошибка, которую невозможно исправить. Уведомление не следует отправлять повторно в дальнейшем. |
| Свойство | Тип | Необходимость | Описание |
|---|---|---|---|
requestMessageId | нить | Необходимый | Идентификатор сообщения, сгенерированный в результате запроса. Он должен совпадать с идентификатором сообщения из запроса, в противном случае ответ может быть проигнорирован, и дальнейшие уведомления по этому токену будут прекращены. |
status | строка(перечисление) | Необходимый | Продавец или поставщик платежных услуг (PSP) может вернуть статус, отражающий получение уведомления и использование токена. Допустимые значения:
|
Пример
Уведомление о жизненном цикле
Запрос на уведомление
Это HTTP POST-запрос, содержащий уведомление о токене LCM, отправленное Google Pay на вашу конечную точку. Тело запроса представляет собой зашифрованную полезную нагрузку.
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\"}" }
Расшифрованный запрос на уведомление об обновлении токена продавца (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" } }
Ответ на уведомление
HTTP 200 OK Content-Type: application/json { // MerchantTokenUpdateNotificationResponse "requestMessageId": "ZlxoWhLC3su", "status": "SUCCESS", }
Протестируйте с помощью вашей конечной точки tokenUpdateUrl.
В тестовом режиме Google Pay отправляет уведомление LCM о токене на ваш tokenUpdateUrl . Чтобы это активировать, выполните следующие действия:
- Выполните тестовую транзакцию, вызвав
loadPaymentDataс объектом*TransactionInfoи заполнив полеtokenUpdateUrlURL-адресом вашей конечной точки. - Сервис Google отправит уведомление LCM с токеном на вашу конечную точку.
- Убедитесь, что вы можете расшифровать уведомление, используя свой закрытый ключ. Обратите внимание, что в тестовом режиме это уведомление всегда будет менять последние 4 цифры номера карты на "1234" и содержать
"tokenState": "DISABLED", независимо от токена в запросе.