📊 Dashboard General
Resumen del estado de licencias activas y clientes registrados
--
Licencias Totales
--
Licencias Activas
--
Clientes
--
Sistemas Registrados
🔑 Últimas Licencias Generadas
| Serial | Cliente | Sistema | Módulos | Estado |
|---|
📋 Últimas Consultas de Validación
| Fecha/Hora | Serial Consultado | Sistema | IP | Resultado |
|---|
🔑 Licencias & Seriales
Genera y administra licencias para cada cliente y sistema
| Serial | Cliente | Sistema | Módulos | Tipo | Dominio Vinculado | Estado | Acción |
|---|
👥 Clientes
Registro de empresas y personas que adquieren licencias
| Cliente | Empresa | Teléfono | Licencias | Registro |
|---|
🖥️ Sistemas de Software
Catálogo de sistemas que pueden ser licenciados (MedControl, Odoo, etc.)
🧩 Módulos por Sistema
Configura los módulos disponibles para cada sistema de software
Filtrar por Sistema
| Sistema | Clave | Nombre del Módulo | Tipo | Precio USD |
|---|
📋 Registro de Consultas de Validación
Auditoría de cada vez que una app externa consulta un serial
| Fecha/Hora | Serial | Sistema | IP Cliente | Resultado |
|---|
📘 Documentación de la API Pública
Cómo conectar cualquier sistema externo para validar seriales
POST /api/validate-serial
// Request Body (JSON):
{
"serial_code": "MEDCONTROL-2026-AB12CD",
"system_code": "MEDCONTROL" // Opcional: valida que el serial corresponda al sistema
}
// Response si el serial es VÁLIDO (200 OK):
{
"valid": true,
"serial_code": "MEDCONTROL-2026-AB12CD",
"client_name": "Clínica XYZ",
"company": "Clínica XYZ C.A.",
"system_code": "MEDCONTROL",
"system_name": "MedControl VE",
"allowed_modules": ["core", "payroll", "email"],
"expires_at": null
}
// Response si el serial NO existe o está inactivo (404):
{
"valid": false,
"error": "Serial no encontrado, inactivo o expirado"
}
🔌 Ejemplo de integración en MedControl VE (Node.js)
// En server.js de MedControl, reemplazar validación local:
const LICENSOR_URL = 'https://suscripciones.sitesoluciones.online';
app.post('/api/modules/activate-license', async (req, res) => {
const { license_key } = req.body;
const response = await fetch(`${LICENSOR_URL}/api/validate-serial`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ serial_code: license_key, system_code: 'MEDCONTROL' })
});
const data = await response.json();
if (data.valid && data.allowed_modules.includes('payroll')) {
await query(`UPDATE system_config SET value='true' WHERE key='module_payroll_active'`);
res.json({ success: true, modules: data.allowed_modules });
} else {
res.status(400).json({ error: data.error });
}
});
🟠 Ejemplo para Odoo (Python)
import requests
LICENSOR_URL = "https://suscripciones.sitesoluciones.online"
def validate_serial(serial_code, system_code="ODOO_VE"):
r = requests.post(f"{LICENSOR_URL}/api/validate-serial", json={
"serial_code": serial_code,
"system_code": system_code
})
data = r.json()
if data.get("valid") and "payroll" in data.get("allowed_modules", []):
return True # activate module
return False