Skip to main content
O Ruby SDK dá aos aplicativos Ruby acesso à REST API do Dodo Payments. Ele envia solicitações com o 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
Os lançamentos do SDK adicionam suporte a alterações na API. Execute bundle update dodopayments regularmente para manter-se atualizado.
Depois, instale-o:
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:
Se você omitir 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".
Mantenha as chaves de API em variáveis de ambiente ou em um gerenciador de secrets. Nunca faça commit delas no controle de versão nem as exponha no código.

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. Defina timeout, em segundos, no cliente ou em uma única solicitação:
Quando uma solicitação excede o tempo limite, o SDK gera 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. Defina max_retries no cliente ou em uma única solicitação:

Operações comuns

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

Criar uma sessão de checkout

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

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.
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 Checkout Session.
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. Leia items 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, chame next_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 de Dodopayments::Errors::APIError:
A classe de erro depende da causa. Cada erro tem os atributos status, headers e body:
O SDK já repete respostas 429 com backoff exponencial. Um RateLimitError significa que essas tentativas também falharam; portanto, aguarde mais tempo antes de enviar a solicitação novamente.

Segurança de tipos com Sorbet

O SDK inclui definições RBI e não depende de sorbet-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, use 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 request_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, em config/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 bloco configure 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:

Contribuição

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