API-ul inclus cu extensia Software Licensing vă permite să activați chei de licență de la distanță, să verificați dacă cheile sunt valide (și nu expirate), și, de asemenea, să preluați informații despre cele mai recente versiuni de software. Acest API poate fi implementat cu majoritatea software-urilor, nu doar cu plugin-uri și teme WordPress.
În acest articol
Solicitări API disponibile & Parametri
Integrare plugin-uri & teme WordPress
Activarea unei chei de licență
Verificarea validității / activității unei licențe
Obținerea informațiilor despre versiune
Preluarea versiunilor pentru mai multe produse simultan
Exemple API în alte limbi
Întrebări frecvente / Depanare
Există patru tipuri de solicitări API disponibile:
- activate_license – Folosit pentru a activa de la distanță o cheie de licență
- deactivate_license – Folosit pentru a dezactiva de la distanță o cheie de licență
- check_license – Folosit pentru a verifica de la distanță dacă o cheie de licență este activată, validă și nu expirată
- get_version – Folosit pentru a prelua de la distanță informațiile despre cea mai recentă versiune pentru un produs
Fiecare dintre metodele de mai jos funcționează în același mod. URL-ul site-ului pe care aveți instalat Easy Digital Download + Software Licensing va acționa ca punct final API. Toate solicitările către API se fac ca solicitări GET sau POST și urmează acest format:
https://YOURSITE.com/?edd_action={request type}&item_id={download ID here}&license=cc22c1ec86304b36883440e2e84cddff&url={url of the site being licensed}
Solicitarea necesită trei parametri și are un parametru opțional:
- edd_action – Acesta este tipul solicitării (vezi mai jos)
- item_id – Utilizați ID-ul de descărcare al produsului dvs. Acesta este mai precis decât utilizarea item_name.
- În loc de item_id, puteți utiliza și item_name, care este numele descărcării în loc de ID. Trecerea item_id este preferată, deoarece este mai puțin probabil să se schimbe. Dacă item_name se schimbă, software-ul dvs. va trebui actualizat și referințele anterioare la numele vechi nu vor mai funcționa.
- license – Aceasta este cheia de licență pentru care efectuați o acțiune
- url – (opțional) Acesta este URL-ul site-ului de unde provine solicitarea API
Sfat URL Software Desktop:
Parametrul url nu se limitează la URL-uri. De exemplu, software-ul desktop ar putea folosi parametrul url pentru un ID de sistem sau orice text unic.
Chei de licență:
- API-ul pentru chei de licență suportă doar următoarele caractere [a-z, A-Z, 0-9, -, _].
- Cheile de licență pot avea o lungime maximă de 256 de caractere.
Integrare plugin-uri & teme WordPress:
Consultați următoarele documente despre integrarea API-ului Software Licensing cu plugin-uri & teme WordPress:
Consultați documentația noastră despre cum să integrați actualizări automate pentru plugin-urile dvs. WordPress.
Consultați documentația noastră despre cum să integrați actualizări automate pentru temele dvs. WordPress
Activarea unei chei de licență
Pentru a activa o licență de la distanță, URL-ul pe care îl veți utiliza este:
https://YOURSITE.com/?edd_action=activate_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com
Parametrul item_id (item_id=8) va fi înlocuit cu ID-ul real al produsului dvs. Îl puteți găsi în tabloul de bord lângă produs:

Parametrul license este setat la cheia de licență pe care doriți să o activați.
Răspunsul pentru această cerere va fi un obiect JSON. Dacă licența a fost activată cu succes, răspunsul va fi:
{
"success": true,
"license": "valid",
"item_id": false (or Item ID if passed)
"item_name": "EDD Product Name",
"license_limit": 0,
"site_count": 2,
"expires": "2020-06-30 23:59:59",
"activations_left": "unlimited",
"checksum": "<md5 checksum>",
"payment_id": 12345,
"customer_name": "John Doe",
"customer_email": "[email protected]",
"price_id": "2"
}
Dacă licența este invalidă și nu a putut fi activată, răspunsul va fi:
{
"success": false,
"license": "invalid",
"item_id": false (or Item ID if passed)
"item_name": "EDD Product Name",
"error": "expired",
"expires": "2020-04-28 23:59:59",
"license_limit": 0,
"site_count": 1,
"activations_left": "unlimited",
"checksum": "<md5 checksum>",
"payment_id": 12345,
"customer_name": "John Doe",
"customer_email": "[email protected]",
"price_id": "2"
}
Erori posibile:
"missing" - License doesn't exist "missing_url" - URL not provided "license_not_activable" - Attempting to activate a bundle's parent license "disabled" - License key revoked "no_activations_left" - No activations left "expired" - License has expired "key_mismatch" - License is not valid for this product "invalid_item_id" - Invalid Item ID "item_name_mismatch" - License is not valid for this product "site_inactive" - Site is not active for this license "invalid" - License key does not match "valid" - License is valid
Verifică dacă o licență este validă / activă
Verificarea dacă o licență este validă și nu a expirat este foarte asemănătoare cu activarea. Această cerere este de obicei făcută dacă trebuie să confirmi că o licență este încă validă după ce a fost activată. Licențele expiră după un an (implicit), deci aceasta este ceea ce vei folosi pentru a verifica dacă licența a expirat.
Pentru a verifica o licență de la distanță, URL-ul pe care îl vei folosi este:
https://YOURSITE.com/?edd_action=check_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com
Parametrul item_id (item_id=8) va fi înlocuit cu ID-ul real al produsului tău. Îl poți găsi în tabloul tău de bord lângă produs:

Parametrul license este setat la cheia de licență pe care dorești să o verifici.
Răspunsul pentru această cerere va fi un obiect JSON. Dacă licența este activă și încă validă, răspunsul va fi:
{
"success": true,
"license": "valid",
"item_id": false, (or Item ID if passed)
"item_name": "EDD Product Name",
"checksum": "",
"expires": "2020-06-30 23:59:59",
"payment_id": 12345,
"customer_name": "John Doe",
"customer_email": "[email protected]",
"license_limit": 0,
"site_count": 2,
"activations_left": "unlimited",
"price_id": "2"
}
Dacă licența este invalidă, răspunsul va fi:
{
"success": false,
"license": "invalid",
"item_id": false, (or Item ID if passed)
"item_name": "EDD Product Name",
"expires": "2014-10-23 00:00:00",
"license_limit": 0,
"site_count": 1,
"activations_left": "unlimited",
"checksum": "checksum",
"payment_id": 54224,
"customer_name": "John Doe",
"customer_email": "[email protected]",
"price_id": "2"
}
Stări posibile ale licenței:
"disabled" - License key revoked "expired" - License has expired "key_mismatch" - License is not valid for this product "invalid_item_id" - Invalid Item ID "item_name_mismatch" - License is not valid for this product
Obținerea informațiilor despre versiune
Preluarea informațiilor despre versiune îți permite să preiei de la distanță date despre cel mai recent număr de versiune, inclusiv jurnalele de modificări și linkurile de descărcare pentru fișierele de actualizare.
Pentru a obține informații despre versiune pentru o cheie de licență:
https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com
Parametrul item_id (item_id=8) va fi înlocuit cu ID-ul real al produsului tău. Îl poți găsi în tabloul tău de bord lângă produs:

Note referitoare la cerere:
- Dacă folosești item_name în loc de item_id, introdu titlul produsului în Easy Digital Downloads *exact*. Folosirea item_id este mai precisă.
- Parametrii license și url sunt opționali. Dacă sunt omisi, informațiile despre cea mai recentă versiune vor fi preluate, dar nu va fi inclus niciun link de descărcare.
- Începând cu Software Licensing 3.8, poți include versiuni de platformă în cerere. Dacă versiunea platformei nu îndeplinește cerințele minime setate pentru produs în Easy Digital Downloads,
new_versiondin răspuns va fifalseîn loc de noul număr de versiune.php_versionșiwp_versionsunt suportate implicit.
Răspunsul va fi un obiect JSON care arată cam așa:
{
"new_version": "2.0",
"stable_version": "2.0",
"name": "Restrict Content Pro",
"slug": "restrict-content-pro",
"url": "https://edd.com/downloads/restrict-content-pro/?changelog=1",
"last_updated": "2017-01-03 11:59:46",
"homepage": "https://edd.com/downloads/restrict-content-pro/",
"package": "",
"download_link": "",
"sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
"banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
}
Note referitoare la răspuns:
- Dacă nu este furnizată nicio cheie de licență în cererea get_version, informațiile despre versiune sunt totuși returnate; cu toate acestea, valorile package și download vor fi goale. Invers, dacă este furnizată o cheie de licență, dar aceasta nu aparține item_id sau item_name din cerere, va fi returnat un răspuns de eroare cu un motiv ca valoare msg.
- Un download_link va fi inclus dacă există un fișier, indiferent de starea licenței. Cu toate acestea, descărcarea nu va funcționa decât dacă licența este activă. Acest lucru permite site-urilor care au o licență expirată să o reînnoiască, dar să nu fie nevoite să aștepte ca cache-ul de actualizare să se golească înainte de a obține actualizarea.
- Proprietatea sections este un array serializat care include descrierea completă a produsului și jurnalul de modificări. Dacă folosești analiza ReadMe.txt pentru plugin-uri WordPress, va include și informații suplimentare furnizate prin fișierul readme.
Dacă doriți să preluați informații despre o versiune beta, adăugați &beta=1 la URL-ul cererii API, astfel:
https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com&beta=1
Preluarea versiunilor pentru mai multe produse simultan
Preluare versiuni pentru mai multe produse într-o singură cerere, folosind argumentul products. Acest argument acceptă un array de elemente. Fiecare element ar trebui să conțină aceleași argumente trimise într-o singură cerere.
Iată un exemplu folosind cURL:
curl -d edd_action=get_version -d products[0][item_id]=356 -d products[0][license]=59cc77ea94a2d867069a9d96142a35b8 -d products[0][url]="https://licensedsite.com" -d products[1][item_id]=46 -d products[1][license]=5cdd12a966c498fc6e423e261fe05303 -d products[1][url]="https://licensedsite.com" https://YOURSITE.com
Și iată un exemplu folosind funcția WordPresswp_remote_post():
$response = wp_remote_post( 'https://YOURSITE.com', array( 'body' => array( 'edd_action' => 'get_version', 'products' => array( 'my-first-plugin' => array( 'item_id' => 356, 'license' => '59cc77ea94a2d867069a9d96142a35b8', 'url' => 'https://licensedsite.com' ), 'my-second-plugin' => array( 'item_id' => 46, 'license' => '5cdd12a966c498fc6e423e261fe05303', 'url' => 'https://licensedsite.com' ) ) ) ) );
Răspunsul va fi un obiect JSON care conține rezultate pentru fiecare dintre produsele furnizate. Cheile produselor pe care le-ați furnizat în cerere vor fi păstrate în răspuns. Iată un exemplu:
{
"my-first-plugin": {
"new_version": "2.0",
"stable_version": "2.0",
"name": "My First Plugin",
"slug": "my-first-plugin",
"url": "https://edd.com/downloads/my-first-plugin/?changelog=1",
"last_updated": "2021-01-03 11:59:46",
"homepage": "https://edd.com/downloads/my-first-plugin/",
"package": "",
"download_link": "",
"sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
"banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
},
"my-second-plugin": {
"new_version": "1.3",
"stable_version": "1.3",
"name": "My Second Plugin",
"slug": "my-second-plugin",
"url": "https://edd.com/downloads/my-second-plugin/?changelog=1",
"last_updated": "2021-03-08 11:59:46",
"homepage": "https://edd.com/downloads/my-second-plugin/",
"package": "",
"download_link": "",
"sections": "a:2:{s:11:"description";s:793:"<p>Placerat porta in enim, urna cras, adipiscing augue dis lorem, pulvinar, natoque phasellus eu tincidunt, dictumst nunc ut dignissim turpis ac, pulvinar! Massa! Sed, enim, eu ac augue placerat scelerisque! Eu cursus, ridiculus cum nec lorem, natoque lorem dictumst amet! Nunc placerat dapibus enim dignissim, nunc mattis vel? Dolor nascetur placerat ridiculus augue massa porttitor turpis auctor, etiam et nisi pid ridiculus nisi duis ac. Turpis et non, dapibus diam! Placerat vel? Et, velit turpis mus sociis arcu, vel magna. Habitasse elementum elit cum nec est, eu, montes egestas est mattis lacus, turpis urna parturient, egestas, integer augue, penatibus natoque elit, rhoncus mid elementum, integer vut turpis. Et? Nisi pid. Nec, placerat ut tristique lorem a nunc velit nunc est.</p>n";s:9:"changelog";s:0:"";}",
"banners": "a:2:{s:4:"high";s:0:"";s:3:"low";s:0:"";}"
}
}
Accesarea API-ului în alte limbi
Deoarece API-ul folosește cereri HTTP POST simple, poate fi accesat în aproape orice limbă. Iată câteva exemple.
- API de Licențiere Software – Exemplu folosind cURL
- API Software Licensing – Exemplu folosind Perl
- API de licențiere software – Exemplu folosind Python
- API Software Licensing – Exemplu folosind Ruby
- API de Licențiere Software – Exemplu utilizând C#
- API de licențiere software – Exemplu folosind JavaScript
- API de Licențiere Software – Exemplu folosind jQuery
Întrebări frecvente / Depanare
Pot crea chei formatate personalizat?
Formatul implicit al cheii este un simplu sum md5.
Puteți schimba acel format la aproape orice doriți.
Cum pot împiedica accesul la software-ul, plugin-ul sau tema mea dacă licența este expirată sau dezactivată?
Starea acestei licențe nu afectează software-ul, ci doar indică starea cheii. Depinde de dezvoltator să citească acea stare pentru a face ceva. De exemplu, dacă o cheie este Expirată, software-ul ar putea alege să nu mai funcționeze sau ar putea alege să afișeze un avertisment.
O excepție la aceasta este că atunci când EDD vede o cheie expirată sau dezactivată atașată la un download, linkurile de download, inclusiv linkul get_version, nu vor funcționa. Prin urmare, actualizările nu vor mai funcționa prin răspunsul get_version.
Dacă întâmpinați probleme la activarea cheilor de licență în implementarea dvs. a
Software Licensing, iată câteva sfaturi pentru a rezolva problemele comune.
Cererile blocate de un plugin de securitate
Pluginurile de securitate pentru WordPress au adesea funcții care interferează cu cererile API ale cheilor de licență. Aceste funcții tind să facă activarea (și alte cereri API) să returneze un răspuns neașteptat, determinând eșecul rutinei de activare.
De exemplu, ați putea primi un răspuns ca acesta de la server dacă aveți un plugin de securitate care interferează:
[response] => Array ( [code] => 403 [message] => Forbidden )
Pluginul iThemes Security este cunoscut pentru că are o setare care poate cauza această problemă. Setarea se numește
Filter Suspicious Query Strings in the URL
Pentru a rezolva problema, pur și simplu dezactivați setarea
Filter Suspicious Query Strings in the URL. Dacă nu folosiți iThemes Security, aceasta va avea un nume diferit, deși similar.
Cererile blocate de reguli speciale .htaccess
Unele site-uri vor adăuga reguli speciale în fișierul .htaccess pentru a bloca anumite adrese IP sau pentru a adăuga protecție suplimentară site-ului.
Dacă aveți reguli speciale .htaccess în vigoare și cheile de licență nu se activează, încercați să eliminați regulile și apoi să activați cheile de licență. Dacă cheile de licență se activează corect acum, va trebui să ajustați regulile pentru a permite funcționarea rutinei API de licențiere.
Cererile blocate de un plugin „coming soon” sau de mentenanță
Dacă utilizați un plugin pentru modul de așteptare sau de mentenanță, este probabil ca cheile de licență să nu poată fi activate, deoarece pluginul pentru modul de așteptare / mentenanță va bloca solicitările. Pentru a rezolva problema, dezactivați pur și simplu modul de mentenanță sau pluginul de așteptare. Dacă trebuie să îl lăsați activ, dezactivați-l temporar pentru a testa procesul de activare a cheii de licență și apoi reactivați pluginul.
