Обзор под-API уведомлений

Вы можете использовать под-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
  }
}

Следующие шаги

Для настройки подписок и обработки декодированных данных для конкретных событий см.: