DodoPayments, e um cliente assíncrono, AsyncDodoPayments, ambos baseados em httpx. Os parâmetros de solicitação aninhados são dicionários tipados, e as respostas são modelos Pydantic.
Instalação
Instale o SDK com pip:aiohttp:
client.webhooks.unwrap(), instale também o extra webhooks: pip install "dodopayments[webhooks]".
O SDK requer Python 3.9 ou posterior. Use a versão estável mais recente do Python para receber atualizações de segurança.
Início rápido
Cliente síncrono
Crie um cliente e, em seguida, crie uma sessão de checkout:bearer_token, o cliente lerá a variável de ambiente DODO_PAYMENTS_API_KEY. Se você omitir environment, o cliente se conectará ao modo live. Uma chave de API do modo de teste funciona somente com environment="test_mode".
Cliente assíncrono
AsyncDodoPayments tem os mesmos métodos que DodoPayments. Use await em cada chamada:
Recursos principais
Pythonic Interface
Argumentos nomeados para parâmetros, tipos
TypedDict para objetos aninhados e modelos Pydantic para respostas.Async/Await
AsyncDodoPayments para asyncio, com aiohttp como backend HTTP opcional.Type Hints
Type hints em todos os métodos, para preenchimento automático no editor e verificação de tipos com mypy.
Auto-Pagination
Os métodos de listagem retornam iteradores que buscam a próxima página enquanto você itera.
Configuração
Variáveis de ambiente
Armazene sua chave de API em uma variável de ambiente:.env
Se
DODO_PAYMENTS_BASE_URL estiver definido e você também passar environment, o construtor gerará um erro de “Ambiguous URL”. Para usar environment nesse caso, passe base_url=None.
Para verificar um webhook, passe o corpo bruto da solicitação e os headers para client.webhooks.unwrap(payload, headers=headers). Ele verifica a assinatura com sua chave de webhook e retorna o evento analisado. client.webhooks.unsafe_unwrap(payload) analisa o corpo sem verificá-lo, portanto use-o apenas para testes. Consulte Webhooks.
Timeouts
As solicitações atingem o timeout após 1 minuto por padrão, com um timeout de conexão de 5 segundos. Passetimeout em segundos ou um httpx.Timeout para limites separados de leitura, gravação e conexão:
APITimeoutError. As solicitações que atingem o timeout são repetidas, portanto uma chamada pode levar mais tempo que timeout antes de falhar.
Repetições
Definamax_retries no cliente ou em uma única solicitação com with_options():
dodopayments.APIError:
As exceções de status herdam de
dodopayments.APIStatusError, que possui os atributos status_code e response. APITimeoutError é uma subclasse de APIConnectionError.
Operações comuns
Os exemplos desta seção usam oclient de Início rápido.
Criar uma sessão de checkout
Crie uma sessão de checkout e redirecione o cliente para ocheckout_url retornado:
checkout_url funciona uma vez e expira após 24 horas. Para consultar todas as opções de sessão, veja Sessões de checkout.
Gerenciar clientes
Crie um cliente com um endereço de e-mail e nome e, em seguida, recupere-o pelo ID:Gerenciar assinaturas
Crie uma assinatura, cobre uma assinatura sob demanda e leia o histórico de uso de uma assinatura.billing requer apenas country, um código de país ISO de duas letras. customer aceita {"customer_id": ...} para associar um cliente existente ou {"email": ..., "name": ...} para criar um. charge é destinado a assinaturas sob demanda, e product_price está na menor unidade da moeda. retrieve_usage_history retorna uma lista paginada, que você pode percorrer conforme mostrado em Paginação.Faturamento baseado em uso
Ingerir eventos de uso
Envie eventos de uso para um cliente:O
event_id é a chave de idempotência, portanto atribua um valor exclusivo a cada evento. Se o mesmo event_id aparecer duas vezes em uma solicitação, toda a solicitação será rejeitada. Se um event_id já tiver sido ingerido, o novo evento será ignorado. Uma solicitação aceita até 1.000 eventos. timestamp assume como padrão o horário atual e é rejeitado se estiver mais de 1 hora no passado ou mais de 5 minutos no futuro.Listar e recuperar eventos
Recupere um único evento peloevent_id ou liste eventos filtrados por cliente e nome do evento:
usage_events.list também aceita os filtros meter_id, start e end.
Paginação
Paginação automática
Os métodos de listagem retornam um iterador que busca a próxima página enquanto você itera:Paginação assíncrona
Com o cliente assíncrono, faça um loop comasync for:
Paginação manual
Para trabalhar com uma página por vez, leiaitems e chame has_next_page() e get_next_page(). next_page_info() retorna os parâmetros da próxima solicitação:
Configuração do cliente HTTP
Para adicionar um proxy, um transporte personalizado ou outras configurações dehttpx, passe seu próprio http_client. DefaultHttpxClient mantém os limites de conexão, o timeout e as configurações de redirecionamento padrão do SDK:
client.with_options(http_client=...).
Async com AIOHTTP
Por padrão, o cliente assíncrono envia solicitações comhttpx. Para obter melhor simultaneidade, instale o extra aiohttp e passe DefaultAioHttpClient() como http_client:
Logging
O SDK registra logs usando o módulologging da biblioteca padrão. Para ativar o logging, defina DODO_PAYMENTS_LOG como info:
debug:
Integração com frameworks
Estes exemplos criam uma sessão de checkout a partir de um endpoint web e retornam sua URL.FastAPI
Este endpoint usa o cliente assíncrono:Django
Esta view usa o cliente síncrono:Recursos
GitHub Repository
Código-fonte, versões e a lista completa de métodos.
API Reference
Cada endpoint, parâmetro e resposta.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Report Issues
Relate bugs ou solicite recursos.
Suporte
Para obter ajuda com o SDK Python:- Discord: entre no servidor da comunidade para obter ajuda em tempo real.
- E-mail: entre em contato pelo endereço support@dodopayments.com.
- GitHub: abra uma issue no repositório.