Vai al contenuto

API per licenze personalizzate

Launch supporta Licentivo e servizi di licenza personalizzati. Seleziona un unico fornitore per l'intero negozio in Impostazioni di sistema → Sistema di licenze.

I prodotti con licenze personalizzate usano il servizio di licenza e l'SDK del commerciante. Launch gestisce vendite, conferma dei pagamenti, sincronizzazione degli acquisti e richieste di consegna.

  1. Configura separatamente connessioni, chiavi di firma e associazioni di prodotti e piani per sandbox e live. Verifica la connessione prima di pubblicare i piani.
  2. Le connessioni con ordini esistenti non possono essere sostituite direttamente. Migra gli ordini prima di cambiare fornitore, quindi ripubblica i piani.
  3. Verifica acquisti, rinnovi, upgrade, rimborsi e recupero dagli errori nell'ambiente di prova prima di pubblicare le impostazioni di produzione.

Interfacce del servizio di licenza del commerciante

Queste quattro interfacce sono implementate dal servizio di licenza del commerciante e chiamate dal server Launch. Non inviare queste richieste a www.licentivo.com.

APIScopo
GET /launch/v1/capabilitiesDichiarare protocollo, connessione, ambiente e tipi di acquisto e consegna supportati.
POST /launch/v1/eventsRicevere lo snapshot completo dell'acquisto e restituire una ricevuta dopo aver salvato l'evento in modo duraturo.
GET /launch/v1/events/{event_id}Consultare la ricevuta dell'evento originale. Solo applied conferma il completamento della modifica alla licenza.
GET /launch/v1/entitlements/{entitlement_ref}/deliveryLeggere la consegna esistente per la versione attuale dell'acquisto senza emettere un'altra licenza.

Gli snapshot contengono versione dell'acquisto, stato attuale e date di validità assolute; valid_until=null indica un acquisto perpetuo. Dopo un rimborso può restare un acquisto di base: il destinatario deve ricalcolare i diritti dallo snapshot completo.

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"
}

Firme e nuovi tentativi

Usa una chiave HMAC-SHA256 distinta di almeno 32 byte casuali per ogni connessione. Le richieste includono ID della chiave, timestamp Unix in secondi, nonce casuale e firma. Verifica la firma, una finestra di 300 secondi e la protezione dal riuso 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>

Non aggiungere una nuova riga alla fine dei dati da firmare. X-Launch-Signature contiene v1= seguito dalla firma base64url senza padding. Il corpo GET è vuoto.

I nuovi tentativi mantengono ID evento e corpo originale, usando un nonce nuovo. Dopo un timeout, consulta l'evento originale. Le versioni precedenti non devono sovrascrivere le successive; 202 non conferma il completamento della licenza.

Interfacce amministrative e cliente di Launch

Queste interfacce appartengono al sito Launch del commerciante. Gli amministratori usano una sessione web e X-CSRF-Token. I clienti possono leggere solo i propri acquisti attualmente validi.

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 consegna può contenere una chiave di licenza, un collegamento di attivazione HTTPS o istruzioni testuali. La sincronizzazione riuscita non sostituisce i controlli di autorizzazione durante l'esecuzione del client.

Protocollo completo ed esempi · Scarica OpenAPI · Esempio di ricevitore Python

OpenAPI amministrativa e cliente di Launch