Instalação
Adicione o SDK ao seu projeto com Cargo:Cargo.toml:
O SDK requer Rust 1.75 ou posterior.
Início Rápido
Client::from_env() lê sua API key da variável de ambiente DODO_PAYMENTS_API_KEY. Crie um cliente e, em seguida, uma sessão de checkout:
DODO_PAYMENTS_API_KEY não estiver definida, Client::from_env() retorna um Error::Config. O cliente se conecta ao live mode, a menos que você escolha outro ambiente, conforme mostrado em Ambientes. Uma API key de test mode funciona somente no test mode.
Recursos principais
Async First
Criado com Tokio e reqwest, com
async/await para cada request.Strong Typing
Structs tipadas de request e response para verificações em tempo de compilação.
Auto-Pagination
Transmita cada item entre as páginas ou avance uma página por vez.
Configurable
Defina o ambiente, a URL base, o timeout e a quantidade de tentativas para cada cliente.
Configuração
Variáveis de ambiente
Client::from_env() lê sua API key de DODO_PAYMENTS_API_KEY. Ele usa a URL do live mode, a menos que você defina DODO_PAYMENTS_BASE_URL:
DODO_PAYMENTS_WEBHOOK_KEY e não tem um método que verifique assinaturas de webhook. Para verificá-las, siga Webhooks.
Você também pode configurar o cliente explicitamente. Client::new retorna um Result, portanto use unwrap com ? dentro de uma função que retorna dodopayments::Result:
Ambientes
O SDK tem dois ambientes:
A URL base padrão é
https://live.dodopayments.com. Para selecionar outro ambiente, use o enum Environment em vez de uma URL hardcoded:
DODO_PAYMENTS_API_KEY com from_env(), mas direcionar para outro ambiente, substitua o ambiente na configuração:
Timeouts
O timeout padrão de request é de 30 segundos. Substitua-o para um cliente comwith_timeout:
Retry-After quando a API envia um. Para alterar a quantidade de tentativas, chame with_max_retries em ClientConfig, por exemplo .with_max_retries(0) para desativar as tentativas.
Operações comuns
Os exemplos nesta seção usamclient de Início rápido.
Criar uma sessão de checkout
Crie uma sessão de checkout com uma URL de retorno:session.checkout_url. Cada URL de checkout funciona uma vez e expira após 24 horas. Para ver todas as opções de sessão, consulte Checkout Sessions.
Gerenciar clientes
Crie um cliente com um endereço de email e um nome e, em seguida, recupere-o pelo ID:Gerenciar assinaturas
Crie uma assinatura para um cliente existente.billing requer apenas country, uma variante de enum CountryCode, como CountryCode::Us. customer é um enum CustomerRequest: passe AttachExistingCustomer para um cliente existente ou NewCustomer para criar um. Para cobrar uma on-demand subscription, chame client.subscriptions().charge().subscription_id(...) com um body SubscriptionsChargeParams. Campos de valor, como product_price, estão na menor unidade da moeda (por exemplo, 2500 equivale a $25.00).Faturamento baseado em uso
Ingerir eventos de uso
Envie eventos de uso para um cliente:event_id é a chave de idempotência; portanto, atribua um valor exclusivo a cada evento. Se timestamp for None, o evento usará o horário atual.
Listar eventos de uso
Liste eventos filtrados por cliente e nome do evento. Os filtros ficam em um objeto de query JSON:Paginação
Os endpoints de listagem retornam uma página tipada cujo campoitems contém a página atual de resultados. Para transmitir todos os itens de todas as páginas, chame into_stream:
get_next_page. Ele retorna None após a última página:
Tratamento de erros
Cada método retorna umdodopayments::Result<T>. As falhas são variantes do enum dodopayments::Error: Api para um status de erro da API, Http para erros de transporte, Json para erros de serialização, Config para erros de configuração e MissingPathParam ou MissingBody para requests incompletos. Faça o match para tratar erros da API separadamente dos erros de transporte:
Endpoints não documentados
Para chamar um endpoint que não tem um método tipado, use o builder de baixo nívelrequest. Ele aplica a autenticação e a URL base. Para nomear reqwest::Method, adicione reqwest 0.12 às suas dependências:
Recursos
GitHub Repository
Código-fonte, releases e a lista completa de métodos.
Crates.io
O crate publicado e suas versões.
API Reference
Cada endpoint, parâmetro e response.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Suporte
Para obter ajuda com o Rust SDK:- Discord: entre no servidor da comunidade para obter ajuda em tempo real.
- Email: entre em contato pelo endereço support@dodopayments.com.
- GitHub: abra uma issue no repositório.