Als je zelf een plugin hebt ontwikkeld, en je wilt dat je klanten jouw plugin op licentiebasis mogen gebruiken dan heb je twee mogelijkheden om dat op te zetten:
OPTIE 1
Allereerst kun je zelf een licentiemanager ontwikkelen die rechtstreeks met jouw webwinkel communiceert. Jouw commerciele plugins koppel je weer aan je licentiemanager. Hiermee heb je volledige controle over jouw licenties en werk je geheel buiten shop.nopfinance.com om.
OPTIE 2
Een tweede mogelijkheid is je licenties te laten beheren door shop.nopfinance.com. Hoe werkt dat in de praktijk?
1) In je plugin bron project maak je onder 'References' een koppeling met de dll 'NopFinance.Plugins.Licensing.LicenseManager.dll'. Deze vind je in de CustomPlugins\NopFinance.Plugins.Licensing.LicenseManager folder. Zet de 'Copy Local' property van de plugin altijd op False
Nu heb je de beschikking over de licentiemanager van NopFinance. Je bepaalt nu waar je in je broncode op de licentie wilt controleren. Dat doe je als volgt:
Declareer in de klasse waarin je wilt controleren op licentie een member naar ILicenseManagerService:
Je kunt nu via Dependency Injection een instantie verkrijgen via AutoFac:
of je gebruikt de EngineContext om dynamisch een instantie te verkrijgen:
Je klasse moet ook een interface ondersteunen te weten ILicensable. Dus je klass-definitie komt er bijvoorbeeld zo uit te zien:
Nu ben je klaar om te controleren op een geldige licentie. Bijvoorbeeld voordat je een scherm opent of een betaalde functie wilt uitvoeren:
Belangrijk: In de licentiemanager wordt de uitkomst van de functie HasActiveLicense(..) gecached voor 60 minuten. Dat betekent in de praktijk dat je de functie regelmatig mag aanroepen zonder dat dat performance-problemen zal veroorzaken. Na 60 minuten zal de request weer iets langer duren omdat dat dan de hash wordt doorgerekend.
Nu je jouw kant voor elkaar hebt zul je je plugin ook nog bekend moeten maken op het shop.nopfinance.com platform.
Hiervoor moet de AssemblyName van je plugin geregistreerd worden in onze webshop. Momenteel kan dat alleen nog door de beheerder gedaan worden. Stuur daarom een mail met de volgende gegevens naar info@nopfinance.com
-De Assembly Name (uit je project>properties>application pagina)
-De naam van je plugin
of je Description.txt bestand
en verder
-De duur van de geldigheid van je licentie in maanden of in jaren, bijvoorbeeld 1 jaar of 6 maanden, 9 maanden etc.
-De prijs van je plugin ex btw
-Een afbeelding voor je plugin
Later zul je middels een verkopers account zelf je plugins kunnen beheren.
Als je niet zeker weet wat je Assembly Name is dan kun je die opvragen met het volgende stukje code:
OPTIE 1
Allereerst kun je zelf een licentiemanager ontwikkelen die rechtstreeks met jouw webwinkel communiceert. Jouw commerciele plugins koppel je weer aan je licentiemanager. Hiermee heb je volledige controle over jouw licenties en werk je geheel buiten shop.nopfinance.com om.
OPTIE 2
Een tweede mogelijkheid is je licenties te laten beheren door shop.nopfinance.com. Hoe werkt dat in de praktijk?
1) In je plugin bron project maak je onder 'References' een koppeling met de dll 'NopFinance.Plugins.Licensing.LicenseManager.dll'. Deze vind je in de CustomPlugins\NopFinance.Plugins.Licensing.LicenseManager folder. Zet de 'Copy Local' property van de plugin altijd op False
Nu heb je de beschikking over de licentiemanager van NopFinance. Je bepaalt nu waar je in je broncode op de licentie wilt controleren. Dat doe je als volgt:
Declareer in de klasse waarin je wilt controleren op licentie een member naar ILicenseManagerService:
#region IoC
private ILicenseManagerService _licenseManagerService;
#endregion
Je kunt nu via Dependency Injection een instantie verkrijgen via AutoFac:
public MyClass(ILicenseManagerService licenseManagerService)
{
_licenseManagerService = licenseManagerService;
}
of je gebruikt de EngineContext om dynamisch een instantie te verkrijgen:
_licenseManagerService = EngineContext.Current.Resolve<ILicenseManagerService>();
Je klasse moet ook een interface ondersteunen te weten ILicensable. Dus je klass-definitie komt er bijvoorbeeld zo uit te zien:
public class MyPlugin : BasePlugin, ILicensable,
IConfigurationMenuPlugin,
INopMenuItemPlugin,
ITabMenuItemPlugin
Nu ben je klaar om te controleren op een geldige licentie. Bijvoorbeeld voordat je een scherm opent of een betaalde functie wilt uitvoeren:
if(_licenseManagerService.HasActiveLicense(this))
{
...doe wat je mag doen met licentie
}
Belangrijk: In de licentiemanager wordt de uitkomst van de functie HasActiveLicense(..) gecached voor 60 minuten. Dat betekent in de praktijk dat je de functie regelmatig mag aanroepen zonder dat dat performance-problemen zal veroorzaken. Na 60 minuten zal de request weer iets langer duren omdat dat dan de hash wordt doorgerekend.
Nu je jouw kant voor elkaar hebt zul je je plugin ook nog bekend moeten maken op het shop.nopfinance.com platform.
Hiervoor moet de AssemblyName van je plugin geregistreerd worden in onze webshop. Momenteel kan dat alleen nog door de beheerder gedaan worden. Stuur daarom een mail met de volgende gegevens naar info@nopfinance.com
-De Assembly Name (uit je project>properties>application pagina)
-De naam van je plugin
of je Description.txt bestand
en verder
-De duur van de geldigheid van je licentie in maanden of in jaren, bijvoorbeeld 1 jaar of 6 maanden, 9 maanden etc.
-De prijs van je plugin ex btw
-Een afbeelding voor je plugin
Later zul je middels een verkopers account zelf je plugins kunnen beheren.
Als je niet zeker weet wat je Assembly Name is dan kun je die opvragen met het volgende stukje code:
var assemblyName = this.GetType().Assembly.FullName.Split(new[] { ',' })[0];
0
"In an age where information is abundantly available, it is no longer enough to possess it. You have to act on it!"