API de Licencias
Endpoint que el CMS consume para validar licencias en tiempo real.
POST /api/verify
Descripción
Verifica si una licencia es válida para un dominio específico.
Headers
Content-Type: application/json Body
{
"license_key": "ASTRO-DEMO-2026",
"domain": "midominio.com"
} Response — Éxito
{
"valid": true,
"expires_at": "2027-12-31"
} Response — Error
{
"valid": false,
"message": "Licencia no encontrada, inactiva o expirada."
} Código de Ejemplo (PHP)
Ejemplo de implementación del endpoint en PHP para cPanel:
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['valid' => false, 'message' => 'Method not allowed']);
exit;
}
$input = json_decode(file_get_contents('php://input'), true);
$key = $input['license_key'] ?? '';
$domain = $input['domain'] ?? '';
if (!$key || !$domain) {
echo json_encode(['valid' => false, 'message' => 'Faltan parámetros']);
exit;
}
$db = new mysqli('DB_HOST', 'DB_USER', 'DB_PASS', 'DB_NAME');
$stmt = $db->prepare("SELECT * FROM licenses WHERE license_key = ? AND status = 'active' AND expires_at >= CURDATE() LIMIT 1");
$stmt->bind_param('s', $key);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if (!$row) {
echo json_encode(['valid' => false, 'message' => 'Licencia no encontrada, inactiva o expirada.']);
exit;
}
$allowedDomains = explode(',', $row['domain']);
$domainOk = false;
foreach ($allowedDomains as $d) {
if (trim($d) === '*' || trim($d) === $domain) {
$domainOk = true;
break;
}
}
if (!$domainOk) {
echo json_encode(['valid' => false, 'message' => 'Dominio no autorizado.']);
exit;
}
echo json_encode([
'valid' => true,
'expires_at' => $row['expires_at'],
'domain' => $domain,
]);
?>