Optional per i campi che possono mancare, Stream per iterare sui risultati e CompletableFuture per le chiamate asincrone.
Installazione
Maven
Add the dependency to yourpom.xml:
pom.xml
Gradle
Aggiungi la dipendenza al tuobuild.gradle.kts:
build.gradle.kts
L’SDK richiede Java 8 o versioni successive, quindi funziona anche con Java 11, 17 e 21.
Inizio Veloce
Crea un client, quindi crea una checkout session:fromEnv() si connette alla modalità live, a meno che DODO_PAYMENTS_BASE_URL o dodopayments.baseUrl non indichino diversamente. Per usare la modalità test, consulta Test Mode. Una API key della modalità test funziona solo in modalità test.
Funzionalità principali
Type Safety
Classi di request e response tipizzate per i controlli in fase di compilazione.
Shared Client
Crea un client e riutilizzalo per tutte le request: contiene il connection pool e i thread pool. Gli oggetti request e response sono immutabili.
Builder Pattern
Ogni classe request dispone di un builder e
toBuilder() crea una copia modificata.Async Support
client.async() restituisce un client i cui metodi restituiscono CompletableFuture.Configurazione
Variabili d’ambiente
fromEnv() legge queste variabili d’ambiente o le system properties corrispondenti. Le system properties hanno la precedenza:
.env
DODO_PAYMENTS_API_KEY o dodopayments.apiKey. Il webhook signing secret proviene da DODO_PAYMENTS_WEBHOOK_KEY o dodopayments.webhookKey, mentre la base URL proviene da DODO_PAYMENTS_BASE_URL o dodopayments.baseUrl. Crea un client e riutilizzalo, perché ogni client dispone di un proprio connection pool e di propri thread pool.
Per verificare un webhook, passa il raw request body e gli header a client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), dove headers è un com.dodopayments.api.core.http.Headers. Il metodo verifica la signature con la tua webhook key e restituisce l’evento analizzato oppure genera DodoPaymentsWebhookException. Senza header, unwrap non verifica la signature. client.webhooks().unsafeUnwrap(rawBody) analizza il body senza verificarlo, quindi usalo solo per i test. Consulta Webhooks.
Configurazione manuale
Imposta ogni opzione sul builder:RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() come secondo argomento del metodo. responseValidation(true) verifica in anticipo che l’intera response corrisponda ai tipi previsti. Senza questa opzione, l’SDK genera DodoPaymentsInvalidDataException solo quando leggi una property con un tipo imprevisto.
Modalità test
Per usare la modalità test (https://test.dodopayments.com), chiama testMode() sul builder:
Operazioni comuni
Gli esempi di questa sezione utilizzanoclient di Quick Start.
Creare una checkout session
Crea una checkout session, quindi reindirizza il customer all’URL di checkout restituito:checkoutUrl() restituisce un Optional<String>. Ogni URL di checkout funziona una sola volta e scade dopo 24 ore. Per tutte le opzioni della session, consulta Checkout Sessions.
Gestire i customer
Crea un customer con un indirizzo email, un nome e i metadata, quindi recuperalo tramite ID:Gestire le subscription
Crea una subscription con un payment link, quindi addebitala se si tratta di una subscription on-demand.productPrice è espresso nell’unità minima della valuta, ad esempio in centesimi per USD o paise per INR. Per addebitare $25.00, passa 2500.Fatturazione basata sull’utilizzo
Configurare i meter
Crea un meter che conteggi gli eventi, quindi elenca i tuoi meter.autoPager() esegue l’iterazione su ogni meter e recupera altre pagine quando necessario:
Acquisire gli usage event
Invia un usage event per un customer. I valori dei metadata dell’evento sono oggettiJsonValue:
eventId è la idempotency key, quindi assegna a ogni evento un valore univoco. Un timestamp antecedente di oltre 1 ora o successivo di oltre 5 minuti viene rifiutato.
Acquisire eventi in batch
Invia fino a 1.000 eventi in una singola request. Questo esempio utilizza gli import dell’esempio precedente:Gestione degli errori
L’SDK genera unchecked exception. In caso di error status, genera una sottoclasse diDodoPaymentsServiceException, che dispone di statusCode(), headers() e body(). Intercetta le classi specifiche che vuoi gestire prima della base class:
UnexpectedStatusCodeException. Gli errori di rete generano DodoPaymentsIoException, mentre le response che l’SDK non riesce a interpretare generano DodoPaymentsInvalidDataException. Tutte queste classi estendono DodoPaymentsException.
Operazioni asincrone
Chiamaasync() sul client per ottenere un client asincrono. I suoi metodi restituiscono un CompletableFuture:
DodoPaymentsOkHttpClientAsync.fromEnv().
Integrazione con Spring Boot
Classe di configurazione
Registra un client come bean e scegli l’ambiente tramite una property:Service layer
Inietta il client in un service:Risorse
GitHub Repository
Codice sorgente, release ed elenco completo dei metodi.
API Reference
Ogni endpoint, parametro e response.
Discord Community
Fai domande e parla con altri developer.
Report Issues
Segnala bug o richiedi funzionalità.
Supporto
Per ricevere assistenza sul Java SDK:- Discord: unisciti al server della community per ricevere assistenza in tempo reale.
- Email: contatta support@dodopayments.com.
- GitHub: apri una issue nel repository.