Всплывающее уведомление

На этой странице описано, как использовать push-уведомления с API для реселлеров.

Обзор

API для реселлеров использует API Pub/Sub для отправки push-уведомлений о событиях, связанных с подписками на Google Workspace. Например, вы можете настроить push-уведомления, чтобы получать оповещения об изменении статуса подписки клиента.

Предварительные требования

  • Включите API Pub/Sub для вашего проекта Google Cloud.
  • Предоставьте вашей учетной записи службы в облачном проекте роли IAM для Pub/Sub. Рекомендуется предоставить роль roles/pubsub.editor , но вы можете использовать и более специфические разрешения Pub/Sub .

Создать тему

Для создания темы зарегистрируйтесь в API реселлера, используя метод resellernotify.register . Этот метод принимает в качестве параметра адрес электронной почты учетной записи службы. Подписаться на вашу тему могут только учетные записи служб, авторизованные этим методом.

POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
  "serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}

В случае успешного ответа возвращается код состояния HTTP 200 и JSON-ответ, содержащий имя вашей темы Pub/Sub.

Пример ответа:

{
  "topicName": "projects/partner-watch/topics/C0abcdefg"
}

Для авторизации дополнительных учетных записей сервиса повторно вызовите команду resellernotify.register .

Отозвать доступ для служебной учетной записи

API для реселлеров позволяет отменить регистрацию учетных записей служб с помощью конечной точки resellernotify.unregister :

POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
  "serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}

Подписаться на тему

После создания темы Pub/Sub настройте способ обработки событий изменения вашим приложением. Выберите один из следующих вариантов:

  • Подписка на push-уведомления : Вы предоставляете HTTP POST запрос обратного вызова. Pub/Sub использует этот обратный вызов для уведомления вашего приложения о новых событиях.
  • Подписка по принципу «запроса» : ваше приложение периодически выполняет HTTP-запрос для получения изменений из очереди.

Пример запроса на подписку на тему:

PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME
{
  "topic": "TOPIC_NAME"
  // Only needed for push configurations
  "pushConfig": {
    "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
  },
}

Замените следующее:

  • PROJECT : Ваш проект в Google Cloud.
  • SUBSCRIPTION_NAME : Идентификационное имя для вашей подписки.
  • TOPIC_NAME : Созданная вами ранее тема Pub/Sub.
  • PUSH_NOTIFICATION_ENDPOINT : Ваша конечная точка обработчика push-уведомлений.

В случае успешного ответа возвращается код состояния HTTP 200 Пример ответа:

{
  "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME",
  "topic": "TOPIC_NAME",
  "pushConfig": {
    "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
    },
  "ackDeadlineSeconds": 10
}

Форматы уведомлений

Ниже приведён пример уведомления Pub/Sub. Данные сообщения представляют собой строку JSON, закодированную в base64.

{
  "message": {
    "attributes": {},
    "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9",
    "message_id": 1234567891012131
  },
  "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME"
}

Пример объекта message.data после декодирования:

{
  "customer_id": "C0abcdef",
  "customer_domain_name": "domain.com",
  "event_type": "SUBSCRIPTION_CANCELLED",
  "sku_id": "Google-Apps-Unlimited",
  "subscription_id": "1234567",
  // Optional fields dependent on event_type
  "subscription_suspension_reasons": [],
  "subscription_cancellation_reason": "REASON"
}

Типы событий

Возможные типы событий:

  • NEW_SUBSCRIPTION_CREATED : Создана новая подписка.
  • SUBSCRIPTION_TRIAL_ENDED : Пробный период подписки завершен.
  • PRICE_PLAN_SWITCHED : Клиент перешел с гибкого плана на годовой. Это событие не срабатывает, если клиент переходит с годового плана на гибкий в рамках продления подписки.
  • COMMITMENT_CHANGED : Годовой объем обязательств был увеличен или уменьшен.
  • SUBSCRIPTION_RENEWED : Годовая подписка была продлена.
  • SUBSCRIPTION_SUSPENDED : Подписка приостановлена. См. subscription_suspension_reasons .
  • SUBSCRIPTION_SUSPENSION_REVOKED : Приостановление действия подписки было отменено.
  • SUBSCRIPTION_CANCELLED : Подписка была отменена. См. subscription_cancellation_reason . Также может обнаруживать переводы.
  • SUBSCRIPTION_CONVERTED : Подписка преобразована. Примеры:
    • Преобразуйте прямую подписку в реселлерскую.
    • Преобразовать платную подписку в льготный период.
    • Преобразовать онлайн-подписку в офлайн-подписку.
  • SUBSCRIPTION_UPGRADE : Произошло обновление артикула подписки. Пример: Google Workspace Business Starter до Business Standard.
  • SUBSCRIPTION_DOWNGRADE : Уровень подписки был понижен. Пример: Google Workspace Business Standard до Business Starter.
  • LICENSE_ASSIGNMENT_CHANGED : Лицензия была назначена или отозвана. Используется для отслеживания изменений количества рабочих мест для гибких подписок.

Причины отмены подписки

Причина отмены заполняется, когда event_type имеет SUBSCRIPTION_CANCELLED . Возможные причины:

  • TRANSFERRED_OUT : Клиент переведен на систему прямого выставления счетов или к другому реселлеру.
  • PURCHASE_OF_SUBSUMING_SKU : Клиент обновил свой аккаунт до версии, которая переопределяет другую. Пример: Клиент, имеющий Google Workspace Business Starter и Vault, обновляет свой аккаунт до Business Plus, который включает Vault.
  • RESELLER_INITIATED : Реселлер отменил подписку.
  • OTHER : Подписка была отменена по другой причине.

Причины приостановки подписки

Причина приостановки заполняется, когда event_type имеет SUBSCRIPTION_SUSPENDED . Возможные причины:

  • PENDING_TOS_ACCEPTANCE : Клиент не принял Условия предоставления услуг Google Workspace Resold.
  • RENEWAL_WITH_TYPE_CANCEL : Срок действия обязательств клиента истек, и услуга была отменена.
  • RESELLER_INITIATED : Реселлер вручную приостановил подписку.
  • TRIAL_ENDED : Срок действия пробного периода клиента истек, но он не выбрал тарифный план, не являющийся пробным.
  • OTHER : Клиент заблокирован по внутренним причинам Google, например, за злоупотребление.

Ограничения публикации/подписки

Порядок отправки push-уведомлений не всегда последовательный. Сообщения могут быть доставлены несколько раз или не быть доставлены вовсе. Мы рекомендуем использовать reseller.subscriptions.get для изменения подписок, чтобы получить текущее состояние.