@dodopayments/astro fornisce al tuo progetto Astro tre gestori di endpoint. Checkout restituisce URL di checkout, CustomerPortal indirizza un cliente al Customer Portal e Webhooks verifica gli eventi webhook e li inoltra al tuo codice.
Checkout Handler
Crea URL di checkout con flussi statici, dinamici e di checkout session.
Customer Portal
Consenti ai clienti di gestire i propri abbonamenti e dati.
Webhooks
Ricevi ed elabora gli eventi webhook di Dodo Payments.
Installazione
1
Install the Package
Esegui questo comando nella directory principale del progetto:Il pacchetto elenca Astro 4 o 5 e
zod 3.25 o versioni successive come peer dependencies.2
Set Up Environment Variables
Crea un file
.env nella directory principale del progetto. Crea la API key in Developer → API Keys. Aggiungi il tuo endpoint webhook in Developer → Webhooks e copia il suo Signing secret in DODO_PAYMENTS_WEBHOOK_KEY:DODO_PAYMENTS_RETURN_URL è la destinazione dei clienti dopo il checkout. Se non specifichi un ambiente, i gestori usano live_mode. Una API key in modalità test funziona solo con test_mode.Esempi di route handler
Gli esempi sono endpoint server Astro in
src/pages/api/. Gli endpoint che chiamano Dodo Payments devono essere renderizzati on demand, quindi aggiungi un server adapter al tuo progetto Astro. Nella modalità di output predefinita static di Astro, gli endpoint vengono renderizzati durante la build; per questo ogni esempio esporta prerender = false per renderizzare invece l’endpoint a ogni richiesta.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Usa questo handler per aggiungere il checkout di Dodo Payments alla tua app. Il gestore
GET gestisce il checkout statico. Il gestore POST gestisce le checkout session oppure il checkout dinamico quando imposti type: "dynamic". Un file endpoint può esportare un solo gestore POST, quindi l’esempio di checkout dinamico presuppone che tu abbia impostato type: "dynamic".Checkout Route Handler
Il checkout handler supporta tutti e tre i modi per accettare pagamenti con Dodo Payments:- Static Payment Links: URL condivisibili che raccolgono pagamenti senza codice.
- Dynamic Payment Links: payment link generati con dati personalizzati. Usano endpoint deprecati.
- Checkout Sessions: checkout ospitato con carrello dei prodotti, dati del cliente e opzioni di personalizzazione. È il flusso consigliato.
Checkout accetta queste opzioni:
Il gestore serve il checkout statico per le richieste
GET. Per le richieste POST, crea un payment link dinamico quando type è dynamic e, in caso contrario, una checkout session.
Static Checkout (GET)
Static Checkout (GET)
Parametri di query supportati
string
obbligatorio
Identificatore del prodotto, ad esempio
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
predefinito:"1"
Quantità del prodotto.
string
Nome completo del cliente. Ignorato se vengono forniti
firstName o lastName.string
Nome del cliente.
string
Cognome del cliente.
string
Indirizzo email del cliente.
string
Paese del cliente, come codice ISO 3166-1 alpha-2.
string
Indirizzo del cliente.
string
Città del cliente.
string
Stato o provincia del cliente.
string
CAP o codice postale del cliente.
boolean
Imposta su
true per disabilitare il campo del nome completo.boolean
Imposta su
true per disabilitare il campo del nome.boolean
Imposta su
true per disabilitare il campo del cognome.boolean
Imposta su
true per disabilitare il campo email.boolean
Imposta su
true per disabilitare il campo del paese.boolean
Imposta su
true per disabilitare il campo della riga dell’indirizzo.boolean
Imposta su
true per disabilitare il campo della città.boolean
Imposta su
true per disabilitare il campo dello stato.boolean
Imposta su
true per disabilitare il campo del CAP.string
Valuta del pagamento, ad esempio
USD.boolean
predefinito:"true"
Mostra o nascondi il selettore della valuta.
number
Imposta l’importo addebitato, nelle unità principali della valuta, ad esempio
12.5 per $12.50. Funziona solo con prodotti Pay What You Want e viene ignorato se è inferiore al prezzo minimo del prodotto.boolean
predefinito:"true"
Mostra o nascondi la sezione degli sconti.
string
Qualsiasi parametro di query che inizia con
metadata_ viene passato al checkout come metadata, ad esempio metadata_orderId=123.email con disableEmail=true. Il gestore aggiunge returnUrl dalla propria configurazione al link come redirect_url.Formato della risposta
Il checkout statico restituisce una risposta JSON con l’URL di checkout. In modalità test, l’URL usatest.checkout.dodopayments.com:Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Invia i parametri come body JSON in una richiesta POST.
- Supporta sia i pagamenti una tantum sia quelli ricorrenti. Il gestore recupera il prodotto, quindi crea un abbonamento se il prodotto è ricorrente e un pagamento una tantum negli altri casi.
- Il body richiede
billing(constreet,city,state,countryezipcode) ecustomer, oltre aproduct_idoproduct_cart. Gli abbonamenti richiedonoproduct_id. - Per ogni campo del body supportato, consulta:
Formato della risposta
Il checkout dinamico restituisce una risposta JSON con il payment link come URL di checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
Le checkout session creano un checkout ospitato per acquisti una tantum e abbonamenti, con pieno controllo sulla personalizzazione.
product_cart è l’unico campo obbligatorio e richiede almeno un prodotto. Se il body non contiene return_url, il gestore usa returnUrl dalla propria configurazione.Ogni checkout_url funziona una sola volta e scade dopo 24 ore, oppure dopo 15 minuti quando passi confirm: true. Una sessione creata con payment_method_id non restituisce checkout_url, quindi il gestore risponde con 400.Per maggiori dettagli e per tutti i campi supportati, consulta la Checkout Sessions Integration Guide.Formato della risposta
Le checkout session restituiscono una risposta JSON con l’URL di checkout:Customer Portal Route Handler
Il route handler del Customer Portal crea una sessione Customer Portal per il cliente specificato e reindirizza il browser a tale sessione.CustomerPortal accetta le stesse opzioni bearerToken e environment di Checkout.
Parametri di query
string
obbligatorio
Il customer ID per la sessione del portal, ad esempio
?customer_id=cus_123.boolean
Se impostato su
true, Dodo Payments invia anche tramite email il link del portal al cliente.customer_id manca e 500 se non è possibile creare la sessione del portal.
Webhook Route Handler
Il webhook route handler verifica ogni richiesta con il tuo webhook secret, passato comewebhookKey, prima di eseguire il tuo codice:
- Method: Sono supportate solo le richieste POST. Gli altri metodi restituiscono 405.
- Signature Verification: Verifica gli header
webhook-id,webhook-timestampewebhook-signatureconwebhookKey, seguendo la specifica Standard Webhooks. Restituisce 401 se la verifica non va a buon fine. - Payload Validation: Convalida il payload con Zod. Restituisce 400 per un payload non valido.
- Error Handling:
- 401: Firma non valida
- 400: Payload non valido
- 500: Errore interno durante la verifica
- Event Routing: Chiama
onPayloadper ogni evento, quindi il gestore corrispondente al tipo di evento e restituisce 200.