Skip to main content
O SDK PHP permite que aplicações PHP 8.1+ acessem a REST API do Dodo Payments. Os métodos aceitam parâmetros nomeados, as respostas são objetos tipados e o Composer carrega o SDK com autoloading PSR-4.

Instalação

Instale o SDK com o Composer:
O SDK requer PHP 8.1.0 ou posterior e o Composer. Ele envia solicitações por meio de um cliente HTTP PSR-18 no seu projeto, como o Guzzle, que ele encontra com php-http/discovery.

Início Rápido

Crie um cliente e, em seguida, crie uma sessão de checkout:
Se você omitir bearerToken, o cliente lerá a variável de ambiente DODO_PAYMENTS_API_KEY. Se você omitir baseUrl, o cliente lerá DODO_PAYMENTS_BASE_URL e se conectará ao modo live (https://live.dodopayments.com) quando essa variável também não estiver definida. Uma chave de API do modo de teste funciona somente com a URL do modo de teste, https://test.dodopayments.com.
Mantenha as chaves de API em variáveis de ambiente ou em um gerenciador de segredos. Nunca as exponha na sua base de código nem as confirme no controle de versão.

Recursos principais

PSR-4 Compliant

O Composer carrega o namespace Dodopayments com autoloading PSR-4.

Modern PHP

Desenvolvido para PHP 8.1 ou posterior, com parâmetros tipados e tipos estritos.

Extensive Testing

O repositório do SDK inclui uma suíte de testes para os serviços da API.

Exception Handling

Uma classe de exceção para cada status de erro HTTP, além de exceções de tempo limite e conexão.

Objetos de valor

Os métodos aceitam parâmetros nomeados, e os parâmetros que têm um valor padrão devem ser passados por nome. Para criar um objeto de valor, use seu construtor estático with com parâmetros nomeados:
Cada objeto de valor também tem um builder:
Os métodos também aceitam arrays simples com as mesmas chaves camelCase, como ["productID" => "pdt_123", "quantity" => 1]. As propriedades das respostas também usam nomes camelCase, por exemplo, $session->checkoutURL.

Configuração

O construtor Client aceita bearerToken, webhookKey, baseUrl e requestOptions. Quando você os omite, ele lê DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (seu segredo de assinatura de webhook) e DODO_PAYMENTS_BASE_URL do ambiente. Para verificar um webhook, passe o corpo bruto da solicitação e os headers para $client->webhooks->unwrap($body, headers: $headers). Ele verifica a assinatura usando sua chave de webhook, retorna o evento analisado e lança WebhookException se a verificação falhar. Se você omitir headers, unwrap não verificará a assinatura. $client->webhooks->unsafeUnwrap($body) analisa o corpo sem verificá-lo, portanto use-o somente para testes. Consulte Webhooks.

Configuração de novas tentativas

Por padrão, o SDK tenta novamente alguns erros duas vezes, com um curto backoff exponencial. Estes erros acionam uma nova tentativa:
  • Erros de conexão (problemas de conectividade de rede)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Erros internos
  • Tempos limite
Defina maxRetries em requestOptions, no cliente ou em uma única solicitação:
As solicitações atingem o tempo limite após 60 segundos por padrão. Para alterar o limite, defina timeout, em segundos, no mesmo array requestOptions.

Operações comuns

Os exemplos desta seção usam o $client de Início rápido.

Criar uma sessão de checkout

Crie uma sessão de checkout e redirecione o cliente para o checkoutURL retornado:
Cada URL de checkout funciona uma vez e expira após 24 horas. Para consultar todas as opções de sessão, consulte Sessões de checkout.

Gerenciar clientes

Crie um cliente com um endereço de e-mail e um nome e, em seguida, recupere-o pelo ID:

Gerenciar assinaturas

Crie uma assinatura e, em seguida, cobre-a se for uma assinatura sob demanda.
POST /subscriptions (o método subscriptions->create do SDK) está obsoleto. Ele ainda funciona para integrações existentes, mas as novas integrações devem criar assinaturas por meio de uma Sessão de checkout.
billing requer apenas country, um código de país ISO de duas letras. Passe AttachExistingCustomer::with(customerID: '...') para associar um cliente existente ou NewCustomer::with(email: '...', name: '...') para criar um. Ambas as classes estão no namespace Dodopayments\Payments. charge é destinado a assinaturas sob demanda, e productPrice está na menor unidade da moeda.

Paginação

Os métodos de listagem retornam um objeto de página. getItems() retorna os itens da página atual, e pagingEachItem() retorna todos os itens a partir da página atual, solicitando mais páginas conforme necessário:
Para avançar uma página por vez, chame hasNextPage() e getNextPage().

Tratamento de erros

Quando o SDK não consegue se conectar à API ou quando a API retorna um status 4xx ou 5xx, o SDK lança uma subclasse de Dodopayments\Core\Exceptions\APIException:

Tipos de erro

A classe de exceção depende da causa. Todas as classes estão no namespace Dodopayments\Core\Exceptions:
Capture essas exceções em torno das chamadas de API para que sua aplicação possa exibir uma mensagem clara ou tentar novamente mais tarde. Para um erro que permite nova tentativa, o SDK lança a exceção somente depois que suas novas tentativas automáticas falham.

Uso avançado

Endpoints não documentados

Para chamar um endpoint que não possui um método no SDK, use $client->request. Ele aplica a mesma autenticação e as mesmas novas tentativas que os métodos do SDK:

Parâmetros não documentados

Para enviar parâmetros que o SDK não define, passe-os em requestOptions:
Um parâmetro extra* com o mesmo nome de um parâmetro documentado o substitui.

Integração com frameworks

Laravel

Encapsule o cliente em uma classe de serviço. Este exemplo define a URL da API a partir do ambiente configurado:
Adicione as configurações a config/services.php:

Symfony

Crie um serviço que receba a chave de API por meio do construtor:
Registre o serviço em config/services.yaml:

Recursos

GitHub Repository

Código-fonte, versões e a lista completa de métodos.

API Reference

Todos os endpoints, parâmetros e respostas.

Discord Community

Faça perguntas e converse com outros desenvolvedores.

Report Issues

Relate bugs ou solicite recursos.

Suporte

Para obter ajuda com o SDK PHP:

Contribuição

Para contribuir, leia as diretrizes de contribuição.
Última modificação em 26 de setembro de 2026