Skip to main content
Il PHP SDK consente alle applicazioni PHP 8.1+ di accedere alla REST API di Dodo Payments. I metodi accettano parametri denominati, le risposte sono oggetti tipizzati e Composer carica l’SDK con l’autoloading PSR-4.

Installazione

Installa l’SDK con Composer:
L’SDK richiede PHP 8.1.0 o versioni successive e Composer. Invia le richieste tramite un client HTTP PSR-18 del tuo progetto, come Guzzle, che individua con php-http/discovery.

Avvio rapido

Crea un client, quindi crea una checkout session:
Se ometti bearerToken, il client legge la variabile d’ambiente DODO_PAYMENTS_API_KEY. Se ometti baseUrl, il client legge DODO_PAYMENTS_BASE_URL e si connette alla modalità live (https://live.dodopayments.com) se anche quella non è impostata. Una chiave API della modalità test funziona solo con l’URL della modalità test, https://test.dodopayments.com.
Conserva le chiavi API nelle variabili d’ambiente o in un secrets manager. Non esporle mai nel tuo codebase e non eseguirne il commit nel controllo versione.

Funzionalità principali

PSR-4 Compliant

Composer carica il namespace Dodopayments con l’autoloading PSR-4.

Modern PHP

Progettato per PHP 8.1 o versioni successive, con parametri tipizzati e tipi strict.

Extensive Testing

Il repository dell’SDK include una suite di test per i servizi API.

Exception Handling

Una classe di eccezione per ogni status error HTTP, oltre alle eccezioni di timeout e connessione.

Value object

I metodi accettano parametri denominati e i parametri che hanno un valore predefinito devono essere passati tramite nome. Per creare un value object, usa il suo costruttore statico with con parametri denominati:
Ogni value object dispone anche di un builder:
I metodi accettano anche array semplici con le stesse chiavi camelCase, come ["productID" => "pdt_123", "quantity" => 1]. Anche le proprietà delle risposte usano nomi camelCase, ad esempio $session->checkoutURL.

Configurazione

Il costruttore Client accetta bearerToken, webhookKey, baseUrl e requestOptions. Se li ometti, legge dall’ambiente DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (il tuo webhook signing secret) e DODO_PAYMENTS_BASE_URL. Per verificare un webhook, passa il corpo grezzo della richiesta e gli header a $client->webhooks->unwrap($body, headers: $headers). Controlla la firma con la tua webhook key, restituisce l’evento analizzato e genera WebhookException se il controllo non va a buon fine. Se ometti headers, unwrap non verifica la firma. $client->webhooks->unsafeUnwrap($body) analizza il corpo senza verificarlo, quindi usalo solo per i test. Consulta Webhooks.

Configurazione dei retry

Per impostazione predefinita, l’SDK riprova due volte in caso di alcuni errori, con un breve backoff esponenziale. Questi errori attivano un retry:
  • Errori di connessione (problemi di connettività di rete)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal errors
  • Timeout
Imposta maxRetries in requestOptions, sul client o su una singola richiesta:
Le richieste vanno in timeout dopo 60 secondi per impostazione predefinita. Per modificare il limite, imposta timeout, in secondi, nello stesso array requestOptions.

Operazioni comuni

Gli esempi di questa sezione usano $client di Quick Start.

Creare una Checkout Session

Crea una checkout session, quindi reindirizza il customer all’checkoutURL restituito:
Ogni URL di checkout funziona una sola volta e scade dopo 24 ore. Per tutte le opzioni della sessione, consulta Checkout Sessions.

Gestire i customer

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

Gestire le subscription

Crea una subscription, quindi addebitala se è una subscription on-demand.
POST /subscriptions (il metodo subscriptions->create dell’SDK) è deprecato. Funziona ancora 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. Passa AttachExistingCustomer::with(customerID: '...') per associare un customer esistente oppure NewCustomer::with(email: '...', name: '...') per crearne uno. Entrambe le classi si trovano nel namespace Dodopayments\Payments. charge è destinato alle subscription on-demand, mentre productPrice è espresso nell’unità minima della valuta.

Paginazione

I metodi di elenco restituiscono un page object. getItems() restituisce gli elementi della pagina corrente, mentre pagingEachItem() restituisce ogni elemento dalla pagina corrente in poi, richiedendo altre pagine quando necessario:
Per spostarti di una pagina alla volta, chiama hasNextPage() e getNextPage().

Gestione degli errori

Quando l’SDK non riesce a connettersi all’API o l’API restituisce uno status 4xx o 5xx, l’SDK genera una sottoclasse di Dodopayments\Core\Exceptions\APIException:

Tipi di errore

La classe di eccezione dipende dalla causa. Tutte le classi si trovano nel namespace Dodopayments\Core\Exceptions:
Intercetta queste eccezioni intorno alle chiamate API in modo che l’applicazione possa mostrare un messaggio chiaro o riprovare più tardi. In caso di errore che consente il retry, l’SDK genera l’eccezione solo dopo il fallimento dei retry automatici.

Utilizzo avanzato

Endpoint non documentati

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

Parametri non documentati

Per inviare parametri che l’SDK non definisce, passali in requestOptions:
Un parametro extra* con lo stesso nome di un parametro documentato lo sovrascrive.

Integrazione con i framework

Laravel

Inserisci il client in una service class. Questo esempio imposta l’URL API dall’ambiente configurato:
Aggiungi le impostazioni a config/services.php:

Symfony

Crea un service che riceva la chiave API tramite il costruttore:
Registra il service in config/services.yaml:

Risorse

GitHub Repository

Codice sorgente, release e elenco completo 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 PHP SDK:

Contribuire

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