На этой странице описано, как использовать 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 для изменения подписок, чтобы получить текущее состояние.