Как и некоторые другие упомянутые выше, я являюсь огромным противником враждебного отношения к клиентам по умолчанию - то, на что индустрия лицензирования печально известна. Поэтому я остановлюсь на хорошем решении вашей проблемы, которое также предлагает хороший пользовательский UX .
Для начала вы упомянули, что у вас есть «ограниченная» версия программного обеспечения, которую вы используете, чтобы попытаться преобразовать клиентов в «апгрейд» для получения дополнительных функций. Итак, вам нужны лицензии для вашего продукта, например, клиент может приобрести лицензию для Feature-X или Feature-Y .
Я создал Keygen с учетом этого типа лицензирования. Keygen - это лицензионный REST API, который позволяет управлять учетными записями пользователей, лицензиями, а также отслеживать использование / ассоциации компьютеров.
Я хотел бы установить два типа лицензий ( политика в Keygen), где один является базовой политикой для ограниченной бесплатной версии, а другой - политикой для платной версии.
Я не уверен, что вы используете для платежей, но давайте предположим, что вы используете что-то вроде Stripe (довольно стандартного в настоящее время), который предлагает веб-хук . У Keygen также есть webhooks (используете ли вы это или нет, все это по-прежнему применимо). Вы можете интегрировать Keygen, чтобы разговаривать с вашим платежным провайдером, используя веб-крюки с обеих сторон (подумайте: customer.created
-> создать базовую лицензию для клиента, license.created
-> взимать плату с клиента за новую лицензию).
Таким образом, используя webhooks, мы можем автоматизировать создание лицензий для новых клиентов. Так как насчет проверки лицензии в самом приложении? Это может быть сделано различными способами, но наиболее популярным является требование, чтобы ваш клиент ввел длинный лицензионный ключ в поле ввода, которое затем можно проверить; Я думаю, что это ужасный способ проверки лицензии в вашем приложении.
Почему я так думаю? Ну, во-первых, вы требуете от своего клиента ввести утомительно длинный лицензионный ключ, предназначенный для потребления машины, а во-вторых, вы требуете, чтобы вы и ваш клиент отслеживали указанный утомительно длинный лицензионный ключ .
Ладно, а какая альтернатива? Я думаю, что лучшая альтернатива - сделать то, к чему привыкли все ваши клиенты: позволить им создать учетную запись для вашего продукта, используя адрес электронной почты / пароль . Затем вы можете связать все их лицензии и их машины с этой учетной записью. Так что теперь вместо ввода лицензионного ключа они могут просто войти в систему, используя свои учетные данные.
Какое преимущество это дает вам? Во-первых, это избавляет вас и ваших клиентов от необходимости отслеживать лицензионные ключи, поскольку все они обрабатываются за кулисами внутри их учетной записи пользователя, и самое главное: теперь вы можете предложить своим клиентам лицензию и машину для самообслуживания. активация! т. е. поскольку все их лицензии и машины связаны с их учетной записью пользователя, вы можете предложить им приобрести лицензию, когда они запустят ваше приложение на неизвестной машине.
Теперь перейдем к проверке лицензии : всякий раз, когда ваш клиент входит в ваше приложение со своим адресом электронной почты / паролем, вы можете запросить у его учетной записи пользователя лицензии, которыми они владеют, чтобы определить, могут ли они использовать Feature-X или Feature-Y . А поскольку ваше приложение теперь самообслуживается , вы можете позволить своим клиентам приобретать дополнительные функции прямо из вашего приложения!
Итак, мы внедрили тонну автоматизации в нашу систему лицензирования, мы можем лицензировать отдельные функции (то есть ограниченную или полную версию), мы предложили удивительный UX для наших клиентов, и мы также решили одну из главных причин для запросов поддержки: восстановление лицензионного ключа.
В любом случае, это долго, но, надеюсь, кому-то поможет!