Anmelden
Loslegen

Easy Digital Downloads Dokumentation

Dokumentation, Referenzmaterialien und Tutorials für Easy Digital Downloads 

Softwarelizenzierungs-API

Die API, die mit der Software Licensing-Erweiterung geliefert wird, ermöglicht es Ihnen, Lizenzschlüssel remote zu aktivieren, zu überprüfen, ob Schlüssel gültig (und nicht abgelaufen) sind, und auch Informationen über die neuesten Softwareversionen abzurufen. Diese API kann mit den meisten Softwareprodukten implementiert werden, nicht nur mit WordPress-Plugins und -Themes.

In diesem Artikel

Verfügbare API-Anfragen & Parameter
WordPress Plugin & Theme-Integration
Lizenzschlüssel aktivieren
Prüfen, ob eine Lizenz gültig / aktiv ist
Versionsinformationen abrufen
Versionen für mehrere Produkte gleichzeitig abrufen
API-Beispiele in anderen Sprachen
FAQ / Fehlerbehebung


Es stehen vier Arten von API-Anfragen zur Verfügung:

  • activate_license – Wird verwendet, um einen Lizenzschlüssel remote zu aktivieren
  • deactivate_license – Wird verwendet, um einen Lizenzschlüssel remote zu deaktivieren
  • check_license – Wird verwendet, um remote zu überprüfen, ob ein Lizenzschlüssel aktiviert, gültig und nicht abgelaufen ist
  • get_version – Wird verwendet, um remote die neuesten Versionsinformationen für ein Produkt abzurufen

Jede der folgenden Methoden funktioniert auf die gleiche Weise. Die Website-URL, auf der Sie Easy Digital Download + Software Licensing installiert haben, fungiert als API-Endpunkt. Alle Anfragen an die API erfolgen entweder als GET- oder POST-Anfragen und folgen diesem Format:

https://YOURSITE.com/?edd_action={request type}&item_id={download ID here}&license=cc22c1ec86304b36883440e2e84cddff&url={url of the site being licensed}

Die Anfrage erfordert drei Parameter und hat einen optionalen Parameter:

  • edd_action – Dies ist die Art der Anfrage (siehe unten)
  • item_id – Use the Download ID of your download product. This is more accurate than using item_name.
    • Anstelle von item_id können Sie auch item_name verwenden, was der Name des Downloads anstelle der ID ist. Die Übergabe von item_id wird bevorzugt, da diese sich am wenigsten wahrscheinlich ändert. Wenn sich der item_name ändert, muss Ihre Software aktualisiert werden und frühere Verweise auf den alten Namen funktionieren nicht mehr.
  • license – Dies ist der Lizenzschlüssel, für den Sie eine Aktion ausführen
  • url – (optional) Dies ist die Website-URL, von der die API-Anfrage stammt

URL-Tipp Desktop-Software:
Der url-Parameter ist nicht auf URLs beschränkt. Desktop-Software könnte beispielsweise den url-Parameter für eine System-ID oder jeden eindeutigen Text verwenden.

Lizenzschlüssel:

  • Die Lizenzschlüssel-API unterstützt nur die folgenden Zeichen [a-z, A-Z, 0-9, -, _].
  • Lizenzschlüssel können eine maximale Länge von 256 Zeichen haben.

WordPress Plugins & Theme-Integration:
Beziehen Sie sich auf die folgenden Dokumente zur Integration der Software Licensing API mit WordPress Plugins & Themes:
Sehen Sie unsere Dokumentation, wie Sie automatische Upgrades für Ihre WordPress-Plugins integrieren.
Sehen Sie unsere Dokumentation, wie Sie automatische Upgrades für Ihre WordPress-Themes integrieren

Lizenzschlüssel aktivieren

Um eine Lizenz remote zu aktivieren, ist die von Ihnen zu verwendende URL:

https://YOURSITE.com/?edd_action=activate_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Der Parameter item_id (item_id=8) wird durch die tatsächliche ID Ihres Produkts ersetzt. Sie finden diese in Ihrem Dashboard neben dem Produkt:

Der Parameter license ist auf den Lizenzschlüssel gesetzt, den Sie aktivieren möchten.

Die Antwort auf diese Anfrage ist ein JSON-Objekt. Wenn die Lizenz erfolgreich aktiviert wurde, lautet die Antwort:

{
    "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"
}

Wenn die Lizenz ungültig ist und die Aktivierung fehlgeschlagen ist, lautet die Antwort:

{
    "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" 
  } 
  

Mögliche Fehler:

"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

Prüfen, ob eine Lizenz gültig / aktiv ist

Das Prüfen, ob eine Lizenz gültig und nicht abgelaufen ist, ist dem Aktivieren sehr ähnlich. Diese Anfrage wird normalerweise gestellt, wenn Sie bestätigen müssen, dass eine Lizenz nach der Aktivierung noch gültig ist. Lizenzen laufen standardmäßig nach einem Jahr ab, daher werden Sie dies verwenden, um zu prüfen, ob die Lizenz abgelaufen ist.

Um eine Lizenz remote zu prüfen, verwenden Sie die folgende URL:

https://YOURSITE.com/?edd_action=check_license&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Der Parameter item_id (item_id=8) wird durch die tatsächliche ID Ihres Produkts ersetzt. Sie finden diese in Ihrem Dashboard neben dem Produkt:

Der Parameter license wird auf den Lizenzschlüssel gesetzt, den Sie prüfen möchten.

Die Antwort auf diese Anfrage ist ein JSON-Objekt. Wenn die Lizenz aktiv und noch gültig ist, lautet die Antwort:

{
    "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"
}

Wenn die Lizenz ungültig ist, lautet die Antwort:

{
    "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"
}

Mögliche Lizenzstatus:

"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

Abrufen von Versionsinformationen

Das Abrufen der Versionsinformationen ermöglicht es Ihnen, Daten über die neueste Versionsnummer, einschließlich Changelogs und Download-Links für Update-Dateien, remote abzurufen.

So erhalten Sie Versionsinformationen für einen Lizenzschlüssel:

https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com

Der Parameter item_id (item_id=8) wird durch die tatsächliche ID Ihres Produkts ersetzt. Sie finden diese in Ihrem Dashboard neben dem Produkt:

Hinweise zur Anfrage:

  • Wenn Sie item_name anstelle von item_id verwenden, geben Sie den Titel des Produkts in Easy Digital Downloads exakt ein. Die Verwendung von item_id ist genauer.
  • Die Parameter license und url sind optional. Wenn sie weggelassen werden, werden die neuesten Versionsinformationen abgerufen, aber kein Download-Link enthalten sein.
  • Ab Software Licensing 3.8 können Sie Plattformversionen in die Anfrage aufnehmen. Wenn die Plattformversion die Mindestanforderungen für das Produkt in Easy Digital Downloads nicht erfüllt, wird new_version in der Antwort false anstelle der neuen Versionsnummer sein. php_version und wp_version werden standardmäßig unterstützt.

Die Antwort ist ein JSON-Objekt, das ungefähr so aussieht:

{
  "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:"";}"
}

Hinweise zur Antwort:

  • Wenn im get_version-Request kein Lizenzschlüssel angegeben wird, werden die Versionsinformationen trotzdem zurückgegeben; die Werte für package und download sind jedoch leer. Umgekehrt, wenn ein Lizenzschlüssel angegeben wird, der aber nicht zum item_id oder item_name in der Anfrage gehört, wird eine Fehlermeldung mit einer Begründung als msg-Wert zurückgegeben.
  • Ein download_link wird enthalten sein, wenn eine Datei vorhanden ist, unabhängig vom Status der Lizenz. Der Download funktioniert jedoch nicht, es sei denn, die Lizenz ist aktiv. Dies ermöglicht es Websites mit abgelaufener Lizenz, diese zu erneuern, aber nicht darauf warten zu müssen, dass der Update-Cache gelöscht wird, bevor sie das Update erhalten.
  • Die Eigenschaft sections ist ein serialisiertes Array, das die vollständige Produktbeschreibung und das Changelog enthält. Bei Verwendung von ReadMe.txt-Parsing für WordPress-Plugins werden auch zusätzliche Informationen aus der Readme-Datei enthalten sein.

Wenn Sie Informationen zu einer Beta-Version abrufen möchten, hängen Sie &beta=1 an Ihre API-Anfrage-URL an, wie folgt:

https://YOURSITE.com/?edd_action=get_version&item_id=8&license=cc22c1ec86304b36883440e2e84cddff&url=https://licensedsite.com&beta=1

Abrufen von Versionen für mehrere Produkte gleichzeitig

Rufen Sie Versionen für mehrere Produkte in einer einzigen Anfrage ab, indem Sie das Argument products verwenden. Dieses Argument akzeptiert ein Array von Elementen. Jedes Element sollte die gleichen Argumente enthalten, die in einer einzelnen Anfrage gesendet werden.

Hier ist ein Beispiel mit 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

Und hier ist ein Beispiel mit der WordPress
wp_remote_post() Funktion:

$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'
			)
		)
	)
) );

Die Antwort wird ein JSON-Objekt sein, das Ergebnisse für jedes der bereitgestellten Produkte enthält. Die Produktschlüssel, die Sie in der Anfrage angegeben haben, werden in der Antwort beibehalten. Hier ist ein Beispiel:

{
  "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:"";}"
  }
}

Zugriff auf die API in anderen Sprachen

Da die API einfache HTTP-POST-Anfragen verwendet, kann sie in fast jeder Sprache aufgerufen werden. Hier sind einige Beispiele.

FAQ / Fehlerbehebung

Kann ich benutzerdefinierte Schlüsselformate erstellen?

Das Standardformat für Schlüssel ist eine einfache MD5-Summe.
Sie können dieses Format nach Belieben ändern.

Wie verhindere ich den Zugriff auf meine Software, mein Plugin oder mein Theme, wenn die Lizenz abgelaufen oder deaktiviert ist?

Der Status dieser Lizenz hat keinen Einfluss auf die Software, er zeigt lediglich den Status des Schlüssels an. Es liegt am Entwickler, diesen Status zu lesen, um etwas zu tun. Wenn ein Schlüssel beispielsweise abgelaufen ist, könnte die Software entscheiden, nicht mehr zu funktionieren oder eine Warnung anzuzeigen.

Eine Ausnahme hierbei ist, dass, wenn EDD einen abgelaufenen oder deaktivierten Schlüssel mit einem Download verknüpft, Download-Links, einschließlich des get_version-Links, nicht funktionieren. Daher funktionieren Updates über die get_version-Antwort nicht mehr.

Wenn Sie Probleme haben, Lizenzschlüssel in Ihrer Implementierung von
Software Licensing zu aktivieren, finden Sie hier einige Tipps zur Behebung häufiger Probleme.

Anfragen blockiert durch ein Sicherheit-Plugin

Sicherheit-Plugins für WordPress haben oft Funktionen, die mit den Lizenzschlüssel-API-Anfragen interferieren. Diese Funktionen neigen dazu, die Aktivierung (und andere API-Anfragen) eine unerwartete Antwort zurückgeben zu lassen, was dazu führt, dass die Aktivierungsroutine fehlschlägt.

Zum Beispiel könnten Sie eine Antwort wie diese vom Server erhalten, wenn Sie ein Sicherheit-Plugin haben, das stört:

[response] => Array
	(
		[code] => 403
		[message] => Forbidden
)

Das iThemes Security-Plugin hat bekanntermaßen eine Einstellung, die dieses Problem verursachen kann. Die Einstellung heißt
Filter Suspicious Query Strings in the URL

Um das Problem zu lösen, deaktivieren Sie einfach die Einstellung
Filter Suspicious Query Strings in the URL. Wenn Sie iThemes Security nicht verwenden, wird sie anders, aber ähnlich benannt sein.

Anfragen blockiert durch spezielle .htaccess-Regeln

Einige Websites fügen spezielle Regeln zur .htaccess-Datei hinzu, um bestimmte IP-Adressen zu blockieren oder zusätzliche Schutzmaßnahmen für die Website zu implementieren.

Wenn Sie spezielle .htaccess-Regeln haben und Lizenzschlüssel nicht aktiviert werden, versuchen Sie, die Regeln zu entfernen und dann die Lizenzschlüssel zu aktivieren. Wenn die Lizenzschlüssel jetzt ordnungsgemäß aktiviert werden, müssen Sie die Regeln anpassen, damit die Lizenz-API-Routinen funktionieren.

Anfragen blockiert durch ein "Coming Soon" oder Wartungs-Plugin

Wenn Sie ein „Coming Soon“- oder Wartungsmodus-Plugin verwenden, können Lizenzschlüssel wahrscheinlich nicht aktiviert werden, da das „Coming Soon“- / Wartungsmodus-Plugin die Anfragen blockiert. Um das Problem zu lösen, deaktivieren Sie einfach den Wartungsmodus oder das „Coming Soon“-Plugin. Wenn Sie es aktiv lassen müssen, deaktivieren Sie es vorübergehend, um den Aktivierungsprozess des Lizenzschlüssels zu testen, und aktivieren Sie das Plugin dann wieder.

Was this article helpful?

Verkaufen Sie noch heute!

Schließen Sie sich über 50.000 klugen Shop-Besitzern an und nutzen Sie die einfachste Methode, um digitale Produkte mit WordPress zu verkaufen.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]