Skip to main content
Con il fulfillment manuale delle license key, ogni acquisto crea un grant Pending che attende che tu fornisca il valore della chiave, invece di far generare a Dodo Payments una chiave al momento del pagamento. La chiave può provenire dal tuo sistema, da un vendor di terze parti o da un pool limitato di codici. Al termine di questa guida avrai:
  • Un prodotto con un diritto alla chiave di licenza impostato per manual.
  • Un listener webhook che rileva quando un cliente sta aspettando una chiave.
  • Una chiamata di esecuzione che consegna la chiave e notifica automaticamente il cliente.

License Keys Overview

Il ciclo di vita completo della license key e l’impostazione fulfillment_mode.

Fulfill License Key Grant API

Il riferimento API per l’endpoint che utilizzi per consegnare una chiave.

Come funziona

La sequenza seguente mostra un acquisto, dal checkout alla consegna della chiave: Il fulfillment manuale modifica solo il passaggio di emissione. Dopo la consegna, la chiave si comporta come una chiave generata automaticamente per attivazione, convalida, disattivazione, scadenza e revoca. Un acquisto di più unità crea un grant Pending per ogni unità e ogni grant richiede la propria chiave.

Prerequisiti

Per seguire questa guida ti servono:
  • Un account merchant Dodo Payments.
  • Una API key, creata in Developer → API Keys e memorizzata in DODO_PAYMENTS_API_KEY, e il webhook signing secret da Developer → Webhooks, memorizzato in DODO_PAYMENTS_WEBHOOK_KEY. Consulta la guida alla generazione delle API key.
  • Un endpoint backend in grado di ricevere webhook.
Usa https://test.dodopayments.com e le credenziali della modalità di test durante lo sviluppo. Quando passi in produzione, usa https://live.dodopayments.com e le chiavi della modalità live.

Passaggio 1 — Crea un’entitlement License Key in modalità manuale

Un’entitlement è una definizione riutilizzabile di ciò che consegni. Crea un’entitlement License Key e imposta fulfillment_mode su manual.
1

Open Entitlements

Vai su Entitlements nella dashboard e fai clic su + per creare un’entitlement.
2

Choose License Key

Seleziona License Keys e inserisci un Name. Il modulo contiene questi campi:
  • Fulfillment Mode: Automatic per impostazione predefinita. Questa è l’impostazione che abilita il fulfillment manuale; la modificherai nel passaggio successivo.
  • License Length: per quanto tempo ogni chiave emessa rimane valida, oppure No expiration.
  • Activations Limit: il numero massimo di attivazioni per chiave, oppure Unlimited.
  • Activation Message: un messaggio opzionale rivolto al cliente, mostrato quando il cliente attiva la chiave e incluso nell’email della license key.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
3

Set Fulfillment Mode to Manual

Apri il menu a discesa Fulfillment Mode e modificalo da Automatic a Manual. Il resto di questa guida dipende da questa impostazione: senza di essa, Dodo Payments genera e invia automaticamente le chiavi via email e non crea alcun grant in attesa. Con Manual selezionato, ogni acquisto crea un grant Pending da completare. Fai clic su Create Entitlement per salvare.
fulfillment_mode assume auto. Se lo ometti o lasci invariata un’entitlement esistente, l’entitlement mantiene il fulfillment automatico. Solo le entitlement impostate esplicitamente su manual creano grant in attesa.

Passaggio 2 — Associa l’entitlement a un prodotto

Apri il prodotto che vuoi vendere, vai alla sezione Entitlements e seleziona l’entitlement License Key impostata su Manual nel passaggio 1. Un prodotto può consegnare questa license key insieme ad altre entitlement nello stesso acquisto. Se non hai ancora un prodotto, crea prima un prodotto una tantum o in abbonamento. Per venderlo tramite checkout, consulta la Integration Guide.
Product entitlements panel with License Key selected

Selecting the License Key entitlement in the product entitlements panel.

La modalità di fulfillment è una proprietà dell’entitlement, non del prodotto. Poiché l’hai impostata su Manual nel passaggio 1, ogni prodotto a cui è associata questa entitlement crea grant di license key Pending al momento dell’acquisto. Non devi configurare altro sul prodotto.

Passaggio 3 — Rileva i grant in attesa

Quando un cliente acquista il prodotto, Dodo Payments crea un grant nello stato Pending, senza alcuna chiave associata, e invia un webhook entitlement_grant.created. Questo evento segnala che un cliente è in attesa di una chiave.

Ascolta il webhook

Aggiungi un endpoint webhook in Developer → Webhooks nella dashboard, quindi agisci sui grant di license key in attesa. I webhook seguono la specifica Standard Webhooks, quindi puoi verificarli con la libreria standardwebhooks:
Il payload del grant contiene integration_type: "license_key", quindi puoi riconoscere un grant di license key senza una ricerca aggiuntiva. Le consegne dei webhook possono ripetersi, quindi ignora gli eventi il cui header webhook-id hai già elaborato. Consulta il riferimento del webhook Entitlement Grant per il payload completo.

In alternativa, esegui il polling dell’API List Grants

Se preferisci non affidarti ai webhook, elenca i grant della tua entitlement License Key e filtra per status. Ogni grant di un’entitlement License Key è un grant di license key, quindi non ti serve un filtro integration_type:

Passaggio 4 — Consegna la chiave

Recupera il valore della chiave dal tuo sistema, quindi invialo all’endpoint Fulfill License Key Grant. La chiamata richiede la tua secret API key con autorizzazione Editor. Non è uno degli endpoint pubblici delle licenze. Gli SDK la espongono a loro volta, ad esempio come client.entitlements.grants.fulfillLicenseKey() in TypeScript e client.entitlements.grants.fulfill_license_key() in Python.

Campi della richiesta

string
obbligatorio
La stringa della license key da consegnare al cliente, fino a 255 caratteri. Gli spazi bianchi iniziali e finali vengono rimossi e un valore vuoto o composto solo da spazi bianchi viene rifiutato.
integer
Il limite di attivazioni per chiave, almeno 1. Se omesso, viene applicato Activations Limit dell’entitlement.
string
La scadenza per chiave (ISO 8601). Se omessa, la chiave di un grant una tantum scade in base a License Length dell’entitlement, mentre la chiave di un grant in abbonamento non ha scadenza e la sua validità segue l’abbonamento.
In caso di successo, il grant passa a Delivered, Dodo Payments invia la chiave al cliente tramite email (la stessa email ricevuta con il fulfillment automatico) e vengono attivati gli eventi webhook license_key.created e entitlement_grant.delivered. L’email contiene la license key, il prodotto, il limite di attivazioni, la scadenza e le istruzioni per l’attivazione:
Customer license key email showing the key, product, activation limit, expiry, and activation instructions

The license key email the customer receives once you fulfill the grant.

Non devi inviare tu la chiave tramite email. La consegna avviene automaticamente quando il grant viene completato.

Passaggio 5 — Gestisci errori e retry

L’endpoint convalida il grant prima di consegnare qualsiasi elemento. Gestisci queste risposte:
Il fulfillment può essere ripetuto in sicurezza in caso di errori temporanei, come timeout e risposte 5xx. Ogni grant può essere completato una sola volta, quindi un retry dopo una chiamata riuscita ma senza conferma restituisce 409 invece di emettere una seconda chiave o inviare un’email duplicata. Usa id del grant come chiave di idempotenza.

Verifica il flusso

Per testare il flusso end-to-end:
  1. Acquista il prodotto in modalità di test. Consulta le guide al checkout.
  2. Verifica che il webhook abbia ricevuto entitlement_grant.created con status: "Pending" e integration_type: "license_key", oppure che il grant compaia nella risposta List Grants filtrata per status=Pending.
  3. Chiama l’endpoint fulfill con una chiave di test.
  4. Verifica che la risposta mostri status: "Delivered" con license_key valorizzato, che il cliente riceva l’email con la chiave e che entitlement_grant.delivered venga attivato.
Dopo la consegna della chiave, il cliente può attivarla e convalidarla tramite gli endpoint pubblici delle licenze, proprio come farebbe con una chiave generata automaticamente.

Riferimenti API correlati

Create Entitlement

Crea l’entitlement License Key con fulfillment_mode: manual.

List Grants

Filtra per status e customer_id per trovare i grant in attesa.

Fulfill License Key Grant

Consegna il valore della chiave e sposta il grant a Delivered.

Entitlement Grant Webhooks

Gli eventi entitlement_grant.* che segnalano i grant in attesa e consegnati.
Ultima modifica il 26 settembre 2026