DodoPayments, e un client asincrono, AsyncDodoPayments, entrambi basati su httpx. I parametri delle richieste annidati sono dizionari tipizzati e le risposte sono modelli Pydantic.
Installazione
Installa il SDK con pip:aiohttp:
client.webhooks.unwrap(), installa anche l’extra webhooks: pip install "dodopayments[webhooks]".
Il SDK richiede Python 3.9 o versioni successive. Usa l’ultima versione stabile di Python per ricevere gli aggiornamenti di sicurezza.
Avvio rapido
Client sincrono
Crea un client, quindi crea una sessione di checkout:bearer_token, il client legge la variabile d’ambiente DODO_PAYMENTS_API_KEY. Se ometti environment, il client si connette alla modalità live. Una chiave API della modalità test funziona solo con environment="test_mode".
Client asincrono
AsyncDodoPayments dispone degli stessi metodi di DodoPayments. Usa await per ogni chiamata:
Funzionalità principali
Pythonic Interface
Argomenti keyword per i parametri, tipi
TypedDict per gli oggetti annidati e modelli Pydantic per le risposte.Async/Await
AsyncDodoPayments per asyncio, con aiohttp come backend HTTP opzionale.Type Hints
Type hints su ogni metodo, per il completamento automatico nell’editor e il type checking con mypy.
Auto-Pagination
I metodi list restituiscono iteratori che recuperano la pagina successiva durante l’iterazione.
Configurazione
Variabili d’ambiente
Salva la chiave API in una variabile d’ambiente:.env
Se
DODO_PAYMENTS_BASE_URL è impostato e passi anche environment, il costruttore genera un errore “Ambiguous URL”. Per usare environment in questo caso, passa base_url=None.
Per verificare un webhook, passa il corpo grezzo della richiesta e gli header a client.webhooks.unwrap(payload, headers=headers). Il metodo controlla la firma con la chiave del webhook e restituisce l’evento analizzato. client.webhooks.unsafe_unwrap(payload) analizza il corpo senza verificarlo, quindi usalo solo per i test. Vedi Webhooks.
Timeout
Le richieste vanno in timeout dopo 1 minuto per impostazione predefinita, con un timeout di connessione di 5 secondi. Passatimeout in secondi oppure un httpx.Timeout per impostare limiti separati di lettura, scrittura e connessione:
APITimeoutError. Le richieste in timeout vengono ritentate, quindi una chiamata può impiegare più tempo di timeout prima di fallire.
Retry
Impostamax_retries sul client oppure su una singola richiesta con with_options():
dodopayments.APIError:
Le eccezioni relative allo status ereditano da
dodopayments.APIStatusError, che dispone degli attributi status_code e response. APITimeoutError è una sottoclasse di APIConnectionError.
Operazioni comuni
Gli esempi di questa sezione usanoclient da Avvio rapido.
Creare una sessione di checkout
Crea una sessione di checkout, quindi reindirizza il cliente all’checkout_url restituito:
checkout_url funziona una sola volta e scade dopo 24 ore. Per tutte le opzioni della sessione, vedi Checkout Sessions.
Gestire i clienti
Crea un cliente con un indirizzo email e un nome, quindi recuperalo tramite ID:Gestire le sottoscrizioni
Crea una sottoscrizione, addebita una sottoscrizione on-demand e leggi la cronologia di utilizzo di una sottoscrizione.billing richiede solo country, un codice paese ISO di due lettere. customer accetta {"customer_id": ...} per collegare un cliente esistente oppure {"email": ..., "name": ...} per crearne uno. charge è destinato alle sottoscrizioni on-demand, mentre product_price è espresso nell’unità più piccola della valuta. retrieve_usage_history restituisce un elenco paginato, che puoi iterare come mostrato in Paginazione.Fatturazione basata sull’utilizzo
Acquisire eventi di utilizzo
Invia gli eventi di utilizzo per un cliente:event_id è la chiave di idempotenza, quindi assegna a ogni evento un valore univoco. Se lo stesso event_id compare due volte nella stessa richiesta, l’intera richiesta viene rifiutata. Se un event_id è già stato acquisito, il nuovo evento viene ignorato. Una richiesta accetta fino a 1.000 eventi. timestamp viene impostato per impostazione predefinita sull’ora corrente e viene rifiutato se è precedente di oltre 1 ora o successivo di oltre 5 minuti rispetto all’ora corrente.Elencare e recuperare gli eventi
Recupera un singolo evento tramite il relativoevent_id oppure elenca gli eventi filtrati per cliente e nome dell’evento:
usage_events.list accetta anche i filtri meter_id, start e end.
Paginazione
Paginazione automatica
I metodi list restituiscono un iteratore che recupera la pagina successiva durante l’iterazione:Paginazione asincrona
Con il client asincrono, esegui il ciclo conasync for:
Paginazione manuale
Per lavorare con una pagina alla volta, leggiitems e chiama has_next_page() e get_next_page(). next_page_info() restituisce i parametri per la richiesta successiva:
Configurazione del client HTTP
Per aggiungere un proxy, un transport personalizzato o altre impostazionihttpx, passa un tuo http_client. DefaultHttpxClient mantiene i limiti di connessione, il timeout e le impostazioni di redirect predefiniti del SDK:
client.with_options(http_client=...).
Async con AIOHTTP
Per impostazione predefinita, il client asincrono invia le richieste conhttpx. Per una maggiore concorrenza, installa l’extra aiohttp e passa DefaultAioHttpClient() come http_client:
Logging
Il SDK registra i log con il modulo della standard librarylogging. Per attivare il logging, imposta DODO_PAYMENTS_LOG su info:
debug:
Integrazione con i framework
Questi esempi creano una sessione di checkout da un endpoint web e ne restituiscono l’URL.FastAPI
Questo endpoint usa il client asincrono:Django
Questa view usa il client sincrono:Risorse
GitHub Repository
Codice sorgente, release e lista completa dei metodi.
API Reference
Ogni endpoint, parametro e risposta.
Discord Community
Fai domande e parla con altri sviluppatori.
Report Issues
Segnala bug o richiedi funzionalità.
Supporto
Per ricevere assistenza sul Python SDK:- Discord: unisciti al server della community per ricevere assistenza in tempo reale.
- Email: contatta support@dodopayments.com.
- GitHub: apri una issue nel repository.