Ir al contenido

API de licencias personalizada

Launch admite Licentivo y servicios de licencias personalizados. Selecciona un único proveedor para toda la tienda en Ajustes del sistema → Sistema de licencias.

Los productos con licencias personalizadas usan el servicio de licencias y el SDK del comerciante. Launch gestiona ventas, confirmación de pagos, sincronización de compras y consultas de entrega.

  1. Configura conexiones, claves de firma y asignaciones de productos y planes por separado para sandbox y live. Comprueba la conexión antes de publicar los planes.
  2. Las conexiones con pedidos existentes no se pueden sustituir directamente. Migra los pedidos antes de cambiar de proveedor y vuelve a publicar los planes.
  3. Verifica compras, renovaciones, mejoras, reembolsos y recuperación de fallos en el entorno de prueba antes de publicar la configuración de producción.

Interfaces del servicio de licencias del comerciante

El servicio de licencias del comerciante implementa estas cuatro interfaces y el servidor Launch las llama. No envíes estas solicitudes a www.licentivo.com.

APIFinalidad
GET /launch/v1/capabilitiesDeclarar el protocolo, la conexión, el entorno y los tipos de compra y entrega admitidos.
POST /launch/v1/eventsRecibir la instantánea completa de la compra y devolver un recibo tras guardar el evento de forma duradera.
GET /launch/v1/events/{event_id}Consultar el recibo del evento original. Solo applied confirma que el cambio de licencia ha terminado.
GET /launch/v1/entitlements/{entitlement_ref}/deliveryLeer la entrega existente de la versión actual de la compra sin emitir otra licencia.

Las instantáneas contienen la versión de compra, el estado actual y las fechas absolutas de validez; valid_until=null indica una compra perpetua. Tras un reembolso puede quedar una compra base, por lo que el receptor debe recalcular el acceso usando la instantánea completa.

POST /launch/v1/events · JSON
{
  "schema": "launch-external-licensing-v1",
  "event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
  "connection_ref": "merchant-01-sandbox",
  "environment": "sandbox",
  "type": "entitlement.snapshot",
  "change_reason": "purchase",
  "account_ref": "customer_opaque_001",
  "entitlement_ref": "purchase_opaque_001",
  "launch_product_id": "c6dd463e-50f7-4b76-8239-0a8ec6fc304b",
  "launch_plan_version_id": "5459a073-9362-4b46-949d-9b0c5d84421a",
  "product_ref": "desktop-editor",
  "plan_ref": "professional-yearly-v1",
  "version": 1,
  "desired_state": "active",
  "valid_from": "2026-10-26T00:00:00Z",
  "valid_until": "2027-10-26T00:00:00Z"
}

Firmas y reintentos

Usa una clave HMAC-SHA256 independiente con al menos 32 bytes aleatorios por conexión. Las solicitudes incluyen ID de clave, marca de tiempo Unix en segundos, nonce aleatorio y firma. Verifica la firma, una ventana de 300 segundos y la protección contra repetición del nonce.

HMAC-SHA256 · UTF-8 canonical request
v1
<key_id>
<timestamp>
<nonce>
<UPPERCASE HTTP METHOD>
<encoded full path and raw query>
<lowercase SHA-256 of the exact request body>

No añadas un salto de línea al final de los datos firmados. X-Launch-Signature contiene v1= seguido de la firma base64url sin relleno. El cuerpo de GET está vacío.

Los reintentos conservan el ID de evento y el cuerpo exacto, usando un nonce nuevo. Tras un tiempo de espera agotado, consulta el evento original. Las versiones antiguas no deben sobrescribir las nuevas; 202 no confirma que la licencia esté aplicada.

Interfaces de administración y cliente de Launch

Estas interfaces pertenecen al sitio Launch del comerciante. Los administradores usan una sesión web y X-CSRF-Token. Los clientes solo pueden leer sus propias compras vigentes.

PUT /api/v1/admin/licensing/provider{"provider":"custom_http"}
GET/POST /api/v1/admin/licensing/connectionsGET/POST
PUT /api/v1/admin/licensing/connections/{id}POST /api/v1/admin/licensing/connections/{id}/check
PUT /api/v1/admin/products/{id}/licensingenvironment + connection_id + mappings
GET /api/v1/me/products/{id}/delivery?environment=sandboxpending / ready / unavailable

La entrega puede incluir una clave de licencia, un enlace de activación HTTPS o instrucciones de texto. Una sincronización correcta no sustituye la comprobación de autorización en ejecución del cliente.

Protocolo completo y ejemplos · Descargar OpenAPI · Ejemplo de receptor Python

OpenAPI de administración y cliente de Launch