Connexion
Commencer

Documentation Easy Digital Downloads

Documentation, matériel de référence et tutoriels pour Easy Digital Downloads 

API de licences logicielles

L'API incluse avec l'extension Software Licensing vous permet d'activer à distance les clés de licence, de vérifier si les clés sont valides (et non expirées), et également de récupérer des informations sur les dernières versions des logiciels. Cette API peut être implémentée avec la plupart des logiciels, pas seulement les plugins et thèmes WordPress.

Dans cet article

Requêtes et paramètres d'API disponibles
Intégration de plugins et thèmes WordPress
Activer une clé de licence
Vérifier si une licence est valide / active
Obtenir des informations de version
Récupérer les versions de plusieurs produits à la fois
Exemples d'API dans d'autres langues
FAQ / Dépannage


Quatre types de requêtes d'API sont disponibles :

  • activate_license – Utilisé pour activer à distance une clé de licence
  • deactivate_license – Utilisé pour désactiver à distance une clé de licence
  • check_license – Utilisé pour vérifier à distance si une clé de licence est activée, valide et non expirée
  • get_version – Utilisé pour récupérer à distance les informations de la dernière version d'un produit

Chacune des méthodes ci-dessous fonctionne de la même manière. L'URL du site Web sur lequel vous avez installé Easy Digital Download + Software Licensing agira comme point de terminaison de l'API. Toutes les requêtes à l'API sont effectuées en tant que requêtes GET ou POST et suivent ce format :

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

La requête nécessite trois paramètres et a un paramètre facultatif :

  • edd_action – Il s'agit du type de requête (voir ci-dessous)
  • item_id – Use the Download ID of your download product. This is more accurate than using item_name.
    • Au lieu de item_id, vous pouvez également utiliser item_name, qui est le nom du téléchargement au lieu de l'ID. Passer item_id est préférable, car il est moins susceptible de changer. Si le item_name change, votre logiciel devra être mis à jour et les références passées à l'ancien nom ne fonctionneront plus.
  • license – Il s'agit de la clé de licence pour laquelle vous effectuez une action
  • url – (facultatif) Il s'agit de l'URL du site d'où provient la requête d'API

Astuce d'URL pour logiciel de bureau :
Le paramètre url n'est pas limité aux URL. Par exemple, un logiciel de bureau pourrait utiliser le paramètre url pour un ID système ou tout autre texte unique.

Clés de licence :

  • L'API des clés de licence ne prend en charge que les caractères suivants [a-z, A-Z, 0-9, -, _].
  • Les clés de licence peuvent avoir une longueur maximale de 256 caractères.

Intégration de plugins et thèmes WordPress :
Reportez-vous aux documents suivants sur l'intégration de l'API de licences logicielles avec les plugins et thèmes WordPress :
Consultez notre documentation sur la façon d'intégrer les mises à jour automatiques pour vos plugins WordPress.
Consultez notre documentation sur la façon d'intégrer les mises à jour automatiques pour vos thèmes WordPress

Activer une clé de licence

Pour activer une licence à distance, l'URL que vous utiliserez est :

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

Le paramètre item_id (item_id=8) sera remplacé par l'ID réel de votre produit. Vous pouvez le trouver dans votre tableau de bord à côté du produit :

Le paramètre license est défini sur la clé de licence que vous souhaitez activer.

La réponse à cette requête sera un objet JSON. Si la licence a été activée avec succès, la réponse sera :

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

Si la licence est invalide et n'a pas pu être activée, la réponse sera :

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

Erreurs possibles :

"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

Vérifier si une licence est valide / active

Vérifier si une licence est valide et non expirée est très similaire à l'activation. Cette requête est généralement effectuée si vous avez besoin de confirmer qu'une licence est toujours valide après son activation. Les licences expirent après un an (par défaut), c'est donc ce que vous utiliserez pour vérifier si la licence a expiré.

Pour vérifier une licence à distance, l'URL que vous utiliserez est :

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

Le paramètre item_id (item_id=8) sera remplacé par l'ID réel de votre produit. Vous pouvez le trouver dans votre tableau de bord à côté du produit :

Le paramètre license est défini sur la clé de licence que vous souhaitez vérifier.

La réponse à cette requête sera un objet JSON. Si la licence est active et toujours valide, la réponse sera :

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

Si la licence est invalide, la réponse sera :

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

Statuts de licence possibles :

"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

Obtenir les informations de version

La récupération des informations de version vous permet de récupérer à distance des données sur le numéro de version le plus récent, y compris les journaux de modifications et les liens de téléchargement pour les fichiers de mise à jour.

Pour obtenir les informations de version pour une clé de licence :

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

Le paramètre item_id (item_id=8) sera remplacé par l'ID réel de votre produit. Vous pouvez le trouver dans votre tableau de bord à côté du produit :

Notes concernant la requête :

  • Si vous utilisez item_name au lieu de item_id, entrez le titre du produit dans Easy Digital Downloads exactement. L'utilisation de item_id est plus précise.
  • Les paramètres license et url sont facultatifs. S'ils sont omis, les informations de la dernière version seront récupérées, mais aucun lien de téléchargement ne sera inclus.
  • Depuis Software Licensing 3.8, vous pouvez inclure les versions de plateforme dans la requête. Si la version de la plateforme ne répond pas aux exigences minimales définies pour le produit dans Easy Digital Downloads, la valeur new_version dans la réponse sera false au lieu du nouveau numéro de version. php_version et wp_version sont pris en charge par défaut.

La réponse sera un objet JSON qui ressemblera à ceci :

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

Notes concernant la réponse :

  • Si aucune clé de licence n'est fournie dans la requête get_version, les informations de version sont toujours retournées ; cependant, les valeurs package et download seront vides. Inversement, si une clé de licence est fournie mais qu'elle n'appartient pas à l'item_id ou à l'item_name de la requête, une réponse d'erreur sera retournée avec une raison comme valeur msg.
  • Un download_link sera inclus s'il existe un fichier, quel que soit l'état de la licence. Cependant, le téléchargement ne fonctionnera pas à moins que la licence ne soit active. Cela permet aux sites ayant une licence expirée de la renouveler, mais de ne pas avoir à attendre que le cache de mise à jour se vide avant d'obtenir la mise à jour.
  • La propriété sections est un tableau sérialisé qui comprend la description complète du produit et le journal des modifications. Si vous utilisez l'analyse de ReadMe.txt pour les plugins WordPress, il inclura également des informations supplémentaires fournies via le fichier readme.

Si vous souhaitez récupérer des informations sur une version bêta, ajoutez &beta=1 à l'URL de votre requête API, comme ceci :

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

Récupérer les versions de plusieurs produits à la fois

Récupérez les versions de plusieurs produits en une seule requête, en utilisant l'argument products. Cet argument accepte un tableau d'éléments. Chaque élément doit contenir les mêmes arguments que ceux envoyés dans une requête unique.

Voici un exemple utilisant 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

Et voici un exemple utilisant la fonction WordPress
wp_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'
			)
		)
	)
) );

La réponse sera un objet JSON contenant les résultats pour chacun des produits fournis. Les clés de produit que vous avez fournies dans la requête seront conservées dans la réponse. Voici un exemple :

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

Accéder à l'API dans d'autres langues

Étant donné que l'API utilise de simples requêtes HTTP POST, elle est accessible dans pratiquement toutes les langues. Voici quelques exemples.

FAQ / Dépannage

Puis-je créer des clés au format personnalisé ?

Le format de clé par défaut est une simple somme md5.
Vous pouvez modifier ce format pour qu'il corresponde à peu près à tout ce que vous voulez.

Comment puis-je empêcher l'accès à mon logiciel, plugin ou thème si la licence est expirée ou désactivée ?

Le statut de cette licence n'affecte pas le logiciel, il indique simplement le statut de la clé. Il appartient au développeur de lire ce statut pour agir en conséquence. Par exemple, si une clé est expirée, le logiciel pourrait choisir de ne plus fonctionner ou d'afficher un avertissement.

Une exception à cela est que lorsque EDD constate une clé expirée ou désactivée associée à un téléchargement, les liens de téléchargement, y compris le lien get_version, ne fonctionneront pas. Par conséquent, les mises à jour ne fonctionneront plus via la réponse get_version.

Si vous rencontrez des difficultés pour activer les clés de licence dans votre implémentation de
Software Licensing, voici quelques conseils pour résoudre les problèmes courants.

Requêtes bloquées par un plugin de sécurité

Les plugins de sécurité pour WordPress ont souvent des fonctionnalités qui interfèrent avec les requêtes de l'API de clé de licence. Ces fonctionnalités ont tendance à faire renvoyer une réponse inattendue à l'activation (et aux autres requêtes API), ce qui entraîne l'échec de la routine d'activation.

Par exemple, vous pourriez obtenir une réponse comme celle-ci du serveur si vous avez un plugin de sécurité qui interfère :

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

Le plugin iThemes Security est connu pour avoir un paramètre qui peut causer ce problème. Le paramètre s'appelle
Filter Suspicious Query Strings in the URL

Pour résoudre le problème, désactivez simplement le paramètre
Filter Suspicious Query Strings in the URL. Si vous n'utilisez pas iThemes Security, il portera un nom différent, bien que similaire.

Requêtes bloquées par des règles spéciales .htaccess

Certains sites ajouteront des règles spéciales au fichier .htaccess afin de bloquer certaines adresses IP ou d'ajouter une protection supplémentaire au site.

Si vous avez des règles .htaccess spéciales en place et que les clés de licence ne sont pas activées, essayez de supprimer les règles, puis d'activer les clés de licence. Si les clés de licence s'activent correctement maintenant, vous devrez ajuster les règles pour permettre aux routines de l'API de licence de fonctionner.

Requêtes bloquées par un plugin "bientôt disponible" ou "maintenance"

Si vous utilisez un plugin "bientôt disponible" ou "maintenance", il est probable que les clés de licence ne pourront pas être activées, car le plugin bloquera les requêtes. Pour résoudre le problème, désactivez simplement le mode maintenance ou le plugin "bientôt disponible". Si vous devez le laisser actif, désactivez-le temporairement pour tester le processus d'activation des clés de licence, puis réactivez le plugin.

Was this article helpful?

Commencez à vendre dès aujourd'hui !

Rejoignez plus de 50 000 propriétaires de boutiques avisés et commencez à utiliser le moyen le plus simple de vendre des produits numériques avec WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]