Вы можете использовать под-API «Уведомления» для получения push-уведомлений при изменении данных в ваших учетных записях Merchant Center. Вместо периодического опроса API для обнаружения изменений вы можете подписаться на потоки событий в реальном времени, доставляемые непосредственно на настраиваемую вами конечную точку HTTPS.
Подразделение API «Уведомления» поддерживает уведомления для:
- Изменения статуса продукта : Получайте оповещения в режиме реального времени об изменении статуса одобрения продукта (например, когда продукт отклоняется или одобряется) во всех ваших связанных учетных записях или суб-учетных записях.
- Изменения в службе учетных записей : Получайте оповещения в режиме реального времени о создании, обновлении или удалении ресурса
AccountService(например, при установлении, изменении или удалении связи со службой учетных записей).
Предварительные условия и настройка URI обратного вызова
Для получения push-уведомлений необходимо указать callBackUri . Ваш callback URI должен соответствовать следующим требованиям:
- Это должен быть общедоступный HTTPS-адрес с действительным SSL-сертификатом, подписанным признанным центром сертификации.
- Необходимо принимать HTTP
POSTзапросы с заголовкомContent-Typeустановленным вapplication/json. Для подтверждения получения уведомления необходимо вернуть один из следующих кодов состояния HTTP:
-
102 -
200 -
201 -
202 -
204
-
Для нескольких подписок можно использовать один и тот же URI обратного вызова. Чтобы минимизировать нагрузку на одну конечную точку, используйте уникальный URI обратного вызова для каждой расширенной учетной записи и типа события.
Управление подписками
Подразделение API «Уведомления» предоставляет методы для создания, отображения, получения, обновления и удаления конфигураций уведомлений.
Создать подписку
Создание подписки зависит от типа события, которое вы хотите получать. Для каждого типа события требуются разные поля конфигурации, и каждая подписка содержит различные структуры полезной нагрузки.
Чтобы узнать, как создавать подписки и просмотреть примеры запросов для каждого типа событий, см. соответствующие руководства:
- Подписаться на уведомления об изменениях статуса продукта
- Подписаться на изменения в работе сервиса учетной записи
Список подписок
Чтобы отобразить список всех подписок на уведомления для учетной записи, отправьте GET запрос к коллекции notificationsubscriptions :
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions
Восстановить подписку
Для получения подробной информации о конкретной подписке используйте имя ресурса этой подписки:
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Обновить подписку
Чтобы обновить URI обратного вызова для существующей подписки, отправьте PATCH запрос с параметром update_mask , указывающим поля для обновления:
PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
"callBackUri": "https://example.com/updated-callback"
}
Удалить подписку
Чтобы прекратить получение уведомлений, удалите подписку:
DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Расшифровка уведомлений
Когда происходит событие, Google отправляет уведомление на ваш зарегистрированный callBackUri . Push-уведомление приходит в формате JSON с data закодированными в base64:
{"message":{"data":"{base64_encoded_string}"}}
Для доступа к содержимому JSON-события необходимо декодировать строку данных. Следующий пример контроллера Spring Boot демонстрирует, как получать и декодировать push-уведомления:
@RestController
public class ExampleController {
@RequestMapping(value = "/push",
method = RequestMethod.POST,
consumes = {"application/json"},
produces = {"text/plain"})
@ResponseStatus(HttpStatus.OK)
public void handleNotification(@RequestBody String message) {
JSONObject jsonObject = new JSONObject(message);
JSONObject jsonMessage = jsonObject.getJSONObject("message");
String encodedData = jsonMessage.getString("data");
byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
String decodedPayload = new String(decodedBytes);
// Process decodedPayload according to the registered event type
}
}
Следующие шаги
Для настройки подписок и обработки декодированных данных для конкретных событий см.:
- Получайте push-уведомления об изменениях статуса продукта : узнайте, как подписаться на обновления об отклонении и утверждении продукта, а также как анализировать полезную нагрузку
ProductStatusChangeMessage. - Получайте push-уведомления об изменениях в работе учетных записей : узнайте, как подписаться на обновления взаимосвязей учетных записей и анализировать полезную нагрузку
ResourceChangeMessage.