Skip to main content
Il modulo @dodopayments/nuxt fornisce alla tua app Nuxt tre gestori di route server. checkoutHandler restituisce gli URL di checkout, customerPortalHandler invia il cliente al Customer Portal e Webhooks verifica gli eventi webhook e li inoltra al tuo codice.

Checkout API Route

Crea URL di checkout da una server route di Nuxt.

Customer Portal API Route

Consenti ai clienti di gestire i propri abbonamenti e dettagli da una server route di Nuxt.

Webhooks API Route

Ricevi e verifica gli eventi webhook di Dodo Payments in Nuxt.

Panoramica

Il modulo registra i propri gestori come auto-import Nuxt server, quindi le tue route server chiamano checkoutHandler, customerPortalHandler e Webhooks senza istruzioni di importazione. Ogni route legge le tue credenziali da runtimeConfig. Nuxt espone al browser solo runtimeConfig.public, quindi la chiave API e il segreto webhook restano sul server.

Installazione

1

Install the Nuxt Module

Esegui questo comando nella directory principale del progetto:
Il modulo elenca Nuxt 3 (3.13.1 o versioni successive) e zod 3.25 o versioni successive come peer dependency.
2

Register the Module in nuxt.config.ts

Aggiungi @dodopayments/nuxt al tuo array modules e associa le tue credenziali a runtimeConfig:
nuxt.config.ts
Imposta queste variabili d’ambiente, ad esempio in un file .env nella directory principale del progetto:Un server Nuxt compilato non legge il tuo file .env. In fase di esecuzione, Nuxt sovrascrive un valore runtimeConfig solo dalla variabile che corrisponde al relativo percorso, ad esempio NUXT_PRIVATE_RETURN_URL per private.returnUrl; quindi imposta queste variabili anche nell’ambiente di hosting.
Non eseguire mai il commit del file .env o dei segreti nel controllo versione.

Esempi di gestori per le API route

Gli esempi creano route server nella directory server/routes/api/. Nuxt assegna le route ai file in base al nome e al suffisso del metodo, quindi checkout.get.ts gestisce GET /api/checkout.
Usa questo gestore per aggiungere il checkout di Dodo Payments alla tua app Nuxt. Una route GET fornisce il checkout statico. Una route POST fornisce le sessioni di checkout o il checkout dinamico quando imposti type: "dynamic".
Crea una route GET per il checkout statico:
checkout.post.ts fornisce un flusso POST. Usa l’esempio del checkout dinamico oppure quello della sessione di checkout:
Se productId manca o non ĆØ valido, il gestore restituisce una risposta 400.
Per testare le route, invia queste richieste:

Gestore della route di checkout

Il gestore del checkout supporta tutti e tre i modi per accettare pagamenti con Dodo Payments:
  • Link di pagamento statici: URL condivisibili che raccolgono pagamenti senza codice.
  • Link di pagamento dinamici: link di pagamento generati con dettagli personalizzati. Usano endpoint deprecati.
  • Sessioni di checkout: checkout ospitato con carrello dei prodotti, dati del cliente e opzioni di personalizzazione. ƈ il flusso consigliato.
checkoutHandler accetta queste opzioni:

Parametri della 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
Riga dell’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 i 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 della query che inizia con metadata_ viene passato come metadato.
Il gestore aggiunge returnUrl dalla propria configurazione al link come redirect_url.
Se productId manca, il gestore restituisce una risposta 400. Anche i parametri della query non validi e gli ID prodotto inesistenti restituiscono 400.

Formato della risposta

Il checkout statico restituisce una risposta JSON con l’URL di checkout. In modalitĆ  test, l’URL usa test.checkout.dodopayments.com.
Il checkout dinamico inoltra le richieste agli endpoint deprecati POST /payments e POST /subscriptions. Continua a funzionare per le integrazioni esistenti, ma le nuove integrazioni dovrebbero usare le sessioni di checkout.

Formato della risposta

Il checkout dinamico restituisce una risposta JSON con l’URL di checkout:
Le sessioni di checkout creano un checkout ospitato per acquisti una tantum e abbonamenti, con pieno controllo sulla personalizzazione. product_cart ĆØ l’unico campo obbligatorio. Se il corpo non contiene return_url, il gestore usa returnUrl dalla propria configurazione.Per maggiori dettagli e per tutti i campi supportati, consulta la Guida all’integrazione delle sessioni di checkout.Una sessione creata con payment_method_id non restituisce alcun URL di checkout, quindi il gestore risponde con 400. Per addebitare un metodo di pagamento salvato, crea la sessione con l’SDK.

Formato della risposta

Le sessioni di checkout restituiscono una risposta JSON con l’URL di checkout:

Gestore della route Customer Portal

Il gestore della route Customer Portal crea una sessione Customer Portal per il cliente specificato e reindirizza il browser a tale sessione.
Il gestore non verifica chi lo sta chiamando. Chiunque lo richieda con un ID cliente ottiene il portale di quel cliente. Proteggi la route con la tua autenticazione e passa solo l’ID cliente dell’utente che ha effettuato l’accesso.

Parametri della query

string
obbligatorio
L’ID cliente per la sessione del portale, ad esempio ?customer_id=cus_123.
boolean
Se impostato su true, Dodo Payments invia anche tramite email il link del portale al cliente.
A partire da @dodopayments/nuxt 0.2.11, l’handler restituisce HTTP 400 se customer_id ĆØ mancante e HTTP 500 se non ĆØ possibile creare la sessione del portale. Le versioni precedenti restituiscono HTTP 200 con il corpo JSON { "status": 400, "body": "Missing customer_id in query parameters" }. Per fare affidamento sullo stato HTTP, esegui l’upgrade alla versione 0.2.11 o successiva.

Gestore della route webhook

Il gestore della route webhook verifica ogni richiesta prima di eseguire il tuo codice:
  • Metodo: sono supportate solo le richieste POST. Gli altri metodi restituiscono 405.
  • Verifica della firma: verifica il corpo grezzo della richiesta e gli header webhook-id, webhook-timestamp e webhook-signature con webhookKey, in conformitĆ  alla specifica Standard Webhooks. Restituisce 401 se la verifica fallisce.
  • Convalida del payload: convalida il payload con Zod. Restituisce 400 per un payload non valido.
  • Gestione degli errori:
    • 401: firma non valida
    • 400: payload non valido
    • 500: errore interno durante la verifica
  • Instradamento degli eventi: chiama onPayload per ogni evento, quindi il gestore per il tipo di evento, e restituisce 200.
L’adapter non intercetta gli errori generati dai tuoi gestori. Gli errori vengono propagati a Nuxt e la richiesta fallisce.

Gestori degli eventi webhook supportati

Ogni gestore riceve il payload verificato per il relativo tipo di evento:
Per sapere cosa significa ogni evento, consulta la Guida agli eventi webhook.

Prompt per LLM

Copia questo prompt nel tuo assistente di programmazione AI per aggiungere il modulo al progetto. Per fornire al tuo agente anche la documentazione e le competenze di Dodo Payments, installa l’Agent Plugin.
Ultima modifica il 28 settembre 2026