Интеграция с License Manager API
Если вы создали подписку внутри тарифа:
Subscription
, вам необходимо настроить интеграцию с License Manager 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