Уведомления об управлении жизненным циклом токенов

Обзор

Уведомления о дальнейшем управлении жизненным циклом токенов (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 строка(перечисление) Условный

Новое состояние токена, если оно изменилось с момента первоначальной транзакции или предыдущего уведомления.

Оно отсутствует, если нет изменений.

Допустимое значение — DISABLED .

MerchantTokenUpdateNotificationResponse

коды ответов HTTP

код ответа HTTP Использование
200 Уведомление успешно получено. Дополнительная информация о статусе может быть предоставлена ​​в теле ответа в виде объекта JSON, как описано в следующей таблице.
401 Параметр targetNotificationUrl в запросе MerchantTokenUpdateNotificationRequest недействителен. Все будущие уведомления для этого токена можно отключить.
5xx Временная ошибка сервера. Уведомление будет отправлено повторно позже.
Другой Ошибка, которую невозможно исправить. Уведомление не следует отправлять повторно в дальнейшем.
Свойство Тип Необходимость Описание
requestMessageId нить Необходимый

Идентификатор сообщения, сгенерированный в результате запроса.

Он должен совпадать с идентификатором сообщения из запроса, в противном случае ответ может быть проигнорирован, и дальнейшие уведомления по этому токену будут прекращены.

status строка(перечисление) Необходимый

Продавец или поставщик платежных услуг (PSP) может вернуть статус, отражающий получение уведомления и использование токена.

Допустимые значения:

  • SUCCESS
  • TOKEN_NOT_IN_USE
  • TOKEN_NOT_FOUND

Пример

Уведомление о жизненном цикле

Запрос на уведомление

Это 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 и заполнив поле tokenUpdateUrl URL-адресом вашей конечной точки.
  • Сервис Google отправит уведомление LCM с токеном на вашу конечную точку.
  • Убедитесь, что вы можете расшифровать уведомление, используя свой закрытый ключ. Обратите внимание, что в тестовом режиме это уведомление всегда будет менять последние 4 цифры номера карты на "1234" и содержать "tokenState": "DISABLED" , независимо от токена в запросе.