Skip to main content
El SDK de Ruby permite que las aplicaciones Ruby accedan a la API REST de Dodo Payments. Envía solicitudes con net/http de la biblioteca estándar y un pool de conexiones, reintenta las solicitudes fallidas, itera por las listas paginadas por ti e incluye definiciones de tipos RBI y RBS.

Instalación

Agrega la gema a tu Gemfile:
Gemfile
Las nuevas versiones del SDK agregan compatibilidad con los cambios de la API. Ejecuta bundle update dodopayments periódicamente para mantenerte actualizado.
Después, instálalo:
El SDK requiere Ruby 3.2.0 o posterior.

Inicio Rápido

Crea un cliente y, después, crea una sesión de checkout:
Si omites bearer_token, el cliente lee la variable de entorno DODO_PAYMENTS_API_KEY. Si omites environment, el cliente se conecta al modo live. Una clave de API del modo de prueba solo funciona con environment: "test_mode".
Mantén las claves de API en variables de entorno o en un gestor de secretos. Nunca las incluyas en el control de versiones ni las expongas en tu código.

Funciones principales

Ruby Conventions

Métodos y argumentos de palabra clave en snake_case, con hashes simples aceptados para parámetros anidados.

Elegant Syntax

Las respuestas son objetos con lectores de atributos, y obj[:prop] también lee los campos que el SDK no define.

Auto-Pagination

auto_paging_each itera sobre cada elemento y obtiene la página siguiente cuando es necesario.

Type Safety

Definiciones RBI para Sorbet, sin dependencia de sorbet-runtime.

Configuración

Dodopayments::Client.new acepta bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay y max_retry_delay. Cuando los omites, lee DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (tu secreto de firma de webhook) y DODO_PAYMENTS_BASE_URL del entorno. El cliente es seguro para subprocesos y mantiene su propio pool de conexiones, por lo que debes crear un cliente para tu aplicación y reutilizarlo. Para verificar un webhook, pasa el cuerpo sin procesar de la solicitud y los encabezados a dodo_payments.webhooks.unwrap(payload, headers: headers). Comprueba la firma con tu clave de webhook y devuelve el evento analizado. dodo_payments.webhooks.unsafe_unwrap(payload) analiza el cuerpo sin verificarlo, así que úsalo únicamente para pruebas. Consulta Webhooks.

Configuración del tiempo de espera

Las solicitudes agotan el tiempo de espera después de 60 segundos de forma predeterminada. Configura timeout, en segundos, en el cliente o en una sola solicitud:
Cuando una solicitud agota el tiempo de espera, el SDK genera Dodopayments::Errors::APITimeoutError. Las solicitudes cuyo tiempo de espera se agotó se reintentan de forma predeterminada.

Configuración de reintentos

El SDK reintenta los errores de conexión, los tiempos de espera y las respuestas con estado 408, 409, 429 o 500 y superiores. De forma predeterminada, reintenta dos veces con un breve backoff exponencial. Configura max_retries en el cliente o en una sola solicitud:

Operaciones comunes

Los ejemplos de esta sección usan el cliente dodo_payments de Inicio rápido.

Crear una Checkout Session

Crea una sesión de checkout y, después, redirige al cliente a la checkout_url devuelta:
Cada URL de checkout funciona una sola vez y caduca después de 24 horas. Consulta Checkout Sessions para ver todas las opciones de sesión.

Gestionar clientes

Crea un cliente con una dirección de correo electrónico y un nombre y, después, recupéralo por su ID:

Gestionar suscripciones

Crea una suscripción, cobra una suscripción bajo demanda y actualiza los metadatos de una suscripción.
POST /subscriptions (el método subscriptions.create del SDK) está obsoleto. Sigue funcionando para las integraciones existentes, pero las nuevas integraciones deben crear suscripciones mediante una Checkout Session.
billing solo requiere country, un código de país ISO de dos letras. customer acepta { customer_id: "..." } para asociar un cliente existente o { email: "...", name: "..." } para crear uno. charge es para suscripciones bajo demanda, y product_price está expresado en la unidad monetaria más pequeña.

Paginación

Paginación automática

Los métodos de listado devuelven una página. Lee items para consultar la página actual o llama a auto_paging_each para iterar sobre cada elemento. Obtiene la página siguiente cuando la necesita:

Paginación manual

Para avanzar una página a la vez, llama a next_page? y next_page:

Gestión de errores

Cuando el SDK no puede conectarse a la API o la API devuelve un estado 4xx o 5xx, el SDK genera una subclase de Dodopayments::Errors::APIError:
La clase de error depende de la causa. Cada error tiene los atributos status, headers y body:
El SDK ya reintenta las respuestas 429 con backoff exponencial. Un RateLimitError significa que esos reintentos también fallaron, así que espera más tiempo antes de enviar la solicitud de nuevo.

Seguridad de tipos con Sorbet

El SDK incluye definiciones RBI y no depende de sorbet-runtime. Para obtener parámetros de solicitud verificados por tipos, pasa clases de modelo en lugar de hashes:

Uso avanzado

Endpoints no documentados

Para llamar a un endpoint que no tiene un método del SDK, usa request. Aplica la misma autenticación y los mismos reintentos que los métodos del SDK:

Parámetros no documentados

Para enviar parámetros que el SDK no define, pásalos en request_options. Un parámetro extra_* con el mismo nombre que un parámetro documentado lo reemplaza:

Integración con Rails

Crear un inicializador

Crea un cliente cuando se inicie Rails, en config/initializers/dodo_payments.rb:

Patrón de objeto de servicio

Envuelve el cliente en un objeto de servicio:

Integración con controladores

Llama al servicio desde un controlador y redirige a la página de checkout:

Integración con Sinatra

Crea el cliente una sola vez en un bloque configure y úsalo en tus rutas:

Recursos

GitHub Repository

Código fuente, versiones y la lista completa de métodos.

API Reference

Cada endpoint, parámetro y respuesta.

Discord Community

Haz preguntas y conversa con otros desarrolladores.

Report Issues

Informa de errores o solicita funciones.

Soporte

Para obtener ayuda con el SDK de Ruby:

Contribuir

Para contribuir, lee las directrices de contribución.
Última modificación el 26 de septiembre de 2026