Digital Translate WP Pro

Guía Maestra: Sistema de Licencias y Actualizaciones Automáticas

Digital Innovation Global LLC
Servidor: licencias.digitalinnovationglobal.com
Fecha: Septiembre 2026 • Versión: 2.5.0 Pro
🎯 Propósito de este documento: Explicar con precisión técnica y operativa cómo interactúan el plugin Digital Translate WP Pro y el servidor central licencias.digitalinnovationglobal.com, detallando los endpoints de la API, las protecciones de descarga, el ciclo de vida en WordPress y la guía paso a paso para publicar actualizaciones sin intervención manual en los sitios de los clientes.

1. Visión General de la Arquitectura

El sistema se compone de dos capas desacopladas diseñadas para ofrecer 0% de sobrecarga y máxima protección criptográfica:

  1. Capa Servidor (Licensing & Updates Hub): Alojada en https://licencias.digitalinnovationglobal.com/api/v1/, gestiona claves de venta directa, licencias corporativas multi-sitio, códigos de compra de Envato/CodeCanyon y la entrega de binarios protegidos.
  2. Capa Cliente (Plugin en WordPress): Implementada en las clases License_Manager.php y Updater.php. Se integra de forma nativa en el gestor de plugins de WordPress para consultar versiones, mostrar notas de la versión (changelog) e instalar actualizaciones seguras en 1 solo clic.

2. Endpoints de la API Central (api/v1/)

La carpeta D:\kimi\licencias\api\v1\ (y su espejo sincronizado D:\google\licencias\api\v1\) expone los siguientes endpoints REST:

Endpoint Método Propósito y Comportamiento
/api/v1/activate POST Activa una clave de licencia en un dominio. Verifica número de sitios permitidos (sites_allowed) y registra la fecha y dominio en la base de datos.
/api/v1/envato-activate POST Valida un Purchase Code de Envato/CodeCanyon contra la API de Envato, genera una licencia única en el servidor y la vincula al dominio.
/api/v1/deactivate POST Libera la vinculación del dominio en la tabla license_activations, permitiendo al cliente reutilizar su clave en otro sitio web.
/api/v1/check POST Comprobador de estado y versiones: Valida el estado de la licencia y entrega los metadatos de actualización (new_version, download_url, changelog, requisitos de PHP/WP).
/api/v1/download.php GET Entrega segura del ZIP Pro: Requiere key, site y un token SHA-256 temporal diario. Solo si el sitio y la licencia son válidos, entrega el archivo releases/digital-translate-wp-pro.zip.
/api/v1/validate POST Endpoint multi-producto para validaciones externas (como SEPE Connect / Moodle), retornando el plan y features activas.

3. Mecanismo de Seguridad en la Descarga (download.php)

A diferencia de sistemas vulnerables donde los enlaces de descarga son públicos, download.php implementa una validación estricta de 4 capas antes de transferir un solo byte:

4. Integración en WordPress (Updater.php y License_Manager.php)

En el plugin de WordPress, el flujo está completamente automatizado:

A. Comprobación y Aviso de Nueva Versión (Hook pre_set_site_transient_update_plugins)

WordPress comprueba de manera natural si hay actualizaciones de temas y plugins. El plugin intercepta este evento:

  1. Verifica si la licencia local está activa con $license_manager->is_valid(). Si no hay licencia activa, no se ofrece la versión Pro para evitar descargas no autorizadas.
  2. Realiza una petición POST a https://licencias.digitalinnovationglobal.com/api/v1/check enviando la versión actual (ej: 2.5.0).
  3. Si el servidor responde con new_version = '2.5.1' y es superior a la instalada, se inyecta en el transient de WordPress el objeto oficial de actualización.
  4. El resultado se almacena en el transient dtwp_remote_update_info con una duración de 6 horas para no saturar tu servidor de peticiones HTTP innecesarias.

B. Modal de Novedades y Changelog (Hook plugins_api)

Cuando el cliente pulsa en "Ver detalles de la versión" dentro de su lista de plugins, WordPress llama al hook plugins_api. Nuestro código intercepta la llamada y genera la ventana modal nativa de WordPress mostrando:

C. Protección Anti-Clonación de Bases de Datos

En License_Manager.php se registra el dominio en el momento de la activación mediante dtwp_license_bound_domain. Si un usuario copia la base de datos de producción a un entorno local o de staging (o un tercero clona el sitio), el plugin detecta que el host actual no coincide con el dominio vinculado y bloquea las funciones Pro instantáneamente.

5. Procedimiento Paso a Paso para Publicar una Nueva Versión

Cuando prepares una nueva versión (por ejemplo, la 2.5.1), sigue estos sencillos pasos:

1
Subir la versión en el código fuente del plugin:

En D:\google\digital-translate-wp\digital-translate-wp.php, actualiza la cabecera del plugin y la constante:
Version: 2.5.1 y define('DTWP_VERSION', '2.5.1');
En D:\google\digital-translate-wp\includes\Core\Updater.php, actualiza la propiedad:
protected $current_version = '2.5.1';

2
Compilar los paquetes de lanzamiento:

Ejecuta en PowerShell el compilador universal del plugin:
powershell -ExecutionPolicy Bypass -File "D:\google\digital-translate-wp\scripts\build-all-releases.ps1"
El script automáticamente:

3
Actualizar la versión en el servidor de licencias:

Abre el archivo api/v1/check.php en tu servidor de licencias (líneas 89 y 105) y actualiza el número de versión y las notas de la versión:

// Versión más reciente disponible en el servidor
$latestVersion = '2.5.1';

// Changelog para el modal de WordPress
'changelog' => '<h4>Versión 2.5.1</h4><ul><li>Mejoras en el personalizador visual.</li><li>Correcciones de compatibilidad con temas.</li></ul>',
4
¡Listo! Notificación instantánea para todos los clientes:

A partir de ese instante, cualquier web de cliente con licencia activa que entre a Plugins o pulse en "Comprobar actualizaciones ahora" verá el aviso oficial de WordPress y podrá actualizar su plugin con 1 solo clic.

6. Sincronización y Paridad Multi-Proyecto

Tu servidor de licencias gestiona ahora dos productos principales de la compañía:

✅ Estado de Sincronización: Los directorios D:\kimi\licencias y D:\google\licencias han sido sincronizados al 100% (49 archivos idénticos en ambos). Además, el script build-all-releases.ps1 actualiza automáticamente las carpetas releases/ de ambas ubicaciones cada vez que compilas una release.