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
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á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
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:- 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.