Activar una licencia en tu app

Actualizada el 2 min de lectura

Documentación preliminar: describe el producto previsto y cambiará antes de la beta.

Cuando tu cliente escribe su email y su clave, tu app llama a tu Worker, recibe un token firmado y lo guarda. A partir de ahí, lo comprueba sin conexión en cada arranque y lo renueva en segundo plano.

Los ejemplos usan https://licenses.example.com como dirección de tu Worker y myapp como identificador de tu app.

1. Pide el email y la clave

La activación exige el email de la compra y la clave. Si no cuadran, el Worker responde invalid_key sin decir cuál de los dos falla, a propósito.

Antes de conectarte, normaliza la clave (mayúsculas, sin espacios) y, si lleva el prefijo de tu app y la longitud correcta, comprueba su carácter de control en local: así una errata sale como «Hay una errata en la clave» sin llamar a la red.

Nota: el servidor compara el email quitando espacios y en minúsculas, así que no hace falta que lo normalices tú.

2. Llama a activar

Manda un POST con JSON a /v1/activate:

curl -sS https://licenses.example.com/v1/activate \
  -H 'content-type: application/json' \
  -d '{
    "app": "myapp",
    "email": "ana@example.com",
    "key": "MYAPP-7Q2KD-H9XNM-4TRVA-C8PWZ-K",
    "dev": "9f2c4e6a8b0d1f3e5a7c9e1b3d5f7a9c2e4b6d8f0a1c3e5b7d9f1a3c5e7b9d0f",
    "appVersion": "2.4.0",
    "os": "Windows 11 24H2"
  }'

dev es el SHA-256, en hexadecimal en minúsculas, de "myapp:" + identificador del equipo. Una respuesta correcta es así:

{ "token": "eyJ2IjoxLCJhcHAiOiJteWFwcCIs….3vQ2JmXo8w…", "status": "active" }

status vale active, o past_due si un pago falló pero la gracia no ha terminado: enseña un aviso sin bloquear nada.

3. Guarda el token y compruébalo sin conexión

Guarda el token en el almacén seguro del sistema (por ejemplo, DPAPI en Windows o el Llavero en Mac). En cada arranque:

  1. Separa el token por el punto y comprueba la firma Ed25519 con la clave pública que lleva tu app.
  2. Comprueba que app es tu app y dev es este equipo.
  3. Comprueba que la licencia no está en la lista de anuladas que descargaste.
  4. Si exp no es null y ya ha pasado, prueba POST /v1/refresh; si no puedes, pasa a modo gratuito.

La app nunca espera a la red para arrancar: la renovación va en segundo plano.

Importante: nunca metas la clave privada de firma en la app. Vive solo en tu Worker; la app solo necesita la pública.

Errores posibles

error Qué le dices al usuario
invalid_key «Email o clave incorrectos»; recuérdale que es el email de la compra
wrong_app «Esta clave es de otra aplicación»
seats_exhausted Explica cómo liberar un equipo (tu app o el portal del cliente)
expired, past_due Enlace para renovar o actualizar la tarjeta
revoked «Esta licencia está anulada»
rate_limited «Inténtalo dentro de un momento»; respeta Retry-After

La lista completa está en la referencia de POST /v1/activate.

Siguientes pasos

  • Renueva en segundo plano con POST /v1/refresh y libera el equipo con POST /v1/deactivate.
  • Mira SDKs y API para ver ejemplos de comprobación del token en varios lenguajes.