net/http da biblioteca padrão e um pool de conexões, tenta novamente solicitações com falha, percorre listas paginadas para você e inclui definições de tipos RBI e RBS.
Instalação
Adicione a gem ao seu Gemfile:Gemfile
O SDK requer Ruby 3.2.0 ou posterior.
Início Rápido
Crie um cliente e, em seguida, crie uma sessão de checkout:bearer_token, o cliente lerá a variável de ambiente DODO_PAYMENTS_API_KEY. Se você omitir environment, o cliente se conectará ao modo live. Uma chave de API do modo de teste funciona apenas com environment: "test_mode".
Recursos principais
Ruby Conventions
Métodos e argumentos de palavra-chave em snake_case, com hashes simples aceitos para parâmetros aninhados.
Elegant Syntax
As respostas são objetos com leitores de atributos, e
obj[:prop] também lê campos que o SDK não define.Auto-Pagination
auto_paging_each itera sobre cada item e busca a próxima página quando necessário.Type Safety
Definições RBI para Sorbet, sem dependência de
sorbet-runtime.Configuração
Dodopayments::Client.new aceita bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay e max_retry_delay. 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. O cliente é thread-safe e mantém seu próprio pool de conexões; portanto, crie um cliente para seu aplicativo e reutilize-o.
Para verificar um webhook, passe o corpo bruto da solicitação e os headers para dodo_payments.webhooks.unwrap(payload, headers: headers). Ele verifica a assinatura com sua chave de webhook e retorna o evento analisado. dodo_payments.webhooks.unsafe_unwrap(payload) analisa o corpo sem verificá-lo, portanto use-o apenas para testes. Consulte Webhooks.
Configuração de timeout
As solicitações atingem o tempo limite após 60 segundos por padrão. Definatimeout, em segundos, no cliente ou em uma única solicitação:
Dodopayments::Errors::APITimeoutError. As solicitações que excedem o tempo limite são repetidas por padrão.
Configuração de novas tentativas
O SDK repete solicitações quando ocorrem erros de conexão, timeouts e respostas com status 408, 409, 429 ou 500 e superiores. Por padrão, ele tenta novamente duas vezes, com um breve backoff exponencial. Definamax_retries no cliente ou em uma única solicitação:
Operações comuns
Os exemplos desta seção usam o clientedodo_payments de Início rápido.
Criar uma sessão de checkout
Crie uma sessão de checkout e redirecione o cliente para ocheckout_url 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, faça uma cobrança em uma assinatura sob demanda e atualize os metadados de uma assinatura.billing requer apenas country, um código de país ISO de duas letras. customer aceita { customer_id: "..." } para associar um cliente existente ou { email: "...", name: "..." } para criar um. charge é usado para assinaturas sob demanda, e product_price está na menor unidade da moeda.Paginação
Paginação automática
Os métodos de listagem retornam uma página. Leiaitems para obter a página atual ou chame auto_paging_each para iterar sobre cada item. Ele busca a próxima página quando necessário:
Paginação manual
Para avançar uma página por vez, chamenext_page? e next_page:
Tratamento de erros
Quando o SDK não consegue se conectar à API ou quando a API retorna um status 4xx ou 5xx, o SDK gera uma subclasse deDodopayments::Errors::APIError:
status, headers e body:
Segurança de tipos com Sorbet
O SDK inclui definições RBI e não depende desorbet-runtime. Para verificar os tipos dos parâmetros de solicitação, passe classes de modelo em vez de hashes:
Uso avançado
Endpoints não documentados
Para chamar um endpoint que não tem um método do SDK, userequest. 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 emrequest_options. Um parâmetro extra_* com o mesmo nome de um parâmetro documentado o substitui:
Integração com Rails
Criar um initializer
Crie um cliente quando o Rails iniciar, emconfig/initializers/dodo_payments.rb:
Padrão de objeto de serviço
Encapsule o cliente em um objeto de serviço:Integração com controller
Chame o serviço de um controller e redirecione para a página de checkout:Integração com Sinatra
Crie o cliente uma vez em um blococonfigure e use-o em suas rotas:
Recursos
GitHub Repository
Código-fonte, lançamentos e a lista completa de métodos.
API Reference
Cada endpoint, parâmetro e resposta.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Report Issues
Relate bugs ou solicite recursos.
Suporte
Para obter ajuda com o Ruby SDK:- Discord: participe do 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.