Baixar MarkdownDocumento original no GitHub
Exemplo de adaptador para o sistema de licenciamento do comerciante
Este exemplo Python 3.10+ implementa a ponte HTTP externa do Launch com persistência SQLite de eventos e nonces e um worker de recuperação. Ele não gera licenças, valida funcionalidades protegidas nem substitui seu sistema de licenciamento.
Implemente um módulo Python com estes hooks:
def apply_snapshot(snapshot):
# Call your licensing system with snapshot["event_id"] as its durable
# idempotency key. Apply desired_state and the absolute purchased dates.
# Return only after confirming the original operation was applied.
# Raise ValueError for a result requiring manual review.
...
def delivery(snapshot):
# Read an existing result owned by this purchase; do not issue here.
return {"type": "instructions", "value": "Your own delivery instructions", "expires_at": None}
Substitua ... pela integração real antes de configurar o backend. Sem módulo configurado, os hooks incluídos lançam NotImplementedError; os eventos entram em revisão manual e nunca afirmam que uma licença foi emitida. O worker pode repetir um hook após falha do processo ou resultado incerto; seu backend precisa deduplicar e recuperar pelo mesmo ID de evento.
Configure o adaptador por variáveis de ambiente, sem colocar a chave no controle de versão ou no histórico do shell:
CUSTOM_LICENSING_KEY: codificação Base64 padrão de 32–128 bytes aleatórios, igual à configurada no Launch.CUSTOM_LICENSING_KEY_ID:key-1ou o identificador de chave configurado.CUSTOM_LICENSING_CONNECTION_REF: referência de conexão correspondente.CUSTOM_LICENSING_ENVIRONMENT:sandboxoulive.CUSTOM_LICENSING_DATABASE: caminho SQLite privado e gravável, fora do checkout; conserve-o entre reinícios.CUSTOM_LICENSING_BACKEND: módulo importável que implementa os hooks acima.CUSTOM_LICENSING_PORT: porta local de escuta, padrão18883.
Execute python server.py. Em testes sandbox locais, configure http://127.0.0.1:18883 no Launch e ative explicitamente a exceção HTTP de loopback. Na produção, use terminação HTTPS, supervisão de processos, backups protegidos do banco e verificação pelo SDK/runtime do seu backend. Anuncie apenas tipos de compra e entrega realmente suportados e ajuste capabilities conforme necessário.
Depois de corrigir o backend, python server.py --retry-event ORIGINAL_EVENT_UUID recoloca localmente o mesmo conteúdo persistido na fila. Na página de tarefas de licenciamento do Launch, repita também o evento original. Não troque IDs nem acrescente prazo novamente para recuperar uma resposta.
O exemplo é um ponto de partida, não uma qualificação para produção. O lease do worker dura 60 segundos; limite o timeout dos hooks a um prazo menor ou renove o lease. Antes de aceitar compras reais, acrescente monitoramento, rotação, validações de negócio e esquema mais rigorosas e controles operacionais da implantação. O guia de integração e o OpenAPI definem o protocolo. Nunca use uma resposta de estado Launch como permissão para executar código protegido.