Integra dominios en tu producto
Tres rutas en tu backend, un script en tu panel. El cobro, el registro, el DNS, el certificado y el enrutamiento los hace Dominio.
1. Copia el cliente
DominioClient.php (una clase, sin dependencias). Guarda su llave en tu almacenamiento privado.
$dominio = new DominioClient('invita', $storageDir . '/dominio', 'https://dominio-next.interfaz.digital');2. Tres rutas
// Registro sin secretos: Dominio pide tu llave aquí con un nonce que tú emitiste.
if ($path === '/dominio/authorize') $dominio->handleAuthorize();
// El widget pide un enlace de un solo uso para la persona que ya inició sesión en tu panel.
if ($path === '/dominio/session') json($dominio->handoff($me['email'], $me['name'], 'cuenta:'.$accountId, 'evento:'.$eventId, $_POST['purpose'] ?? 'buy', $slug));
// Eventos firmados: domain.active, domain.expiring, domain.expired, domain.renewed, domain.removed.
if ($path === '/dominio/webhook') { $e = $dominio->webhook(); /* guarda $e['hostname'] -> $e['resource'] */ }3. El botón
<script src="https://dominio-next.interfaz.digital/widget.js" defer></script> <button data-dominio data-session="/dominio/session" data-purpose="buy">Busca tu dominio</button> <button data-dominio data-session="/dominio/session" data-purpose="connect">Conecta el tuyo</button>
El widget abre el flujo en una ventana dentro de tu panel y emite dominio:done con {hostname, status} al terminar.
4. Servir el dominio
Los dominios de clientes llegan por el Worker del borde con X-Interfaz-Edge-Host y X-Interfaz-Edge-Key. $dominio->edgeHost() devuelve el host verificado o null.
$host = $dominio->edgeHost() ?? $_SERVER['HTTP_HOST'];
API v1
POST JSON firmado (X-Interfaz-Timestamp, X-Interfaz-Signature = HMAC-SHA256 de ts\nbody): search, handoff, links, connect, disconnect, status, edge-key.