Software License Manager Plugin for WordPress

The License Manager plugin gives developers the ability to control the activation and usage of a piece of software via the creation and management of licenses.

By incorporating the License Manager functionality into your software, you will be able to prevent unauthorised usage of your software.

Summary
App Category
WordPress Plugin
Software Name
Software License Manager Plugin
Version
2.4
Date Modified
2016-10-22
Operating System
WordPress 4.6
Requirements
WordPress 3.5 or higher
Price
USD $0
Description
A plugin to create and manage license keys for your software applications easily
Landing Page
File Format
application/zip

A basic scenario illustrating how the License Manager works

The example below shows one of the ways in which the license manager can be used to manage licenses for a WordPress plugin or theme.

  • A customer buys your plugin and after the purchase you automatically create a license key in the License Manger plugin and provide them the license key.
  • When they install and activate your plugin they will be asked to enter the license key in order to activate it. At this stage the customer will not able to use the plugin until they successfully activate a valid license key.
  • Customer enters the license key in the appropriate “license activation” form somewhere in your plugin’s menu pages and clicks the “activate” button.
  • Upon submitting the license key, the plugin on the customer’s site (ie, the client) will try to communicate with your license server to verify the authenticity of the license.
  • Upon receiving the license activation request, the License Manager plugin on your server will check the submitted parameters. Note that your server will ordinarily contain a list of valid license numbers in the database and when it receives the activation request from the client, the License Manager will do the appropriate checks.
  • If all the checks pass and the license key which was submitted is valid, the License Manager will return a JSON encoded response which will contain within it a result parameter which will be set as follows:
    ‘result’ => ‘success’, ‘message’ => ‘License key activated’
  • Once the client side (your plugin) receives the “success” response from the server, you know that the customer entered a valid license key that checks out. You can now save this event and grant full access to the functionality available in your plugin.
  • If an error was received, then you can show the appropriate error message and not activate the product.

Incorporating the License Manager functionality into your plugin

In order to be able to use the License Manager plugin together with your own plugins, you will need to add some code to your own plugin or theme so you can send request to the license server and activate or deactivate license keys.

The License Manager plugin has some sample code in the form of a simple plugin which illustrates how you can integrate your plugin with the License Manager plugin. You can find the sample plugin by looking in the following directory:

software-license-manager/client-side/sample-plugin

Setting the global variables

When you examine the code in the slm-sample-plugin.php file you will see that there are 3 global variables which you will need to modify as explained below. You will then be able to use these constant values in your code when creating the request query parameters.

1) define(‘YOUR_SPECIAL_SECRET_KEY’, ‘5421048138b321.90598894’);

This variable specifies the value which is set in the license manager plugin settings page for the following: “Secret Key for License Verification Requests”.
You will need to copy the above setting value and paste it in the above code. You will also need to rename the default global variable name to something relevant to your plugin. Example:

define('ACME_PLUGIN_SECRET_KEY', '5421048138b321.90068894');

2) define(‘YOUR_LICENSE_SERVER_URL’, ‘http://www.yoursite.com’);

This variable specifies the URL of your server where the license manager plugin is installed on. Your plugin from a customer’s site will be communicating with this server to activate or deactivate license keys.

You will also need to rename the default global variable name to something relevant to your plugin. Example:

define('ACME_PLUGIN_ LICENSE_SERVER_URL', 'http://www.yoursite.com');

3) define(‘YOUR_ITEM_REFERENCE’, ‘ACME Plugin’);

This variable provides a reference label for the licenses which will be issued. Therefore you should enter something specific to describe what the licenses issued are pertaining to.

You will also need to rename the default global variable name to something relevant to your plugin. Example:

define('ACME_PLUGIN _ITEM_REFERENCE', ' ACME Plugin ');

As shown in the above examples it is important that you rename the global variables to something uniquely specific to your plugin or theme.

Creating a license activation form

In order for your customers to be able to activate or deactivate their licence key, they will need to submit the license key. Therefore you will need to create a license activation form somewhere in your plugin’s admin settings page.

Example code is provided in the sample plugin which shows you how you will need to implement this.

You will note that the license activation query is sent using the native wordpress function “wp_remote_get”. The server will respond with a JSON return value which will need to be decoded as shown in the sample code.

The diagrams below show the relationship between the License Manager plugin and the customer’s installation of your plugin:

license-key-activation-deactivation-process-diagram

Creating license keys on your license manager server

In order to be able to issue licenses to your clients, you will need to create license keys on the server which will be running the License Manager plugin. The license manager plugin will act as your license server where all the valid license keys are stored and you can remotely send request to activate or deactivate license keys.

You can create license keys using two methods:

1) Manually – using the License Manager’s Add/Edit Licenses menu

You can use settings page to enter the relevant license details and create a brand new license key in the License Manager DB.

manually-adding-license-keys

2) Automatically – by sending a request to the License Creation API

The License Manager plugin has an API that you can use to create license keys automatically. This will be handy if you want to create license keys from your e-commerce solution after checkout.

Below is an example snippet of code showing you how you can automatically create license key entry in your license manager.

$api_params = array(
'slm_action' => 'slm_create_new',
'secret_key' => '5421048138b321.90068894',
'first_name' => 'elvis',
'last_name' => 'presley',
'email' => [email protected]',
'company_name' => 'XYZ',
'txn_id' => 'ABC0987654321',
'max_allowed_domains' => '10',
'date_created' =>date(“Y-m-d”),
'date_expiry' =>’2016-01-01’,
);

// Send query to the license manager server
$response = wp_remote_get(add_query_arg($api_params, YOUR_LICENSE_SERVER_URL), array('timeout' => 20, 'sslverify' => false));

// Check for error in the response
if (is_wp_error($response)){
echo "Unexpected Error! The query returned with an error.";
}

// License data.
$license_data = json_decode(wp_remote_retrieve_body($response));

You will note from the above example that you also have the ability to specify parameters such as transaction ID (txn_id) which can be handy when you want to reference a particular purchase event to a specific license which was issued.

Example API Response

The following is an example response that will get when sending the license creation API request:

{"result":"success","message":"License successfully created","key":"5580effe188d3"}

Checking A License Key

You can use the API to query and retrieve details of an existing license key. Then from your client application you can do different things based on the status or other aspect of that key.

The following example snippet of code shows how you can query the details of a license:

$api_params = array(
'slm_action' => 'slm_check',
'secret_key' => '5421048138b321.90068894',
'license_key' => 'KEYTOCHECK',
);
// Send query to the license manager server
$response = wp_remote_get(add_query_arg($api_params, YOUR_LICENSE_SERVER_URL), array('timeout' => 20, 'sslverify' => false));

Useful Tutorials

See the following tutorials:

Check out our WordPress plugins page for more cool WordPress plugins.