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: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.
Recursos principais
PSR-4 Compliant
Modern PHP
Extensive Testing
Exception Handling
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áticowith com parâmetros nomeados:
["productID" => "pdt_123", "quantity" => 1]. As propriedades das respostas também usam nomes camelCase, por exemplo, $session->checkoutURL.
Configuração
O construtorClient 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
maxRetries em requestOptions, no cliente ou em uma única solicitação:
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 ocheckoutURL retornado:
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.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:
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 deDodopayments\Core\Exceptions\APIException:
Tipos de erro
A classe de exceção depende da causa. Todas as classes estão no namespaceDodopayments\Core\Exceptions:
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 emrequestOptions:
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:config/services.php:
Symfony
Crie um serviço que receba a chave de API por meio do construtor:config/services.yaml:
Recursos
GitHub Repository
API Reference
Discord Community
Report Issues
Suporte
Para obter ajuda com o SDK PHP:- 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.