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