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