Como alguns outros mencionados, sou um grande oponente por ser hostil aos clientes por padrão - algo pelo qual a indústria de licenciamento é notória. Então, vou expandir uma boa solução para o seu problema que também oferece um bom cliente UX .
Para começar, você mencionou que possui uma versão "limitada" do seu software que está usando para tentar converter clientes em "atualização" para obter recursos adicionais. Portanto, o que você procura são licenças de recursos para seu produto, por exemplo, um cliente pode comprar uma licença para o recurso X ou Y .
Eu construí Keygen com esse tipo de licenciamento em mente. Keygen é uma API REST de licenciamento que permite gerenciar contas de usuários, licenças e também rastrear o uso / associações de máquinas.
O que eu faria é configurar 2 tipos de licença (uma política no Keygen), onde um é uma política básica para a versão gratuita limitada e o outro é uma política para a versão paga.
Não sei ao certo o que você está usando para pagamentos, mas vamos supor que você esteja usando algo como o Stripe (hoje bastante comum hoje em dia) que oferece webhooks . O Keygen também possui webhooks (se você o usa ou não, tudo isso ainda é aplicável). Você pode integrar o Keygen para conversar com seu provedor de pagamento usando webhooks de ambos os lados (pense em: customer.created
-> criar licença básica para o cliente, license.created
-> cobrar da nova licença).
Portanto, utilizando webhooks, podemos automatizar a criação de licenças para novos clientes. E a validação de licença no próprio aplicativo? Isso pode ser feito de várias maneiras, mas a maneira mais popular é exigir que seu cliente insira uma chave de licença longa em um campo de entrada que você poderá validar; Eu acho que essa é uma maneira terrível de lidar com a validação de licença em seu aplicativo.
Por que eu acho isso? Bem, primeiro, você está exigindo que seu cliente insira uma chave de licença tediosamente longa, destinada ao consumo da máquina, e depois você exige que você e seu cliente acompanhem a chave de licença tediosamente longa .
Ok, então o que é uma alternativa? Eu acho que a melhor alternativa é fazer algo que todos os seus clientes estão acostumados: permitir que eles criem uma conta para o seu produto usando um email / senha . Você pode associar todas as suas licenças e máquinas a essa conta. Portanto, agora, em vez de inserir uma chave de licença, eles podem simplesmente fazer login usando suas credenciais.
Que vantagem isso lhe dá? Em primeiro lugar, elimina a necessidade de você e seus clientes acompanharem as chaves de licença, pois tudo é tratado nos bastidores da conta de usuário e, o mais importante: agora você pode oferecer aos seus clientes licença e máquina de autoatendimento ativação! ou seja, como todas as suas licenças e máquinas estão associadas à sua conta de usuário, você pode solicitar que comprem uma licença quando iniciarem o aplicativo em uma máquina não reconhecida.
Agora, para validação da licença : sempre que seus registros de clientes em sua aplicação com o seu e-mail / senha, você pode consultar a sua conta de usuário para as licenças que possui para determinar se eles podem usar recurso de X ou de longa-Y . E como seu aplicativo agora é de autoatendimento , você pode permitir que seus clientes comprem recursos adicionais diretamente de dentro do seu aplicativo!
Por isso, introduzimos uma tonelada de automação em nosso sistema de licenciamento, podemos licenciar recursos individuais (por exemplo, uma versão limitada versus uma versão completa), oferecer um UX incrível para nossos clientes e também aliviar um dos maiores motivos. para solicitações de suporte: recuperação da chave de licença.
Enfim, isso ficou longo, mas espero que ajude alguém!