Ir para o conteúdo

API de licenciamento personalizado

O Launch oferece suporte ao Licentivo e a serviços de licenciamento personalizados. Escolha um único provedor para toda a loja em Configurações do sistema → Sistema de licenciamento.

Produtos com licenciamento personalizado usam o serviço de licenciamento e o SDK do comerciante. O Launch gerencia vendas, confirmação de pagamentos, sincronização de compras e consultas de entrega.

  1. Configure conexões, chaves de assinatura e mapeamentos de produtos e planos separadamente para sandbox e live. Verifique a conexão antes de publicar os planos.
  2. Conexões com pedidos existentes não podem ser substituídas diretamente. Migre os pedidos antes de trocar de provedor e publique os planos novamente.
  3. Valide compras, renovações, upgrades, reembolsos e recuperação de falhas no ambiente de teste antes de publicar a configuração de produção.

Interfaces do serviço de licenciamento do comerciante

Estas quatro interfaces são implementadas pelo serviço de licenciamento do comerciante e chamadas pelo servidor Launch. Não envie essas solicitações para www.licentivo.com.

APIFinalidade
GET /launch/v1/capabilitiesDeclarar protocolo, conexão, ambiente e tipos de compra e entrega compatíveis.
POST /launch/v1/eventsReceber o snapshot completo da compra e retornar um recibo após armazenar o evento de forma durável.
GET /launch/v1/events/{event_id}Consultar o recibo do evento original. Apenas applied confirma a conclusão da alteração da licença.
GET /launch/v1/entitlements/{entitlement_ref}/deliveryLer a entrega existente da versão atual da compra sem emitir outra licença.

Os snapshots contêm a versão da compra, o estado atual e datas absolutas de validade; valid_until=null indica uma compra permanente. Uma compra base pode permanecer após um reembolso, portanto o receptor deve recalcular os direitos pelo 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"
}

Assinaturas e novas tentativas

Use uma chave HMAC-SHA256 separada com pelo menos 32 bytes aleatórios por conexão. As solicitações incluem ID da chave, timestamp Unix em segundos, nonce aleatório e assinatura. Verifique a assinatura, uma janela de 300 segundos e a proteção contra repetição do 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>

Não acrescente uma quebra de linha ao final da entrada da assinatura. X-Launch-Signature contém v1= seguido da assinatura base64url sem preenchimento. O corpo de GET é vazio.

As novas tentativas preservam o ID do evento e o corpo exato, usando um nonce novo. Após um timeout, consulte o evento original. Versões antigas não podem sobrescrever as novas; 202 não confirma a conclusão do licenciamento.

Interfaces administrativas e de clientes do Launch

Estas interfaces pertencem ao site Launch do comerciante. Administradores usam uma sessão web e X-CSRF-Token. Clientes só podem ler suas próprias compras atualmente válidas.

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

A entrega pode conter uma chave de licença, um link HTTPS de ativação ou instruções em texto simples. A sincronização bem-sucedida não substitui as verificações de autorização do cliente durante a execução.

Protocolo completo e exemplos · Baixar OpenAPI · Exemplo de receptor Python

OpenAPI administrativa e de clientes do Launch