Entrar
Começar

Documentação do Easy Digital Downloads

Documentação, Materiais de Referência e Tutoriais para Easy Digital Downloads 

Licenciamento de Software – Ativando, Verificando e Desativando Chaves de Licença em Plugins do WordPress

Nota Importante

Esta documentação não é necessária se você estiver usando o Atualizador da API de Licenciamento de Software. Consulte este documento apenas se você não estiver usando o atualizador ou se for para referência:
Veja nossa documentação sobre como integrar atualizações automáticas para seus plugins do WordPress.
Veja nossa documentação sobre como integrar atualizações automáticas para seus temas do WordPress.

Ativando

Com o Licenciamento de Software, para que uma chave de licença seja totalmente utilizada, ela deve ser ativada. Isso pode acontecer de uma das duas maneiras:

  1. Um administrador do site pode clicar manualmente no link “Ativar” para a licença na página Downloads → Licenças
  2. O comprador pode ativar remotamente a licença por meio de um sistema em seu plugin/tema/software que usa a API para acionar a ativação

Observação: o plugin de exemplo e a implementação mostrada neste documento são puramente exemplos. As melhores implementações de Licenciamento de Software pegam esses exemplos e os integram perfeitamente à página de configurações existente do seu plugin.

Nesta documentação, mostraremos como ativar uma licença remotamente por meio de um sistema adicionado ao seu plugin do WordPress. O código de exemplo que estamos mostrando neste exemplo é o mesmo código exato que está incluído com o plugin e os temas de exemplo, disponíveis para download após a compra da extensão.

Existem dois componentes principais para ativar uma licença remotamente:

  1. Salvar a chave de licença nos dados (uma opção de tema ou plugin)
  2. Enviar a chave de licença armazenada através da API para o site da loja para verificação e ativação

Quando uma licença é ativada remotamente, o status da licença no painel do seu site será atualizado de “inativo” (o estado padrão) para “ativo”.

Vamos primeiro ver como criar uma página de opções simples para armazenar nossa licença.

Este código configura um item de submenu no menu Plugins chamado “Licença do Plugin”. Estamos usando uma página de plugins neste exemplo, mas o código é idêntico para temas.

Existem duas linhas no topo do código:

A primeira é a licença em si e a segunda é o status da licença. Assim que ativarmos nossa licença, mudaremos o status (em nosso site local) para “ativo”. Isso é para que possamos mostrar um botão “Ativar Licença” se a licença ainda não foi ativada e ocultar o botão se já foi. Veja a captura de tela abaixo:

A ideia aqui é que primeiro inserimos uma chave de licença e clicamos em “Salvar Alterações”, o que faz com que a chave de licença seja armazenada em nossas opções de plugin/tema. Assim que a opção for armazenada, clicamos no botão “Ativar Licença” para acionar a chamada da API.

O botão de ativação é apenas um campo de entrada simples com um tipo “submit” e um atributo de nome que é diferente do nosso botão de salvar. Os nomes *devem* ser diferentes para que possamos saber quando o botão de ativar licença foi clicado.

Para ativar a licença, precisamos apenas "observar" quando o botão de ativação é clicado. A maneira como fazemos isso é configurando uma função que está conectada ao hook "admin_init", da seguinte forma:

Se tudo funcionar corretamente após clicar no botão "Ativar Licença", o botão de ativação será substituído pela palavra "ativo" e o status da licença refletirá o estado recém-ativado no painel da sua loja EDD. Se houver um erro ao ativar a chave de licença, a página será recarregada e um parâmetro de erro e mensagem será adicionado à URL. Podemos então usar o hook admin_notices (ou qualquer outro método aplicável) para exibir o erro ao cliente:

Por exemplo, se um cliente inserir uma chave de licença inválida, uma mensagem de erro será exibida:

Verificando

Com Software Licensing, você pode facilmente verificar se uma chave de licença é válida a qualquer momento. Você pode querer fazer isso para limitar certas funcionalidades no tema ou plugin apenas a usuários com uma chave de licença válida.

Verificar a validade de uma chave de licença é muito simples; tudo o que é necessário é que realizemos uma solicitação remota ao site da nossa loja com alguns parâmetros específicos. Veja a função abaixo:

function edd_sample_theme_check_license() {
$store_url = 'https://yoursite.com';
$item_name = 'Your Item Name';
$license = '834bbb2d27c02eb1ac11f4ce6ffa20bb';
$api_params = array(
'edd_action' => 'check_license',
'license' => $license,
'item_name' => urlencode( $item_name ),
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',

);
$response = wp_remote_post( $store_url, array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );
if ( is_wp_error( $response ) ) {
return false;
}

$license_data = json_decode( wp_remote_retrieve_body( $response ) );

if( $license_data->license == 'valid' ) {
echo 'valid';
exit;
// this license is still valid
} else {
echo 'invalid';
exit;
// this license is no longer valid
}
}

Nota: se você estiver verificando consistentemente a validade de uma chave de licença, talvez para bloquear o uso do plugin ou tema quando a licença expirar, você DEVE armazenar em cache os resultados da verificação para que a solicitação não seja realizada a cada carregamento de página. A Transients API é uma ótima maneira de armazenar em cache as respostas da API.

Desativando

Com Software Licensing, após uma licença ter sido ativada, ela também pode ser desativada remotamente (desde a v1.3). Geralmente, o motivo para desativar uma licença é permitir que uma licença seja ativada em um site adicional quando o limite de ativação for atingido.

O processo de desativação é quase idêntico ao processo de ativação. Realizamos uma solicitação remota e enviamos os detalhes da chave de licença que estamos desativando. A solicitação remota é feita da seguinte forma:

// data to send in our API request
$api_params = array(
'edd_action' => 'deactivate_license',
'license' => '2ec66bae356be570236531ccba06a45b',
'item_name' => 'Sample Plugin', // the name of our product in EDD
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
);
// Send the remote request
$response = wp_remote_post( 'https://yoursite.com', array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );

A variável $response será um objeto json que nos diz se a solicitação de desativação foi bem-sucedida ou não. Se for bem-sucedida, a resposta será:

Nota: A data/hora é um timestamp, ao contrário de outras respostas json que serão data e hora.

{
	"success": true,
	"license": "deactivated",
	"item_name": "Sample Plugin",
	"expires": 1556150399,
	"payment_id": 2444,
	"customer_name": "John Doe",
	"customer_email": "[email protected]"
}

Se a licença não for desativada com sucesso, a resposta será:

{
	"success": false,
	"license": "failed",
	"item_name": "Sample Plugin",
	"expires": 1556150399,
	"payment_id": 2444,
	"customer_name": "John Doe",
	"customer_email": "[email protected]"
}

Uma vez que uma licença tenha sido desativada com sucesso, a coluna Contagem de Sites em Downloads → Licenças será decrementada e uma entrada será registrada no log para que os administradores possam ver de onde uma licença foi desativada.

Este artigo foi útil?

Comece a vender hoje mesmo!

Junte-se a mais de 50.000 proprietários de lojas inteligentes e comece a usar a maneira mais fácil de vender produtos digitais com o WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]