Task, as solicitações e respostas são classes tipadas, e o cliente repete automaticamente as solicitações com falha.
Instalação
Instale o pacote do NuGet:O SDK requer .NET Standard 2.0 ou posterior e também inclui uma compilação para .NET 8. Ele funciona com ASP.NET Core, aplicações de console e outros tipos de projetos .NET. Os exemplos nesta página usam a sintaxe do C# 12, como expressões de coleção.
Início Rápido
Crie um cliente e, em seguida, crie uma sessão de checkout:BearerToken, o cliente lerá a variável de ambiente DODO_PAYMENTS_API_KEY. Se você não definir BaseUrl ou DODO_PAYMENTS_BASE_URL, o cliente se conectará ao modo live. Para usar o modo de teste, consulte Ambientes. Uma chave de API do modo de teste funciona somente no modo de teste.
Recursos principais
Async/Await
Cada método da API retorna um
Task e aceita um CancellationToken opcional.Strong Typing
Classes tipadas de solicitação e resposta, com anotações de tipos de referência anuláveis.
Smart Retries
Duas novas tentativas por padrão, com espera exponencial, para erros de conexão e códigos de status que permitem novas tentativas.
Error Handling
Uma classe de exceção para cada status de erro HTTP comum, com o código de status e o corpo da resposta.
Configuração
Variáveis de ambiente
Armazene sua chave de API em uma variável de ambiente:.env
new() lê suas configurações do ambiente:
Se nem
BearerToken nem DODO_PAYMENTS_API_KEY estiver definido, o cliente lançará DodoPaymentsInvalidDataException. WebhookKey armazena seu segredo de assinatura de webhook, mas o SDK C# não tem um método que verifique assinaturas de webhook. Para verificá-las, siga Webhooks.
Configuração manual
Defina propriedades no cliente para substituir as variáveis de ambiente:Ambientes
Por padrão, o cliente se conecta ao modo live (https://live.dodopayments.com). Para usar o modo de teste (https://test.dodopayments.com), defina BaseUrl como EnvironmentUrl.TestMode:
Novas tentativas
O SDK repete solicitações em caso de erros de conexão e respostas com status 408, 409, 429 ou 500 e superiores. Por padrão, ele faz duas novas tentativas, com espera exponencial. DefinaMaxRetries para alterar o número de novas tentativas ou defina-o como 0 para desativá-las:
Timeouts
Cada tentativa de solicitação expira após 1 minuto por padrão. O timeout não inclui novas tentativas. DefinaTimeout para alterá-lo:
Substituições por solicitação
Para alterar as configurações de uma única chamada, chameWithOptions no cliente ou em um serviço. Ele retorna uma cópia modificada que compartilha o mesmo pool de conexões, e o cliente original não é alterado:
Operações comuns
Os exemplos nesta 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 oCheckoutUrl retornado:
Gerenciar clientes
Crie um cliente com um endereço de e-mail e um nome e, em seguida, recupere-o pelo ID:Customers.Retrieve também aceita o ID como uma string, por exemplo client.Customers.Retrieve("cus_123").
Gerenciar assinaturas
Crie uma assinatura e, em seguida, cobre-a se for uma assinatura sob demanda.Billing requer apenas Country, um código de país ISO de duas letras. Customer recebe um AttachExistingCustomer para associar um cliente existente ou um NewCustomer para criar um. Charge é usado para assinaturas sob demanda, e ProductPrice está na menor unidade da moeda.Tratamento de erros
Quando a API retorna um status de erro, o SDK lança uma subclasse deDodoPaymentsApiException, que possui as propriedades StatusCode e ResponseBody. A classe de exceção depende do código de status. Todas as exceções 4xx herdam de DodoPayments4xxException.
Um status 4xx sem uma classe própria, como 409, lança
DodoPayments4xxException. DodoPaymentsUnexpectedStatusCodeException abrange status fora dos intervalos 4xx e 5xx.
O SDK também lança estas exceções:
DodoPaymentsIOException: Um erro de E/S ou de rede.DodoPaymentsInvalidDataException: O SDK não conseguiu interpretar os dados da resposta, por exemplo, porque uma propriedade obrigatória está ausente.DodoPaymentsException: A classe base de todas as exceções do SDK.
Paginação
Os métodos de listagem retornam uma página de resultados. Você pode iterar por cada item ou percorrer as páginas manualmente.Paginação automática
Paginate retorna um IAsyncEnumerable que busca a próxima página quando necessário:
Paginação manual
Para trabalhar com uma página por vez, leiaItems e, em seguida, chame HasNext() e Next():
PaymentListParams do namespace DodoPayments.Client.Models.Payments, por exemplo, client.Payments.List(new PaymentListParams { PageSize = 50 }).
Integração com ASP.NET Core
Registre um cliente como singleton no contêiner de injeção de dependências e leia a chave de API da configuração:Program.cs
appsettings.json:
appsettings.json
Recursos
NuGet Package
Versões do pacote e comandos de instalação.
GitHub Repository
Código-fonte, versões e exemplos.
API Reference
Cada endpoint, parâmetro e resposta.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Suporte
Para obter ajuda com o SDK C#:- 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.