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
El SDK requiere Ruby 3.2.0 o posterior.
Inicio Rápido
Crea un cliente y, después, crea una sesión de checkout: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".
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. Configuratimeout, en segundos, en el cliente o en una sola solicitud:
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. Configuramax_retries en el cliente o en una sola solicitud:
Operaciones comunes
Los ejemplos de esta sección usan el clientedodo_payments de Inicio rápido.
Crear una Checkout Session
Crea una sesión de checkout y, después, redirige al cliente a lacheckout_url devuelta:
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.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. Leeitems 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 anext_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 deDodopayments::Errors::APIError:
status, headers y body:
Seguridad de tipos con Sorbet
El SDK incluye definiciones RBI y no depende desorbet-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, usarequest. 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 enrequest_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, enconfig/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 bloqueconfigure 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:- Discord: Únete al servidor de la comunidad para recibir ayuda en tiempo real.
- Correo electrónico: Contacta con support@dodopayments.com.
- GitHub: Abre un issue en el repositorio.