Ir para o conteúdo
Voltar à documentação do Launch

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-1 ou o identificador de chave configurado.
  • CUSTOM_LICENSING_CONNECTION_REF: referência de conexão correspondente.
  • CUSTOM_LICENSING_ENVIRONMENT: sandbox ou live.
  • 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ão 18883.

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.