Iniciar sesión
Empezar

Documentación de Easy Digital Downloads

Documentación, Materiales de Referencia y Tutoriales para Easy Digital Downloads 

API de licencias de software

La API incluida con la extensión Software Licensing te permite activar claves de licencia de forma remota, comprobar si las claves son válidas (y no han caducado), y también recuperar información sobre las últimas versiones del software. Esta API se puede implementar con la mayoría del software, no solo con Plugins y Temas de WordPress.

En este artículo

Solicitudes y parámetros de API disponibles
Integración de Plugins y Temas de WordPress
Activar una clave de licencia
Comprobar si una licencia es válida / activa
Obtener información de versiones
Recuperar versiones de múltiples productos a la vez
Ejemplos de API en otros idiomas
Preguntas frecuentes / Solución de problemas


Hay cuatro tipos de solicitudes de API disponibles:

  • activate_license – Se utiliza para activar de forma remota una clave de licencia
  • deactivate_license – Se utiliza para desactivar de forma remota una clave de licencia
  • check_license – Se utiliza para comprobar de forma remota si una clave de licencia está activada, es válida y no ha caducado
  • get_version – Se utiliza para recuperar de forma remota la información de la última versión de un producto

Cada uno de los métodos a continuación funciona de la misma manera. La URL del sitio web en el que tienes instalado Easy Digital Download + Software Licensing actuará como el punto final de la API. Todas las solicitudes a la API se realizan como solicitudes GET o POST y siguen esta forma:

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

La solicitud requiere tres parámetros y tiene un parámetro opcional:

  • edd_action – Este es el tipo de solicitud (ver abajo)
  • item_id – Usa el ID de descarga de tu producto de descarga. Esto es más preciso que usar item_name.
    • En lugar de item_id, también puedes usar item_name, que es el nombre de la descarga en lugar del ID. Se prefiere pasar item_id, ya que es menos probable que cambie. Si el item_name cambia, tu software necesitará actualizarse y las referencias pasadas al nombre antiguo ya no funcionarán.
  • license – Esta es la clave de licencia para la que estás realizando una acción
  • url – (opcional) Esta es la URL del sitio desde la que proviene la solicitud de la API

Consejo de URL para Software de Escritorio:
El parámetro url no se limita a las URL. Por ejemplo, el software de escritorio podría usar el parámetro url para un ID de Sistema o cualquier texto único.

Claves de licencia:

  • La API de claves de licencia solo admite los siguientes caracteres [a-z, A-Z, 0-9, -, _].
  • Las claves de licencia pueden tener una longitud máxima de 256 caracteres.

Integración de Plugins y Temas de WordPress:
Consulta los siguientes documentos sobre cómo integrar la API de Software Licensing con Plugins y Temas de WordPress:
Consulta nuestra documentación sobre cómo integrar actualizaciones automáticas para tus plugins de WordPress.
Consulta nuestra documentación sobre cómo integrar actualizaciones automáticas para tus temas de WordPress

Activar una clave de licencia

Para activar una licencia de forma remota, la URL que usarás es:

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

El parámetro item_id (item_id=8) se reemplazará con el ID real de tu producto. Puedes encontrarlo en tu panel de control junto al producto:

El parámetro license se establece en la clave de licencia que deseas activar.

La respuesta para esta solicitud será un objeto JSON. Si la licencia se ha activado correctamente, la respuesta será:

{
    "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 licencia no es válida y no se pudo activar, la respuesta será:

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

Errores posibles:

"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

Verificar si una licencia es válida / activa

Verificar si una licencia es válida y no ha expirado es muy similar a activarla. Esta solicitud generalmente se realiza si necesita confirmar que una licencia sigue siendo válida después de haber sido activada. Las licencias expiran después de un año (por defecto), por lo que esto es lo que usará para verificar si la licencia ha expirado.

Para verificar una licencia de forma remota, la URL que usará es:

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

El parámetro item_id (item_id=8) se reemplazará con el ID real de su producto. Puede encontrarlo en su panel de control junto al producto:

El parámetro license se establece en la clave de licencia que desea verificar.

La respuesta para esta solicitud será un objeto JSON. Si la licencia está activa y aún es válida, la respuesta será:

{
    "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 licencia no es válida, la respuesta será:

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

Estados posibles de la licencia:

"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

Obtener información de la versión

Recuperar la información de la versión le permite recuperar de forma remota datos sobre el número de la última versión, incluidos los registros de cambios y los enlaces de descarga de los archivos de actualización.

Para obtener información de la versión de una clave de licencia:

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

El parámetro item_id (item_id=8) se reemplazará con el ID real de su producto. Puede encontrarlo en su panel de control junto al producto:

Notas sobre la solicitud:

  • Si usa item_name en lugar de item_id, ingrese el título del producto en Easy Digital Downloads exactamente. Usar item_id es más preciso.
  • Los parámetros license y url son opcionales. Si se omiten, se recuperará la información de la última versión, pero no se incluirá ningún enlace de descarga.
  • A partir de Software Licensing 3.8, puede incluir versiones de plataforma en la solicitud. Si la versión de la plataforma no cumple con los requisitos mínimos establecidos para el producto en Easy Digital Downloads, la new_version en la respuesta será false en lugar del número de la nueva versión. php_version y wp_version son compatibles de forma predeterminada.

La respuesta será un objeto JSON que se verá algo así:

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

Notas sobre la respuesta:

  • Si no se proporciona ninguna clave de licencia en la solicitud get_version, la información de la versión aún se devuelve; sin embargo, los valores de package y download estarán vacíos. Por el contrario, si se proporciona una clave de licencia pero no pertenece al item_id o item_name en la solicitud, se devolverá una respuesta de error con una razón como valor de msg.
  • Se incluirá un download_link si existe un archivo, independientemente del estado de la licencia. Sin embargo, la descarga no funcionará a menos que la licencia esté activa. Esto permite que los sitios que tienen una licencia caducada la renueven, pero no tengan que esperar a que se borre la caché de actualización antes de obtener la actualización.
  • La propiedad sections es un array serializado que incluye la descripción completa del producto y el registro de cambios. Si usa análisis de ReadMe.txt para plugins de WordPress, también incluirá información adicional proporcionada a través del archivo readme.

Si desea recuperar información sobre una versión beta, agregue &beta=1 a la URL de su solicitud de API, de la siguiente manera:

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

Recuperar versiones de múltiples productos a la vez

Recupere versiones de múltiples productos en una sola solicitud, usando el argumento products. Este argumento acepta una matriz de elementos. Cada elemento debe contener los mismos argumentos que se envían en una sola solicitud.

Aquí hay un ejemplo usando 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

Y aquí hay un ejemplo usando la función de 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 respuesta será un objeto JSON que contendrá los resultados de cada uno de los productos proporcionados. Las claves de producto que proporcionó en la solicitud se conservarán en la respuesta. Aquí hay un ejemplo:

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

Acceder a la API en otros idiomas

Debido a que la API utiliza solicitudes HTTP POST simples, se puede acceder a ella en casi cualquier idioma. Aquí hay algunos ejemplos.

Preguntas frecuentes / Solución de problemas

¿Puedo crear claves con formato personalizado?

El formato predeterminado de la clave es una suma md5 simple.
Puede cambiar ese formato a casi cualquier cosa que desee.

¿Cómo evito el acceso a mi software, plugin o tema si la licencia está caducada o deshabilitada?

El estado de esta licencia no afecta al software, simplemente indica el estado de la clave. Depende del desarrollador leer ese estado para hacer algo. Por ejemplo, si una clave está caducada, el software podría optar por dejar de funcionar o podría optar por mostrar una advertencia.

Una excepción a esto es que cuando EDD ve una clave caducada o deshabilitada adjunta a una descarga, los enlaces de descarga, incluido el enlace get_version, no funcionarán. Por lo tanto, las actualizaciones ya no funcionarán a través de la respuesta get_version.

Si tiene problemas para que las claves de licencia se activen en su implementación de
Software Licensing, aquí tiene algunos consejos para resolver problemas comunes.

Solicitudes bloqueadas por un plugin de seguridad

Los plugins de seguridad para WordPress a menudo tienen características que interfieren con las solicitudes de la API de claves de licencia. Estas características tienden a hacer que la activación (y otras solicitudes de API) devuelvan una respuesta inesperada, lo que provoca que la rutina de activación falle.

Por ejemplo, podría obtener una respuesta como esta del servidor si tiene un plugin de seguridad que está interfiriendo:

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

Se sabe que el plugin iThemes Security tiene una configuración que puede causar este problema. La configuración se llama
Filtrar cadenas de consulta sospechosas en la URL

Para resolver el problema, simplemente desactive la configuración
Filtrar cadenas de consulta sospechosas en la URL. Si no está usando iThemes Security, se llamará de manera diferente, aunque similar.

Solicitudes bloqueadas por reglas especiales de .htaccess

Algunos sitios agregarán reglas especiales al archivo .htaccess para bloquear ciertas direcciones IP o agregar protección adicional al sitio.

Si tienes reglas especiales de .htaccess y las claves de licencia no están activadas, intenta eliminar las reglas y luego activar las claves de licencia. Si las claves de licencia se activan correctamente ahora, deberás ajustar las reglas para permitir que las rutinas de la API de licencias funcionen.

Solicitudes bloqueadas por un plugin de "próximamente" o de mantenimiento

Si estás usando un plugin de modo "próximamente" o de mantenimiento, es probable que las claves de licencia no puedan activarse, ya que el plugin de modo "próximamente" / mantenimiento bloqueará las solicitudes. Para resolver el problema, simplemente desactiva el modo de mantenimiento o el plugin "próximamente". Si necesitas dejarlo activo, desactívalo temporalmente para probar el proceso de activación de la clave de licencia y luego reactiva el plugin.

¿Fue útil este artículo?

¡Empieza a vender hoy mismo!

Únete a más de 50.000 dueños de tiendas inteligentes y empieza a usar la forma más fácil de vender productos digitales con WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]