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,
]);
?>