WooCommerce License Manager

plugin documentation version 4.3.2


Introduction


First of all, Thank you so much for purchasing this plugin and for being my loyal customer. You are awesome!
You are entitled to get free lifetime updates to this product + exceptional support from the author directly.

This documentation is to help you regarding each step of customization. Please go through the documentation carefully to understand how this plugin is made and how to configure it properly.

Installation #back to top

The first time you use WooCommerce License manager, you need to manually download and install it. Then, Install Envato Market WordPress Plugin to receive automated updates to future versions.

  1. Log in to your CodeCanyon Account.
  2. Go to the Downloads section.
  3. Download the plugin.
  4. Log into your site and in the WordPress admin, go to the Plugins page and click Add New. On the Add Plugins page click Upload Plugin, select the ZIP files that you downloaded and click Install Now.
    Alternatively, if you cannot upload plugins directly to WordPress:
    1. Unzip each file. A directory will be created.
    2. Upload the unzipped directories to your site’s ../wp-content/plugins directory
  5. Go back to the Plugins page and enable the newly uploaded/added plugins.
  6. Follow WooCommerce License manager’s setup wizard to configure the plugin.

Enable Sending License Keys #back to top

Simple Products

License keys can be sent for simple products and/or variations.
To enable sending license keys go to the product page, in the bottom there is a new section added by the plugin to configure the license manager for the product/variation.

  1. Delivered quantity is the how many license keys you want your customers to get per order, the default value is 1.
  2. Choose where to show your customers the license keys they bought. Buyers will always be able to see the license keys they purchased in the order history page, but you can choose not to show the license keys in the emails.
  3. The plugin supports text and image license keys, a text value is always required even if it's not needed for image license keys (the text value can be any random text to make the license unique) you can choose to show the license as image only and the text part will be hidden.
  4. For simple products check the checkbox "Main Product" to enable sending license keys for the product.
  5. Save your configuration

Variable Products

  1. Enable sending license keys for the variations that you want the plugin to deliver license keys for.

Add License Keys #back to top

There is multiple ways to add license keys to the plugin.

  1. Adding license keys one by one using the page License Manager > Add License Key
  2. Bulk importing text license keys from a CSV or TXT file in the page License Manager > Import
  3. Bulk importing image license keys from a ZIP file in the page License Manager > Import
  4. Adding license keys one by one in the product page in the License Manager tab License Keys

Add License Keys Form Fields Explained:

Any fields that you don't need you can leave as the default values.

  1. The license keys:
    The license key can be in multiple forms
    1. A simple text.
    2. HTML: you can send links example if you type <a href="YOUR LINK GOES HERE">YOUR LICENSE KEY GOES HERE</a> your customers will receive a clickable link as a license key YOUR LICENSE KEY GOES HERE.
    3. You can also put your license on multiple lines.
      Example:
      Card Number: 4242 4242 4242 4242
      CCV: 123
      EXP: 6/22
    4. You can also mix normal text and HTML.
  2. A license key set to be delivered multiple times won't be marked as sold until it's fully delivered.
  3. Maximum instance number is how many time the license key can be activated using the API.
  4. An expiration date will be generated based on the purchase date and the validity period after purchase. If a static expiration date is set the validity period won't be used to generate an expiration date.

License Keys Generator #back to top

First you have to enable sending license keys for the product/variation then create a generator rule. There is 2 ways to create a generator rule for a product/variation.

  1. By creating a generator rule in the product page.
  2. By creating a generator rule in the page License Manager > Add Generator Rule.

Product Page > License Manager section > License Generator tab:


License Manager > Add Generator Rule:


If "Active" is set to "No" the license manager won't generate any license keys.




Pre-generate License Keys

License keys can be pre-generated in the page License Manager > License Key Generator


Encryption Settings #back to top

Before adding any license keys to the plugin set your encryption keys.
Using the default encryption keys is not recommended.
After choosing your encryption keys save them somewhere safe, without them license keys added to the plugin can't be decrypted.


Order Status Settings #back to top

Check only one checkbox per row.

  1. Send: send license keys for the order status.
  2. Revoke: will delete the license keys form the order and set their status to returned.
  3. Hide: the license keys will stay assigned to the order but only the admin can see them.



License manager have no control over order status, the status of your orders is set by WooCommerce and the used payment gateway. If you want orders to go to completed directly usually setting the product as Virtual and Downloadable (you don't have to attache a file) will do it, but your payment method may override that.

Orders #back to top







1. Assign new license key

Assign a new license key to the order item:

  1. If there is no available keys for the product this action won't add anything.
  2. If the license keys generator is enabled and there is no keys available for the product a new key will be generated.






2. Replace Single Key

Replace this license key

  1. If there is no license keys available for the product this action will only delete the assigned key.
  2. If the license keys generator is enabled and there is no keys available for the product a new key will be generated.






3. Replace Product Keys

Replace order item license keys

  1. If there is no license keys available for the product this action will only delete the assigned keys.
  2. If the available keys are less then the required number of keys this action will delete the assigned keys and assign the available ones "Assign new license key" option can later be used to assign the rest of the keys.
  3. If the license keys generator is enabled and there is no keys available for the product new keys will be generated.






4. Replace All Assigned Keys

Replace order license keys

  1. If there is no license keys available for the product this action will only delete the assigned keys.
  2. If the available keys are less then the required number of keys this action will delete the assigned keys and assign the available ones "Assign new license key" option can later be used to assign the rest of the keys.
  3. If the license keys generator is enabled and there is no keys available for the product new keys will be generated.
  4. The option will only add keys equivalent the the ordered number, any manually assigned keys won't be automatically added

Import #back to top

  1. Bulk importing text license keys from a CSV or TXT file in the page License Manager > Import
  2. Bulk importing image license keys from a ZIP file in the page License Manager > Import
  3. Restoring license keys from an exported file can be done in the page License Manager > Import using the form "Import License Keys".
  4. Restoring license keys from an edited exported file can be done in the page License Manager > Import using the form "Import License Keys (File modified in Excel or any other CSV file editor)".
  5. Restoring license keys from an unencrypted exported file can be done in the page License Manager > Import using the form "Import License Keys (Unencrypted License Keys)".
  6. Restoring generator rules from an exported file can be done in the page License Manager > Import using the form "Import Generator Rules".
  7. Restoring plugin settings from an exported file can be done in the page License Manager > Import using the form "Import Plugin Settings".

Export #back to top

Using the page License Manager > Export you can export:

  1. License keys(can filtered by status and product)
  2. Editable Unencrypted License keys CSV file(can filtered by status and product)
  3. Generator rules(can filtered by product)
  4. Plugin Settings

This section explain all the API commands that you can use to control your software usage.
The following examples are in PHP but the process is the same for all programming languages, a POST request to the website URL with the required parameters.

API Parameters


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'YOUR COMMAND GOES HERE',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => 'YOUR API KEY GOES HERE',

                                        // The License Key
                                        'license_key'         => 'YOUR LICENSE KEY GOES HERE',

                                        // The device ID
                                        // The Device ID is optional, but if it is used and the license keys was activated with it
                                        // it becomes required, a license key activated with a Device ID can't be deactivated
                                        // without it and can't be activated again without it.
                                        // The device ID can be anything you want, its role is to identify the "Device",
                                        //  "Machine" or "Domain" where the license was activated.
                                        'device_id'           => 'YOUR DEVICE ID GOES HERE'
                                    );


                                

Activation/Verification with a Device ID:

If you send an activation request with a valid Device ID (the Device ID that was used to activate the license key the first time) the request will return success, this feature was added to give the developers the option to allow their customers to reactivate the software after the user have deleted the app data for example.

Lets say you have a license key that can be used 1 time, the user have activated a mobile app now the license can't be used again, the user later deletes the app data and tries to activate the app again.

They can't because there is no device ID associated with the license key and the activation limit was reached.

But if you register the Device ID when you active the license key, even after the user deletes the app data they can activate again because with that ID you can confirm that it is the same user on the same device.

Activation/Verification without a Device ID:

If you don't put a Device ID in the parameters when you send the API request you are checking if the license key alone is valid or no.

If you put a Device ID in the parameters you are checking if that combination of License key/Device ID is valid or no.

API Key #back to top

You can find and change your API key in License Manager > Settings > API
Keeping the default value is not recommended.

API Versions #back to top

The current API version is 2.0, the option to disable version 1.0 is in License Manager > Settings > API
As long as the new feature added to the API does not interfere with the features already available we will keep adding the new features to the current version.
How a version of the API works will never change instead a new version will be added with the option to disable the old versions.
All API version are enabled by default and need to be manually disabled if they are not need.

Activate #back to top

The following is a PHP example using CURL.
Activating a license key with a Device ID that is already in the database won't decrease the remaining activations number.

Example License Key activation API Request


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'activate',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => '0A9Q5OXT13in3LGjM9F3W',

                                        // The License Key
                                        'license_key'         => 'FFFF-FFFF-FFFF-FFFF',

                                        // The device ID
                                        // The Device ID is optional, but if it is used and the license keys was activated with it
                                        // it becomes required, a license key activated with a Device ID can't be deactivated
                                        // without it and can't be activated again without it.
                                        // The device ID can be anything you want, its role is to identify the "Device",
                                        //  "Machine" or "Domain" where the license was activated.
                                        'device_id'           => 'userdomain.ltd'
                                    );


                                    //url-ify the data for the POST
                                    $fields_string = "";
                                    foreach($parameters as $key=>$value) {
                                        $fields_string .= $key.'='.$value.'&';
                                    }
                                    rtrim($fields_string, '&');

                                    // Open connection
                                    $ch = curl_init();

                                    // Set the url, number of POST vars, POST data
                                    curl_setopt($ch, CURLOPT_URL, $post_url);
                                    curl_setopt($ch, CURLOPT_POST, count($parameters));
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                                    // Execute post
                                    $result = curl_exec($ch);
                                    curl_close($ch);

                                    // Display the request result
                                    echo $result;



                                

Activation Successful Response

                                    {
                                        "result" : "success",
                                        "code"   : "300",
                                        "message": "License key activated"
                                    }
                                     

                                

Maximum Number of Activation Reached

                                    {
                                        "result" : "error",
                                        "code"   : "350",
                                        "message": "Maximum number of activation reached"
                                    }
                                     

                                

Expired License Key

                                    {
                                        "result" : "error",
                                        "code"   : "550",
                                        "message": "Expired license key"
                                    }
                                     

                                

Invalid Device ID

                                    {
                                        "result" : "error",
                                        "code"   : "750",
                                        "message": "Device ID required, this license keys was activated with a device ID, a device ID is required to activate it again"
                                    }
                                     

                                

Invalid License Key

                                    {
                                        "result" : "error",
                                        "code"   : "100",
                                        "message": "Invalid license key"
                                    }
                                     

                                

Invalid Parameters

                                    {
                                        "result" : "error",
                                        "code"   : "600",
                                        "message": "Invalid parameters"
                                    }
                                     

                                

Invalid API Key

                                    {
                                        "result" : "error",
                                        "code"   : "200",
                                        "message": "Invalid API key"
                                    }
                                     

                                

An Error Has Occurred Please Retry

                                    {
                                        "result" : "error",
                                        "code"   : "000",
                                        "message": "An error has occurred please retry"
                                    }
                                     

                                

Deactivate #back to top

The following is a PHP example using CURL.

Example License Key deactivation API Request


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'deactivate',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => '0A9Q5OXT13in3LGjM9F3W',

                                        // The License Key
                                        'license_key'         => 'FFFF-FFFF-FFFF-FFFF',

                                        // The device ID
                                        // The Device ID is optional, but if it is used and the license keys was activated with it
                                        // it becomes required, a license key activated with a Device ID can't be deactivated
                                        // without it and can't be activated again without it.
                                        // The device ID can be anything you want, its role is to identify the "Device",
                                        //  "Machine" or "Domain" where the license was activated.
                                        'device_id'           => 'userdomain.ltd'
                                    );


                                    //url-ify the data for the POST
                                    $fields_string = "";
                                    foreach($parameters as $key=>$value) {
                                        $fields_string .= $key.'='.$value.'&';
                                    }
                                    rtrim($fields_string, '&');

                                    // Open connection
                                    $ch = curl_init();

                                    // Set the url, number of POST vars, POST data
                                    curl_setopt($ch, CURLOPT_URL, $post_url);
                                    curl_setopt($ch, CURLOPT_POST, count($parameters));
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                                    // Execute post
                                    $result = curl_exec($ch);
                                    curl_close($ch);

                                    // Display the request result
                                    echo $result;



                                

Deactivation Successful Response

                                    {
                                        "result" : "success",
                                        "code"   : "400",
                                        "message": "License key deactivated"
                                    }
                                     

                                

License Key Already Inactive

                                    {
                                        "result" : "success",
                                        "code"   : "450",
                                        "message": "License key already inactive"
                                    }
                                     

                                

Expired License Key

                                    {
                                        "result" : "error",
                                        "code"   : "550",
                                        "message": "Expired license key"
                                    }
                                     

                                

Invalid Device ID

                                    {
                                        "result" : "error",
                                        "code"   : "700",
                                        "message": "Device ID required, this license keys was activated with a device ID, a device ID is required to deactivate it"
                                    }
                                     

                                

Invalid License Key

                                    {
                                        "result" : "error",
                                        "code"   : "100",
                                        "message": "Invalid license key"
                                    }
                                     

                                

Invalid Parameters

                                    {
                                        "result" : "error",
                                        "code"   : "600",
                                        "message": "Invalid parameters"
                                    }
                                     

                                

Invalid API Key

                                    {
                                        "result" : "error",
                                        "code"   : "200",
                                        "message": "Invalid API key"
                                    }
                                     

                                

An Error Has Occurred Please Retry

                                    {
                                        "result" : "error",
                                        "code"   : "000",
                                        "message": "An error has occurred please retry"
                                    }
                                     

                                

Verify #back to top

The following is a PHP example using CURL.

Example License Key deactivation API Request


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'verify',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => '0A9Q5OXT13in3LGjM9F3W',

                                        // The License Key
                                        'license_key'         => 'FFFF-FFFF-FFFF-FFFF',

                                        // The device ID
                                        // The Device ID is optional, but if it is used and the license keys was activated with it
                                        // it becomes required, a license key activated with a Device ID can't be deactivated
                                        // without it and can't be activated again without it.
                                        // The device ID can be anything you want, its role is to identify the "Device",
                                        //  "Machine" or "Domain" where the license was activated.
                                        'device_id'           => 'userdomain.ltd'
                                    );


                                    //url-ify the data for the POST
                                    $fields_string = "";
                                    foreach($parameters as $key=>$value) {
                                        $fields_string .= $key.'='.$value.'&';
                                    }
                                    rtrim($fields_string, '&');

                                    // Open connection
                                    $ch = curl_init();

                                    // Set the url, number of POST vars, POST data
                                    curl_setopt($ch, CURLOPT_URL, $post_url);
                                    curl_setopt($ch, CURLOPT_POST, count($parameters));
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                                    // Execute post
                                    $result = curl_exec($ch);
                                    curl_close($ch);

                                    // Display the request result
                                    echo $result;



                                

Valid License Key

                                    {
                                        "result" : "success",
                                        "code"   : "500",
                                        "message": "Valid license key"
                                    }
                                     

                                

Expired License Key

                                    {
                                        "result" : "error",
                                        "code"   : "550",
                                        "message": "Expired license key"
                                    }
                                     

                                

Invalid Device ID

                                    {
                                        "result" : "error",
                                        "code"   : "650",
                                        "message": "Invalid device ID"
                                    }
                                     

                                

Invalid License Key

                                    {
                                        "result" : "error",
                                        "code"   : "100",
                                        "message": "Invalid license key"
                                    }
                                     

                                

Invalid Parameters

                                    {
                                        "result" : "error",
                                        "code"   : "600",
                                        "message": "Invalid parameters"
                                    }
                                     

                                

Invalid API Key

                                    {
                                        "result" : "error",
                                        "code"   : "200",
                                        "message": "Invalid API key"
                                    }
                                     

                                

An Error Has Occurred Please Retry

                                    {
                                        "result" : "error",
                                        "code"   : "000",
                                        "message": "An error has occurred please retry"
                                    }
                                     

                                

Get License Keys Details #back to top

The following is a PHP example using CURL.

Example License Key deactivation API Request


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'details',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => '0A9Q5OXT13in3LGjM9F3W',

                                        // The License Key
                                        'license_key'         => 'FFFF-FFFF-FFFF-FFFF',

                                        // The device ID
                                        // The Device ID is optional, but if it is used and the license keys was activated with it
                                        // it becomes required, a license key activated with a Device ID can't be deactivated
                                        // without it and can't be activated again without it.
                                        // The device ID can be anything you want, its role is to identify the "Device",
                                        //  "Machine" or "Domain" where the license was activated.
                                        'device_id'           => 'userdomain.ltd'
                                    );


                                    //url-ify the data for the POST
                                    $fields_string = "";
                                    foreach($parameters as $key=>$value) {
                                        $fields_string .= $key.'='.$value.'&';
                                    }
                                    rtrim($fields_string, '&');

                                    // Open connection
                                    $ch = curl_init();

                                    // Set the url, number of POST vars, POST data
                                    curl_setopt($ch, CURLOPT_URL, $post_url);
                                    curl_setopt($ch, CURLOPT_POST, count($parameters));
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                                    // Execute post
                                    $result = curl_exec($ch);
                                    curl_close($ch);

                                    // Display the request result
                                    echo $result;



                                

License Details

                                    {
                                        "license_id"                : "123",
                                        "product_id"                : "123",
                                        "variation_id"              : "123", // If variation_id == 0 then it's not a variable product
                                        "license_key"               : "FFFF-FFFF-FFFF-FFFF",
                                        "image_license_key"         : null,
                                        "license_status"            : "sold",
                                        "owner_first_name"          : "John",
                                        "owner_last_name"           : "Doe",
                                        "owner_email_address"       : "name@userdomain.ltd",
                                        "delivre_x_times"           : "0",
                                        "remaining_delivre_x_times" : "0",
                                        "max_instance_number"       : "1",
                                        "number_use_remaining"      : "1",
                                        "activation_date"           : null,
                                        "creation_date"             : "2019-12-31",
                                        "expiration_date"           : "2020-12-31",
                                        "valid"                     : "0",
                                        "order_id"                  : "5382",
                                        "sold_date"                 : "2019-12-31",
                                        "device_id"                 : "[\"userdomain.ltd\",\"device1234\"]" // After JSON decoding the response, this value should also be JSON decoded
                                    }
                                     

                                

Get Product API Meta #back to top

The following is a PHP example using CURL.

Example License Key deactivation API Request


                                    // The post url is your WordPress website URL where the plugin is installed
                                    // If the your WordPress installation is in a sub-folder the URL to that sub-folder
                                    // should be used instead. Example: https://domain.ltd/my-sub-folder
                                    $post_url = 'https://domain.ltd/';


                                    $parameters = array(
                                        // The API command
                                        // The fslm_v2_api_request parameter takes one of the following values
                                        // verify, activate, deactivate, details, extra_data
                                        'fslm_v2_api_request' => 'extra_data',

                                        // Your API Key
                                        // You can set your API key in the page
                                        // License Manager > Settings > API
                                        'fslm_api_key'        => '0A9Q5OXT13in3LGjM9F3W',

                                        // WooCommerce Product ID
                                        'product_id'         => '123',
                                    );


                                    //url-ify the data for the POST
                                    $fields_string = "";
                                    foreach($parameters as $key=>$value) {
                                        $fields_string .= $key.'='.$value.'&';
                                    }
                                    rtrim($fields_string, '&');

                                    // Open connection
                                    $ch = curl_init();

                                    // Set the url, number of POST vars, POST data
                                    curl_setopt($ch, CURLOPT_URL, $post_url);
                                    curl_setopt($ch, CURLOPT_POST, count($parameters));
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                                    // Execute post
                                    $result = curl_exec($ch);
                                    curl_close($ch);

                                    // Display the request result
                                    echo $result;



                                

Product API Meta

                                    {
                                        "software_name"        :"YOUR SOFTWARE NAME",
                                        "software_id"          :"YOUR SOFTWARE ID",
                                        "software_version"     :"YOUR SOFTWARE VERSION",
                                        "software_author"      :"YOUR SOFTWARE AUTHOR",
                                        "software_url"         :"YOUR SOFTWARE URL",
                                        "software_last_update" :"LAST UPDATE DATE",
                                        "software_extra_data"  : { "key1":"value1", "key2":"value2"} | "STRING VALUE" // The value of this field can be a String or JSON
                                    }
                                     

                                

API Responses #back to top

100 - Invalid License Key

                                    {
                                        "result" : "error",
                                        "code"   : "100",
                                        "message": "Invalid license key"
                                    }
                                     

                                

200 - Invalid API Key

                                    {
                                        "result" : "error",
                                        "code"   : "200",
                                        "message": "Invalid API key"
                                    }
                                     

                                

300 - Activation Successful

                                    {
                                        "result" : "success",
                                        "code"   : "300",
                                        "message": "License key activated"
                                    }
                                     

                                

350 - Maximum Number of Activation Reached

                                    {
                                        "result" : "error",
                                        "code"   : "350",
                                        "message": "Maximum number of activation reached"
                                    }
                                     

                                

400 - Deactivation Successful

                                    {
                                        "result" : "success",
                                        "code"   : "400",
                                        "message": "License key deactivated"
                                    }
                                     

                                

450 - License Key Already Inactive

You will get this response when you attempt to deactivate a license key that is already inactive.

                                    {
                                        "result" : "success",
                                        "code"   : "450",
                                        "message": "License key already inactive"
                                    }
                                     

                                

500 - Valid License Key

                                    {
                                        "result" : "error",
                                        "code"   : "500",
                                        "message": "Valid license key"
                                    }
                                     

                                

550 - Expired License Key

                                    {
                                        "result" : "error",
                                        "code"   : "550",
                                        "message": "Expired license key"
                                    }
                                     

                                

600 - Invalid Parameters

Each API command required certain parameters, if one or more if the required parameters in not sent in the request you will get this error as a response.

                                    {
                                        "result" : "error",
                                        "code"   : "600",
                                        "message": "Invalid parameters"
                                    }
                                     

                                

650 - Invalid Device ID (Verification Request)

License verification with a Device ID will return this error if the sent Device ID is not in the database.

                                    {
                                        "result" : "error",
                                        "code"   : "650",
                                        "message": "Invalid device ID"
                                    }
                                     

                                

700 - Invalid Device ID (Deactivation Request)

Attempting to deactivate a license key that was activated before with a Device ID without a Device ID will result in this error code.
Only after all the device IDs assigned to a license key are deleted either by disabling them or manually deleting them then the license can be deactivated without a Device ID.

                                    {
                                        "result" : "error",
                                        "code"   : "700",
                                        "message": "Device ID required, this license keys was activated with a device ID, a device ID is required to deactivate it"
                                    }
                                     

                                

750 - Invalid Device ID (Activation Request)

Attempting to activate a license key that was activated before with a Device ID without a Device ID will result in this error code.
Only after all the device IDs assigned to a license key are deleted either by disabling them or manually deleting them then the license can be activated without a Device ID.

                                    {
                                        "result" : "error",
                                        "code"   : "750",
                                        "message": "Device ID required, this license keys was activated with a device ID, a device ID is required to activate it again"
                                    }
                                     

                                

000 - An Error Has Occurred Please Retry

You will get this response if something goes wrong with the request(example: the database record could not be updated)

                                    {
                                        "result" : "error",
                                        "code"   : "000",
                                        "message": "An error has occurred please retry"
                                    }
                                     

                                

Delete Device IDs #back to top

If there is any Device IDs assigned to a license key they can be manually deleted in the edit license key page.


Translation #back to top

The plugin includes .po/.pot translation files, I recommend using Loco translator and settings the text domain and file name prefix to "fslm"

Support Desk #back to top

Support for my items includes:
  • * Responding to questions or problems regarding the item and its features
  • * Fixing bugs and reported issues
  • * Providing updates to ensure compatibility with new software versions
Item support does not include:
  • * Customization and installation services
  • * Support for third party software and plug-ins
Before seeking support, please...
  • * Make sure your question is a valid Plugin Issue and not a customization request.
  • * Make sure you have read through the documentation and any related video guides before asking support on how to accomplish a task.
  • * Make sure to double check the plugin FAQs.
  • * Try disabling any active plugins to make sure there isn't a conflict with a plugin. And if there is this way you can let us know.
  • * If you have customized the plugin and now have an issue, back-track to make sure you didn't make a mistake. If you have made changes and can't find the issue, please provide us with your changelog.
  • * Almost 80% of the time we find that the solution to people's issues can be solved with a simple "Google Search". You might want to try that before seeking support. You might be able to fix the issue yourself much quicker than we can respond to your request.
  • * Make sure to state the name of the plugin you are having issues with when requesting support via CodeCanyon.

Version History (Changelog) #back to top

Changelog

								
									Version 4.2.9 – October 26, 2020
									
										- Bugfix
								
									Version 4.2.8 – August 29, 2020	
									
										- Bugfix
								
									Version 4.2.7 – August 24, 2020	
									
										Added the option to automatically delete license keys that are older than an X number of days.
										API license verification bugfix.
										Stock Sync: backorders bugfix.
										Queue System: a queuing system to prevent orders placed at the same time from getting the same license keys.
										Private API: Allows the admin to perform actions that can’t be done using the standard API, like setting a license key as expired. (Feature requested by a buyer, the current version can only be used to expire license keys, more options are coming soon.)
										Bugfixes.
										
										The new features can be enabled from the plugins sttings page

                                    Version 4.2.4 - July 1, 2020
									
										- Bulk image upload bug fix.
									
                                    Version 4.2.3 - June 16, 2020

                                        - Pagination bug fix.
								
									Version 4.2.2 - June 8, 2020

                                        - Added the option to deliver different keys if a license key is set to be delivered multiple times.
										- Translation fix. 

                                    Version 4.2.1 - March 21, 2020

                                        - Filter by variation.
                                        - Show the number of license keys returned by the filter.
                                        - Ignore Mac OS hidden files when bulk importing image license keys.

                                    Version 4.2 - January XX, 2020

                                        - Bulk delete license keys by product.
                                        - UI Optimization.
                                        - Show variation IDs to fix the issue with WooCommerce not showing the full variation name.
                                        - Show how many times the license key can be used for for keys that can be delivered multiple times.

                                    Version 4.1.8 - August 29, 2019

                                        - API: deactivation with device ID bug fix.
								
									Version 4.1.7 - August 1, 2019

                                        - Added the option enable/disable adding duplicate license keys.
                                        - Minor bug fix.

									Version 4.1.6 - June 12, 2019

                                        - Bug fix

                                    Version 4.1.5 - June 10, 2019

                                        - Stock sync runs as background process.
                                        - Fixed admin bar notifications bug.

                                    Version 4.1.3 - May 10, 2019

                                        - Added Device ID to the API
                                        - Bug fixes

                                    Version 4.0 - March 9, 2019

                                        - Fixed pagination buttons not showing correctly in WordPress 5.1

                                    Version 4.0 - February 4, 2019

                                        - Added Stock synchronization: now you can sync available license keys stock with WooCommerce product stock.
                                        - Added the option to automatically change expired license keys status.
                                        - Better back-order support: added more option to the order page so you can replace keys individually or assign new ones to an already existing order.
                                        - Bug fixes.

                                    Version 3.2.2 - January 27, 2019

                                        - Bug fix

                                    Version 3.2.1 - December 25, 2018

                                        - Minor fix

                                    Version 3.2 - November 6, 2018

                                        - Expiration date bug fix

                                    Version 3.1 - October 22, 2018

                                        - Bug fixes and optimizations

                                    Version 3.0 - September 15, 2018

                                        - Backorders support
                                        - Automatically enable sending license keys when a license key is added or imported
                                        - Bulk image license key upload
                                        - Bulk image license key upload progress bar
                                        - Bulk license key generation
                                        - Available license keys count in the product page
                                        - License keys global settings
                                        - Replace order license keys
                                        - API version 2
                                        - Bug fixes

                                    Version 2.4.4 - April 23, 2018

                                        - Bug fix

                                    Version 2.4 - December 11th, 2017

                                        - Minor fix

                                    Version 2.3 - September 11th, 2017

                                       - Added license keys search filters.
                                       - Added the option to disable the second email.
                                       - Added product/variation name filter when adding/editing a license keys.
                                       - Bug fixes

                                    Version 2.1 - January 1st, 2017

                                        - Added the option to deliver license keys as images
                                        - Added custom order status support
                                        - Added License Key encryption
                                        - Added the option to deliver the same key multiple times
                                        - Added customizable Email templates
                                        - Added the option to resend license keys email to the customer
                                        - Added the option to change the license keys assign to an order after purchase
                                        - Extended the API
                                        - Extra product information for API users
                                        - Added the option to make the customer see the license keys in the email or in the
                                          website
                                        - Added the option to display the license keys as text only, image only or both
                                        - New organized user interface
                                        - Corrected the typos
                                        - Minor fixes

                                    Version 2.0.2 - November 5th, 2016

                                        - Extended the API

                                    Version 2.0.1 - August 27th, 2016

                                        - Added Multi-line License key Support
                                        - Removed License Key length limit
                                        - Added the possibility to change 'License key' that appears on the emails to
                                          another text(Example: Purchase Code)
                                        - Minor fixes

                                    Version 2.0 - August 18th, 2016

                                        - Added Product variation support
                                        - Added the possibility to deliver multiple license key per purchase
                                        - Added the possibility to change the meta key 'License key' to another
                                          text(Example: Purchase Code)
                                        - Minor fixes

                                    Version 1.1 - August 4th, 2016

                                        - Translation fix

                                    Version 1.1 - July 28th, 2016

                                        - Added HTML Link License key support

                                    Version 1.0 - June 10th, 2016

                                        - Initial release