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
L’SDK richiede Ruby 3.2.0 o versioni successive.
Avvio Veloce
Crea un client, quindi crea una checkout session: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".
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. Impostatimeout, in secondi, sul client o su una singola richiesta:
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. Impostamax_retries sul client o su una singola richiesta:
Operazioni comuni
Gli esempi di questa sezione usano il clientdodo_payments di Quick Start.
Crea una Checkout Session
Crea una checkout session, quindi reindirizza il cliente acheckout_url restituito:
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.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. Leggiitems 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, chiamanext_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 diDodopayments::Errors::APIError:
status, headers e body:
Type safety con Sorbet
L’SDK include definizioni RBI e non dipende dasorbet-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, usarequest. Applica la stessa autenticazione e gli stessi retry dei metodi SDK:
Parametri non documentati
Per inviare parametri non definiti dall’SDK, passali inrequest_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, inconfig/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 bloccoconfigure 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:- Discord: Unisciti al server della community per ricevere assistenza in tempo reale.
- Email: Contatta support@dodopayments.com.
- GitHub: Apri una issue nel repository.