Woocommerce linked licensing system for your plugins
-
Hi everyone
We've been working on a WooCommerce linked licensing system for months. I can definately say that you can make an efficient online licening system with Hise. We've built even a License Manager application, and of course integrated the same system to the plugins too.
Thanks go to @ustk for helping me about this system, he helped me to build a great solution for this I really appreciate that.
Here is a working example video with this system: https://noiseash.com/knowledge-base/activating-plugins/
https://www.youtube.com/watch?v=qYeL11CF8sU
I just wanted you to know that you can make the same thing including license activation/deactivation process with below requirments:
-
Install the JWT Authentication for WP REST API to your Wordpress Woocommerce website. This is a secure authentication method (No need to embed Woocommerce API keys to your software anymore).
-
You need to install Woocommerce License Manager plugin to your Wordpress Woocommerce website. That plugin is a go-to license plugin for Hise developers. It is a highly recommended, great and fast plugin that makes everything possible with lowest server requests. It's using JWT Auth system, that means no need to embed API keys to your exported plugin. This makes this plugin very secure and fast. With just one request, you can grab all of the user licenses which is a great feature! With Woocommerce REST API, you'd need to do it at least 2 requests, which isn't an economic way for the hosting server cpu. But with Woocommerce License Manager you can do it easily and much more securely.
If you install both on your Wordpress Woocommerce website, then you're ready to go with using Hise's server API and Woocommerce License Manager API in your plugins to authorize your products. You'll be able to get:
- Automatic license creation with the purchase
- Activate / Deactivate Licenses with Machine ID (max. activation number can be assigned)
- Get Purchased Products, Get License Meta Data,
- Register License that were sold by resellers
- Remove the license from the customer account
- You can combine this with subscription based selling via using a Woocommerce Subscription plugin
- And other ton's of features.
API documentation is here: https://firassaidi.com/docs/documentation-woocommerce-license-manager/api-version-3/authentication-jwt/
-
-
@orange How do you manage download permissions for users adding licenses sold by resellers? Do you generate a new $0 order when they add a license?
-
@d-healey said in Woocommerce linked licensing system for your plugins:
@orange How do you manage download permissions for users adding licenses sold by resellers? Do you generate a new $0 order when they add a license?
Yes. First you need to upload the license key to the Woocommerce License Manager and set it to "unregistered" status. This means this lciense key won't be sold to other customers and it will wait to be registered. Then "Register License Key" endpoint needs to be triggered. https://firassaidi.com/docs/documentation-woocommerce-license-manager/api-version-3/register-license-key/
-
@orange said in Woocommerce linked licensing system for your plugins:
Then "Register License Key" endpoint needs to be triggered.
Does that create a new order?
-
@d-healey said in Woocommerce linked licensing system for your plugins:
Does that create a new order?
Yes it creates an order with "0" value, so the user will get download links, default file permissions like the regular orders.
-
@orange Cool. I just wanted to check if that was the best way because that's what I'm doing :) I'm using a different license manager plugin though with a custom API.
-
@d-healey said in Woocommerce linked licensing system for your plugins:
@orange Cool. I just wanted to check if that was the best way because that's what I'm doing :) I'm using a different license manager plugin though with a custom API.
Actually I've contacted to this plugin's developer and asked this system. Thanks him, to listem my endless requests, he is a great developer :) Then he added JWT Auth, Register License, Get User Licenses... and lot's of features and then released a new API v3 :) So this plugin is just for Hise users :)
-
@orange - How did you deal with finding the correct folder on a Mac for your product...I assume that's where you are storing the license...
-
@lindon I store mine in appData.
const appData = FileSystem.getFolder(FileSystem.AppData);
Actually I don't store the license on the user's system, I just store a flag to indicate if they have a valid license once it's been confirmed by the server. From a security point of view it doesn't make much difference except if someone does de-encrypt the file they'll just find a flag instead of the license key.
-
@lindon said in Woocommerce linked licensing system for your plugins:
@orange - How did you deal with finding the correct folder on a Mac for your product...I assume that's where you are storing the license...
FileSystem.getFolder(FileSystem.AppData)
is the way to go as a reference point. And you can combine it with.getParentDirectory()
and/or.createDirectory("Your License Folder")
relatively to this reference point. -
@orange said in Woocommerce linked licensing system for your plugins:
@lindon said in Woocommerce linked licensing system for your plugins:
@orange - How did you deal with finding the correct folder on a Mac for your product...I assume that's where you are storing the license...
FileSystem.getFolder(FileSystem.AppData)
is the way to go as a reference point. And you can combine it with.getParentDirectory()
and/or.createDirectory("Your License Folder")
relatively to this reference point.& @d-healey ... yes obviously BUT:
FileSystem.AppData will point to the correct folder for the end-user product...but ONLY inside the end-user product.....
so I have a product called SynthSimple.... and a validation stand alone called myValidationApp.
inside SynthSimple the AppData folder points to:
C:/Users/joeBlo/AppData/Roaming/myCo/SynthSimple
inside myValidationApp it points to:
C:/Users/joeBlo/AppData/Roaming/myCo/myValidationApp
so myValidation App needs to put the validation key/flag/whatever inside the AppData folder for the end-product - not in its own folder....
So how do you do that?
-
@lindon said in Woocommerce linked licensing system for your plugins:
So how do you do that?
fromAbsolutePath
but not on master branch. You'll have to do as orange suggested and browse from the appData directory usinggetParentDirectory
,getFolder
, andgetChildFile
. -
Why don't you put the validation key/flag...etc. inside the "C:/Users/joeBlo/AppData/Roaming/myCo/Validation Folder" for example?
So this folder will be a common folder for all software, even with or without Validation App. For example;
const validationFolder = FileSystem.getFolder(FileSystem.AppData).getParentDirectory().createDirectory("Validation Folder");
-
@orange said in Woocommerce linked licensing system for your plugins:
Why don't you put the validation key/flag...etc. inside the "C:/Users/joeBlo/AppData/Roaming/myCo/Validation Folder" for example?
So this folder will be a common folder for all software, even with or without Validation App. For example;
const validationFolder = FileSystem.getFolder(FileSystem.AppData).getParentDirectory().createDirectory("Validation Folder");
because its not even commonly "rooted" on MacOS...
-
@lindon said in Woocommerce linked licensing system for your plugins:
because its not even commonly "rooted" on MacOS...
Yes AppData is common on both Win and Mac. This works here.
-
@orange --er no its not. I t will be common on a single Mac but not between more than one Mac - well that's my understanding anyway.
-
@orange . Congrats ! bro. Learning many things from you.
-
@orange Very interested in this. Well done!
-
-
@orange great job !! And thank you for your insight !