# Integración de cuentas y compras de Licentivo

Esta guía describe el proveedor Licentivo actual. Los comerciantes con otro sistema de licencias pueden elegir el [proveedor HTTP personalizado](/es/launch-documents/external-licensing/); ese modo no llama a Licentivo ni requiere su clave API.

## Configuración administrativa

1. Cree productos y políticas en Licentivo.
2. Configure una clave administrativa de lectura/escritura en **Configuración del sistema → Licentivo** de Launch. El origen de Licentivo es fijo: `https://www.licentivo.com`.
3. Elija la política para cada versión de plan de venta de Launch. Launch lee el producto, la versión de política y los ajustes de visualización de ejecución.
4. Launch registra conexiones independientes de confianza de cuentas sandbox/live bajo su única conexión administrativa de Licentivo, incluida su clave pública de firma de identidad y el origen del comerciante.

La clave administrativa permanece cifrada en el servidor del comerciante. Los archivos de instalación del cliente solo contienen información pública de enrutamiento y claves públicas de producto fijadas.

## Secuencia de API del servidor

Todas las rutas siguientes están en Licentivo y Launch las llama con su credencial administrativa:

| Punto de conexión | Finalidad |
| --- | --- |
| `GET /api/v1/products` | Descubrimiento de productos |
| `GET /api/v1/policies`, `GET /api/v1/policies/{id}` | Descubrimiento de políticas y comprobaciones de versión |
| `GET /api/v1/launch/connections` | Buscar conexiones de confianza de origen/entorno |
| `POST /api/v1/launch/connections`, `PUT /api/v1/launch/connections/{id}` | Registrar/actualizar claves públicas de identidad y enrutamiento |
| `PUT /api/v1/launch/connections/{id}/plans/{plan}` | Registrar la versión inmutable del plan de venta y la asignación de política de Licentivo |
| `POST /api/v1/launch/connections/{id}/events` | Enviar una instantánea de compra absoluta y con versión |
| `GET /api/v1/launch/connections/{id}/events/{event}` | Recuperar/consultar el resultado original |
| `POST /api/v1/launch/connections/{id}/events/{event}/retry` | Reintentar el mismo evento tras la revisión |
| `POST /api/v1/launch/connections/{id}/session-revocations` | Notificar la revocación de cuenta/sesión |
| `GET /api/v1/launch/connections/{id}/session-revocations/{event}` | Verificar el acuse de revocación |

Launch registra los pagos verificados, la cobertura pagada inmutable y la tarea de salida en una sola transacción local. Un worker envía las fechas absolutas completas de compra y un ID de evento estable. Solo un acuse `applied` confirma la sincronización; la recepción HTTP por sí sola no lo hace.

Los reembolsos y las reversiones confirmadas eliminan la cobertura del pedido correspondiente. La siguiente instantánea completa puede conservar una compra base activa, acortar su plazo, restaurar un plan inferior o terminar toda la cobertura. Los reintentos nunca añaden otra cantidad de días. Las vinculaciones antiguas de licencias emitidas usan eventos explícitos de migración en lugar de repetir automáticamente comandos administrativos antiguos.

## Procedimiento de la aplicación del cliente

1. La aplicación inicia sesión en Launch mediante una sesión de cuenta de escritorio.
2. `POST /api/v1/software/products/{id}/identity` en Launch devuelve una afirmación de identidad de 120 segundos como máximo, vinculada a la sesión real, producto, entorno, emisor y audiencia.
3. El paquete de Launch la pasa en memoria al SDK oficial, que la intercambia con Licentivo en `POST /api/v1/launch/exchange`.
4. Licentivo emite la credencial de dispositivo y el permiso firmado. El SDK comprueba cada acción protegida, política de dispositivo, estado de ejecución y regla sin conexión.

Un inicio de sesión de Launch, un pedido pagado o una compra sincronizada no son permiso de ejecución. El endpoint antiguo `/credential` devuelve HTTP 410. La entrega del proveedor personalizado es una API independiente limitada al titular y no restaura ese endpoint.

La lista de dispositivos, las cuotas de liberación, las generaciones de vinculación y la recuperación del cierre de sesión siguen siendo responsabilidad de Licentivo. Las revocaciones de sesión/cuenta usan notificaciones persistentes con acuses por entorno; la revocación sin conexión sigue limitada por las autorizaciones SDK ya emitidas.

Consulte [Integración de aplicaciones](/es/launch-documents/software-sdk-integration/), [Límites de compra/cuenta](/es/launch-documents/account-purchase-boundary/), [Integración manual](/es/launch-documents/manual-integration/) y [Aceptación](/es/launch-documents/acceptance/). La implementación está en `internal/adapters/licentivo/launch_bridge.go`, `internal/app/launch_trust.go`, `internal/app/purchase_sync.go` y `internal/app/identity.go`.
