Pending que aguarda o fornecimento do valor da chave, em vez de o Dodo Payments gerar uma chave no momento do pagamento. A chave pode vir do seu próprio sistema, de um fornecedor terceirizado ou de um conjunto finito de códigos.
Ao concluir este guia, você terá:
- Um produto com uma autorização de Chave de Licença definida para cumprimento
manual. - Um ouvinte de webhook que detecta quando um cliente está aguardando uma chave.
- Uma chamada de cumprimento que entrega a chave e notifica o cliente automaticamente.
License Keys Overview
O ciclo de vida completo da chave de licença e a configuração
fulfillment_mode.Fulfill License Key Grant API
Referência da API para o endpoint chamado para entregar uma chave.
Como Funciona
A sequência abaixo mostra uma compra, do checkout à entrega da chave: O preenchimento manual altera apenas a etapa de emissão. Depois de entregue, a chave se comporta como uma chave gerada automaticamente para ativação, validação, desativação, expiração e revogação. Uma compra de várias unidades cria um grantPending por unidade, e cada grant precisa da própria chave.
Pré-requisitos
Para seguir este guia, você precisa de:- Uma conta de comerciante do Dodo Payments.
- Uma API key, criada em Developer → API Keys e armazenada em
DODO_PAYMENTS_API_KEY, além do segredo de assinatura do webhook, obtido em Developer → Webhooks e armazenado emDODO_PAYMENTS_WEBHOOK_KEY. Consulte o guia de geração de API key. - Um endpoint de backend que possa receber webhooks.
Use
https://test.dodopayments.com e credenciais do modo de teste enquanto desenvolve. Ao entrar em produção, altere para https://live.dodopayments.com e use as chaves do modo live.Etapa 1 — Criar um entitlement de License Key no modo manual
Um entitlement é uma definição reutilizável do que você entrega. Crie um entitlement de License Key e definafulfillment_mode como manual.
- Dashboard
- API
1
Open Entitlements
Acesse Entitlements no dashboard e clique em + para criar um entitlement.
2
Choose License Key
Selecione License Keys e informe um Name. O formulário tem estes campos:
- Fulfillment Mode: Automatic por padrão. Essa é a configuração que habilita o preenchimento manual, e você a altera na próxima etapa.
- License Length: por quanto tempo cada chave emitida permanece válida, ou No expiration.
- Activations Limit: o número máximo de ativações por chave, ou Unlimited.
- Activation Message: uma mensagem opcional voltada ao cliente, exibida quando o cliente ativa a chave e incluída no e-mail da chave de licença.

3
Set Fulfillment Mode to Manual
Abra o menu suspenso Fulfillment Mode e altere de Automatic para Manual. O restante deste guia depende dessa configuração: sem ela, o Dodo Payments gera e envia as chaves automaticamente por e-mail e não cria nenhum grant pendente. Com Manual selecionado, cada compra cria um grant
Pending para você preencher. Clique em Create Entitlement para salvar.fulfillment_mode assume auto. Se você omiti-lo ou deixar um entitlement existente inalterado, o entitlement mantém o preenchimento automático. Somente entitlements definidos explicitamente como manual criam grants pendentes.Etapa 2 — Associar o entitlement a um produto
Abra o produto que deseja vender, acesse a seção Entitlements e selecione o License Key entitlement definido como Manual na Etapa 1. Um produto pode entregar essa chave de licença junto com outros entitlements na mesma compra. Se você ainda não tiver um produto, crie primeiro um produto avulso ou de assinatura. Para vendê-lo por meio do checkout, consulte o Integration Guide.
Selecting the License Key entitlement in the product entitlements panel.
O modo de preenchimento é uma propriedade do entitlement, não do produto. Como você o definiu como Manual na Etapa 1, todo produto associado a esse entitlement cria grants de chave de licença
Pending no momento da compra. Você não precisa configurar mais nada no produto.Etapa 3 — Detectar grants pendentes
Quando um cliente compra o produto, o Dodo Payments cria um grant com statusPending, sem nenhuma chave associada, e envia um webhook entitlement_grant.created. Esse evento indica que um cliente está aguardando uma chave.
Aguardar o webhook
Adicione um endpoint de webhook em Developer → Webhooks no dashboard e, em seguida, processe os grants de chave de licença pendentes. Os webhooks seguem a especificação Standard Webhooks, portanto você pode verificá-los com a bibliotecastandardwebhooks:
integration_type: "license_key", permitindo identificar um grant de chave de licença sem uma consulta adicional. As entregas de webhook podem se repetir; portanto, ignore os eventos cujo header webhook-id você já tenha processado. Consulte a referência do webhook Entitlement Grant para ver o payload completo.
Ou consultar a API List Grants
Se preferir não depender de webhooks, liste os grants do seu entitlement de License Key e filtre porstatus. Todo grant de um entitlement de License Key é um grant de chave de licença, portanto você não precisa de um filtro integration_type:
Etapa 4 — Entregar a chave
Obtenha o valor da chave no seu próprio sistema e envie-o ao endpoint Fulfill License Key Grant. A chamada exige sua secret API key com permissão de Editor. Ela não é um dos endpoints públicos de licença. Os SDKs também a disponibilizam, por exemplo, comoclient.entitlements.grants.fulfillLicenseKey() em TypeScript e client.entitlements.grants.fulfill_license_key() em Python.
Campos da solicitação
string
obrigatório
A string da chave de licença a ser entregue ao cliente, com até 255 caracteres. Os espaços em branco ao redor são removidos, e um valor vazio ou composto apenas por espaços em branco é rejeitado.
integer
Limite de ativações por chave, de no mínimo 1. Quando omitido, aplica-se o Activations Limit do entitlement.
string
Expiração por chave (ISO 8601). Quando omitida, a chave de um grant avulso expira de acordo com o License Length do entitlement, enquanto a chave de um grant de assinatura não tem expiração, seguindo a validade da assinatura.
Delivered, o Dodo Payments envia a chave por e-mail ao cliente (o mesmo e-mail recebido no preenchimento automático) e os eventos de webhook license_key.created e entitlement_grant.delivered são disparados.
O e-mail contém a chave de licença, o produto, o limite de ativações, a expiração e suas instruções de ativação:

The license key email the customer receives once you fulfill the grant.
Você não precisa enviar a chave por e-mail. A entrega ocorre automaticamente quando o grant é preenchido.
Etapa 5 — Lidar com erros e novas tentativas
O endpoint valida o grant antes de entregar qualquer coisa. Trate estas respostas:Verificar o fluxo
Para testar o fluxo de ponta a ponta:- Compre o produto no modo de teste. Consulte os guias de checkout.
- Confirme que seu webhook recebeu
entitlement_grant.createdcomstatus: "Pending"eintegration_type: "license_key", ou que o grant aparece na resposta de List Grants filtrada porstatus=Pending. - Chame o endpoint de preenchimento com uma chave de teste.
- Confirme que a resposta mostra
status: "Delivered"com umlicense_keypreenchido, que o cliente recebe o e-mail com a chave e queentitlement_grant.deliveredé disparado.
Depois que a chave for entregue, o cliente poderá ativá-la e validá-la nos endpoints públicos de licença, assim como faria com uma chave gerada automaticamente.
Referência relacionada da API
Create Entitlement
Crie o entitlement de License Key com
fulfillment_mode: manual.List Grants
Filtre por
status e customer_id para encontrar grants pendentes.Fulfill License Key Grant
Entregue o valor da chave e mova o grant para
Delivered.Entitlement Grant Webhooks
Os eventos
entitlement_grant.* que sinalizam grants pendentes e entregues.