Интеграция с License Manager API
Если вы создали подписку внутри тарифа:
Subscription, вам необходимо настроить интеграцию с License Manager API или License Manager SaaS API, чтобы подписка работала корректно.PAYG, пользователь автоматически перейдет на этот тариф, когда отвяжет подписку от ресурса или срок действия подписки закончится. При необходимости вы можете настроить интеграцию с License Manager API.
-
Получите идентификатор шаблона подписки (
license_template_id).Идентификатор шаблона подписки можно посмотреть в кабинете партнера Cloud Marketplace. Используйте идентификатор в коде продукта, чтобы управлять подпиской.
-
В коде вашего продукта реализуйте следующие шаги:
-
Периодическая проверка того, что подписка активна.
Получить актуальную информацию о подписке можно с помощью метода REST API list для ресурса Instance или вызова gRPC API InstanceService/List.
Примечание
Учитывайте, что пользователь может отвязать один ресурс от подписки и привязать к ней другой. Ваш код должен корректно обрабатывать такие случаи.
-
Организация бизнес-логики обработки подписок: учет потребления, ограничения по времени, количеству пользователей и т.п.
-
-
Получите идентификатор шаблона подписки (
license_template_id).Идентификатор шаблона подписки можно посмотреть в кабинете партнера Cloud Marketplace. Используйте идентификатор в коде продукта, чтобы управлять подпиской.
-
В коде вашего продукта реализуйте следующие шаги:
-
Получение идентификатора установки приложения в кластер Kubernetes и привязка его к подписке. Пример кода
. -
Периодическая проверка того, что подписка активна.
Получить актуальную информацию о подписке можно с помощью метода REST API list для ресурса Instance или вызова gRPC API InstanceService/List.
Примечание
Учитывайте, что пользователь может отвязать один ресурс от подписки и привязать к ней другой. Ваш код должен корректно обрабатывать такие случаи.
-
Организация бизнес-логики обработки подписок: учет потребления, ограничения по времени, количеству пользователей и т.п.
-
-
Получите идентификатор шаблона подписки (
license_template_id).Идентификатор шаблона подписки можно посмотреть в кабинете партнера Cloud Marketplace. Используйте идентификатор в коде продукта, чтобы управлять подпиской.
-
В коде вашего продукта реализуйте следующие шаги:
-
Периодическая проверка того, что подписка активна.
Получить актуальную информацию о подписке можно с помощью метода REST API list для ресурса Instance или вызова gRPC API InstanceService/List.
Примечание
Учитывайте, что пользователь может отвязать один ресурс от подписки и привязать к ней другой. Ваш код должен корректно обрабатывать такие случаи.
-
Организация бизнес-логики обработки подписок: учет потребления, ограничения по времени, количеству пользователей и т.п.
-
-
Создайте сервисный аккаунт, от имени которого будете проверять активность подписок, купленных пользователями, и привязывать такие подписки к сервису:
- Авторизуйтесь в кабинете партнера Marketplace
. - Откройте раздел Управление доступом.
- Нажмите Добавить федеративного пользователя.
- В открывшемся окне укажите идентификатор сервисного аккаунта и нажмите Добавить.
- Найдите сервисный аккаунт в списке и нажмите
→ Изменить. - В открывшемся окне нажмите + Добавить роль, выберите
license-manager.saasSubscriptionSupervisorи нажмите Сохранить.
- Авторизуйтесь в кабинете партнера Marketplace
-
Аутентифицируйтесь в License Manager API от имени сервисного аккаунта. Для аутентификации используйте IAM-токен.
-
Создайте страницу, на которую нужно перенаправить пользователя во время привязки купленной им подписки к сервису.
При перенаправлении пользователя на такую страницу в строке запроса, в параметре
token, передается JWT-токен (instanceToken), сгенерированный Yandex Cloud. JWT-токен действует 15 минут и содержит:- идентификатор подписки, которую купил пользователь (
license_instance_id); - идентификатор шаблона подписки, который вы создали в кабинете партнера (
license_template_id).
- идентификатор подписки, которую купил пользователь (
-
Пока действует JWT-токен, на созданной странице авторизуйте пользователя и присвойте ему уникальный идентификатор (
resourceId). Уникальный идентификатор пользователя (resourceId) необходимо сгенерировать самостоятельно в коде продукта. -
Привяжите уникальный идентификатор пользователя (
resourceId) к купленной пользователем подписке (license_instance_id).Привязать идентификатор к подписке можно с помощью метода REST API ensure для ресурса Lock или вызова gRPC API LockService/Ensure.
Передайте в запросе JWT-токен (
instanceToken) и уникальный идентификатор пользователя (resourceId). В ответе вы получите идентификатор привязки (lock_id) — он находится в параметреmetadata. Если в ответе ошибка, значит, подписка не привязалась к сервису и нужно попросить пользователя заново пройти все шаги. -
Организуйте периодическую проверку того, что привязка подписки активна. Используйте для этого идентификатор привязки (
lock_id), полученный на предыдущем шаге.Получить актуальную информацию о привязке подписки можно с помощью метода REST API get для ресурса Lock или вызова gRPC API LockService/Get.
В ответе должен возвращаться активный ресурс Lock, для которого
state = LOCKED, а время окончания действия подпискиend_timeнаходится в будущем.Примечание
Учитывайте, что пользователь может отвязать одну подписку от сервиса и привязать к нему другую. Ваш код должен корректно обрабатывать такие случаи.
-
Организуйте бизнес-логику обработки подписок: учет потребления, ограничения по времени, количеству пользователей и т.п.
Тестирование интеграции
Примеры кода и тестовый сервер для проверки работы интеграции с License Manager API доступны в репозитории на GitHub