Вы можете использовать Notifications sub-API, чтобы получать push-уведомления об изменениях данных в аккаунтах Merchant Center. Вместо того чтобы периодически опрашивать API для обнаружения изменений, вы можете подписаться на фиды событий в реальном времени, которые доставляются непосредственно в настроенную вами конечную точку HTTPS.
Дополнительный API Notifications поддерживает уведомления для следующих сервисов:
- Изменения статуса товара. Получайте оповещения в реальном времени, когда статус рассмотрения товара меняется (например, товар одобрен или отклонен) в любом из ваших связанных аккаунтов или дочерних аккаунтов.
- Изменения в сервисах аккаунта. Получайте оповещения в реальном времени о создании, изменении или удалении ресурса
AccountService(например, когда устанавливается, изменяется или удаляется связь с сервисом аккаунта).
Предварительные требования и настройка URI обратного вызова
Чтобы получать push-уведомления, необходимо указать callBackUri. URI обратного вызова должен отвечать следующим требованиям:
- Это должен быть общедоступный адрес HTTPS с действительным SSL-сертификатом, подписанным признанным центром сертификации.
- Должен принимать HTTP-запросы
POSTс заголовкомContent-Type, для которого задано значениеapplication/json. Чтобы подтвердить получение уведомления, необходимо вернуть один из следующих кодов статуса HTTP:
102200201202204
Один и тот же URI обратного вызова можно использовать для нескольких подписок. Чтобы минимизировать нагрузку на одну конечную точку, используйте уникальный URI обратного вызова для каждого расширенного аккаунта и типа события.
Управление подписками
Дополнительный API Notifications предоставляет методы для создания, перечисления, получения, обновления и удаления конфигураций уведомлений.
Создание подписки
Создание подписки зависит от типа события, которое вы хотите получать. Для каждого типа события требуются разные поля конфигурации и разные структуры полезной нагрузки.
Чтобы узнать, как создавать подписки и просматривать примеры запросов для каждого типа событий, ознакомьтесь с соответствующими руководствами:
- Как подписаться на уведомления об изменении статуса товаров
- Как подписаться на уведомления об изменениях в сервисах аккаунта
Получение списка подписок
Чтобы получить список всех подписок на уведомления для аккаунта, отправьте запрос 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.