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 grantPending 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 inDODO_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 impostafulfillment_mode su manual.
- Dashboard
- API
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.

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.
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 statoPending, 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 libreriastandardwebhooks:
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 perstatus. 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 comeclient.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.
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:

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:Verifica il flusso
Per testare il flusso end-to-end:- Acquista il prodotto in modalità di test. Consulta le guide al checkout.
- Verifica che il webhook abbia ricevuto
entitlement_grant.createdconstatus: "Pending"eintegration_type: "license_key", oppure che il grant compaia nella risposta List Grants filtrata perstatus=Pending. - Chiama l’endpoint fulfill con una chiave di test.
- Verifica che la risposta mostri
status: "Delivered"conlicense_keyvalorizzato, che il cliente riceva l’email con la chiave e cheentitlement_grant.deliveredvenga 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.