Skip to main content
Il Ruby SDK consente alle applicazioni Ruby di accedere alla REST API di Dodo Payments. Invia le richieste con net/http della libreria standard e un connection pool, riprova le richieste non riuscite, gestisce per te l’iterazione degli elenchi paginati e include definizioni di tipo RBI e RBS.

Installazione

Aggiungi la gem al tuo Gemfile:
Gemfile
Le nuove versioni dell’SDK aggiungono il supporto alle modifiche dell’API. Esegui regolarmente bundle update dodopayments per mantenerti aggiornato.
Quindi installalo:
L’SDK richiede Ruby 3.2.0 o versioni successive.

Avvio Veloce

Crea un client, quindi crea una checkout session:
Se ometti bearer_token, il client legge la variabile d’ambiente DODO_PAYMENTS_API_KEY. Se ometti environment, il client si connette alla live mode. Una test mode API key funziona solo con environment: "test_mode".
Conserva le API key nelle variabili d’ambiente o in un secrets manager. Non inserirle mai nel version control né esporle nel codice.

Funzionalità principali

Ruby Conventions

Metodi e argomenti keyword in snake_case, con hash semplici accettati per i parametri annidati.

Elegant Syntax

Le risposte sono oggetti con attribute reader e obj[:prop] legge anche i campi non definiti dall’SDK.

Auto-Pagination

auto_paging_each esegue l’iterazione su ogni elemento e recupera la pagina successiva quando necessario.

Type Safety

Definizioni RBI per Sorbet, senza dipendere da sorbet-runtime.

Configurazione

Dodopayments::Client.new accetta bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay e max_retry_delay. Quando li ometti, legge dall’ambiente DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (il tuo webhook signing secret) e DODO_PAYMENTS_BASE_URL. Il client è thread-safe e mantiene il proprio connection pool, quindi crea un client per la tua applicazione e riutilizzalo. Per verificare un webhook, passa il request body grezzo e gli header a dodo_payments.webhooks.unwrap(payload, headers: headers). Controlla la signature con la tua webhook key e restituisce l’evento analizzato. dodo_payments.webhooks.unsafe_unwrap(payload) analizza il body senza verificarlo, quindi usalo solo per i test. Consulta Webhooks.

Configurazione del timeout

Le richieste scadono dopo 60 secondi per impostazione predefinita. Imposta timeout, in secondi, sul client o su una singola richiesta:
Quando una richiesta va in timeout, l’SDK solleva Dodopayments::Errors::APITimeoutError. Le richieste andate in timeout vengono ritentate per impostazione predefinita.

Configurazione dei retry

L’SDK ritenta gli errori di connessione, i timeout e le risposte con status 408, 409, 429 o 500 e superiori. Per impostazione predefinita, esegue due retry con un breve exponential backoff. Imposta max_retries sul client o su una singola richiesta:

Operazioni comuni

Gli esempi di questa sezione usano il client dodo_payments di Quick Start.

Crea una Checkout Session

Crea una checkout session, quindi reindirizza il cliente a checkout_url restituito:
Ogni checkout URL funziona una sola volta e scade dopo 24 ore. Per tutte le opzioni della sessione, consulta Checkout Sessions.

Gestisci i clienti

Crea un cliente con indirizzo email e nome, quindi recuperalo tramite ID:

Gestisci le subscription

Crea una subscription, addebita una subscription on-demand e aggiorna i metadata di una subscription.
POST /subscriptions (il metodo subscriptions.create dell’SDK) è deprecato. Continua a funzionare per le integrazioni esistenti, ma le nuove integrazioni devono creare le subscription tramite una Checkout Session.
billing richiede solo country, un codice paese ISO di due lettere. customer accetta { customer_id: "..." } per associare un cliente esistente oppure { email: "...", name: "..." } per crearne uno. charge è destinato alle subscription on-demand, mentre product_price è espresso nell’unità monetaria minima.

Paginazione

Auto-paginazione

I metodi di elenco restituiscono una pagina. Leggi items per la pagina corrente oppure chiama auto_paging_each per eseguire l’iterazione su ogni elemento. Recupera la pagina successiva quando necessario:

Paginazione manuale

Per spostarti una pagina alla volta, chiama next_page? e next_page:

Gestione degli errori

Quando l’SDK non riesce a connettersi all’API o l’API restituisce uno status 4xx o 5xx, l’SDK solleva una sottoclasse di Dodopayments::Errors::APIError:
La classe dell’errore dipende dalla causa. Ogni errore dispone degli attributi status, headers e body:
L’SDK ritenta già le risposte 429 con exponential backoff. Un RateLimitError indica che anche questi retry non sono riusciti, quindi attendi più a lungo prima di inviare nuovamente la richiesta.

Type safety con Sorbet

L’SDK include definizioni RBI e non dipende da sorbet-runtime. Per ottenere parametri delle richieste sottoposti a controllo dei tipi, passa classi di modello invece di hash:

Utilizzo avanzato

Endpoint non documentati

Per chiamare un endpoint che non dispone di un metodo SDK, usa request. Applica la stessa autenticazione e gli stessi retry dei metodi SDK:

Parametri non documentati

Per inviare parametri non definiti dall’SDK, passali in request_options. Un parametro extra_* con lo stesso nome di un parametro documentato lo sovrascrive:

Integrazione con Rails

Crea un initializer

Crea un client all’avvio di Rails, in config/initializers/dodo_payments.rb:

Pattern service object

Inserisci il client in un service object:

Integrazione con il controller

Chiama il service da un controller e reindirizza alla pagina di checkout:

Integrazione con Sinatra

Crea il client una sola volta in un blocco configure e usalo nelle tue route:

Risorse

GitHub Repository

Codice sorgente, release ed elenco completo dei metodi.

API Reference

Ogni endpoint, parametro e risposta.

Discord Community

Fai domande e comunica con altri sviluppatori.

Report Issues

Segnala bug o richiedi funzionalità.

Supporto

Per ricevere assistenza sul Ruby SDK:

Contribuire

Per contribuire, leggi le linee guida per i contributi.
Ultima modifica il 26 settembre 2026