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: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.
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 staticowith con parametri denominati:
["productID" => "pdt_123", "quantity" => 1]. Anche le proprietà delle risposte usano nomi camelCase, ad esempio $session->checkoutURL.
Configurazione
Il costruttoreClient 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
maxRetries in requestOptions, sul client o su una singola richiesta:
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:
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.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:
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 diDodopayments\Core\Exceptions\APIException:
Tipi di errore
La classe di eccezione dipende dalla causa. Tutte le classi si trovano nel namespaceDodopayments\Core\Exceptions:
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 inrequestOptions:
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:config/services.php:
Symfony
Crea un service che riceva la chiave API tramite il costruttore: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:- Discord: Unisciti al server della community per ricevere assistenza in tempo reale.
- Email: Contatta support@dodopayments.com.
- GitHub: Apri una issue nel repository.