@dodopayments/convex aggiunge Dodo Payments al tuo backend Convex. Fornisce una funzione checkout che crea sessioni di checkout, una funzione customerPortal che apre il Customer Portal per l’utente autenticato e createDodoWebhookHandler, che verifica i webhook in un’azione HTTP Convex. Richiede Convex 1.26 o versioni successive.
Checkout Function
Crea sessioni di checkout dalle azioni Convex.
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 root del progetto:
2
Add Component to Convex Config
Aggiungi il componente Dodo Payments alla configurazione Convex:Dopo aver modificato
convex.config.ts, esegui una volta npx convex dev per generare i tipi.3
Set Up Environment Variables
Imposta le variabili d’ambiente nella dashboard Convex, in Settings → Environment Variables. Per aprire la dashboard, esegui:Aggiungi queste variabili d’ambiente:
DODO_PAYMENTS_API_KEY: la tua chiave API Dodo Payments, disponibile in Developer → API Keys nella dashboard Dodo Payments.DODO_PAYMENTS_ENVIRONMENT:test_modeoppurelive_mode.DODO_PAYMENTS_WEBHOOK_SECRET: il tuo secret webhook, disponibile in Developer → Webhooks. Obbligatorio per la gestione dei webhook. L’handler dei webhook legge esattamente questo nome di variabile.
Esempi di configurazione del componente
1
Create Internal Query
Crea una query interna che trovi un cliente nel database tramite l’ID di autenticazione. La funzione
identify del passaggio successivo la usa per ottenere l’ID cliente Dodo Payments dell’utente autenticato per il customer portal.2
Configure DodoPayments Component
Crea il client.
identify associa l’utente Convex autenticato a un ID cliente Dodo Payments. Restituisce null se nessun utente è autenticato o se non viene trovato alcun cliente corrispondente.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
Usa questa funzione per aggiungere il checkout Dodo Payments alla tua app Convex. Crea una sessione di checkout dai campi accettati dal validator del payload di checkout del componente.
Funzione di checkout
Il componente Convex crea sessioni di checkout, il flusso di checkout consigliato per tutti i pagamenti. Una sessione contiene il carrello dei prodotti, i dati del cliente e le opzioni di checkout.Utilizzo
Chiamacheckout da un’azione Convex, specificando i campi della sessione di checkout in payload:
checkout non chiama identify. Per associare un cliente esistente, passa customer: { customer_id } nel payload. Per ulteriori dettagli e per un elenco completo dei campi supportati, consulta Checkout Sessions.
Una sessione creata con payment_method_id non restituisce alcun URL di checkout, quindi checkout genera un errore in questo caso.
Formato della risposta
La funzione di checkout restituisce un oggetto con l’URL di checkout:Funzione Customer Portal
La funzione customer portal restituisce un URL Customer Portal per l’utente autenticato.Utilizzo
portal_url.
Parametri
boolean
predefinito:"false"
Se impostato su
true, Dodo Payments invia anche tramite email il link al portal al cliente.customerPortal ottiene il cliente dalla funzione identify nella configurazione DodoPayments, che deve restituire dodoCustomerId del cliente. Se identify restituisce null, customerPortal genera un errore User is not authenticated..Handler webhook
createDodoWebhookHandler verifica ogni richiesta prima di eseguire il tuo codice:
- Metodo: registra la route con
method: "POST". Le richieste con altri metodi non raggiungono l’handler. - Verifica della firma: verifica la firma Standard Webhooks usando la variabile d’ambiente
DODO_PAYMENTS_WEBHOOK_SECRET. Restituisce 400 se la verifica non riesce. - Validazione del payload: validato con Zod. Restituisce 400 per i payload non validi.
- Gestione degli errori:
- 400: firma non valida, payload non valido o errore generato da uno dei tuoi handler
- 200: tutti gli handler hanno terminato l’esecuzione
- Se
DODO_PAYMENTS_WEBHOOK_SECRETnon è impostata, l’handler genera un errore e la richiesta non va a buon fine.
- Routing degli eventi: chiama
onPayloadper ogni evento, quindi l’handler per il tipo di evento.
Handler degli eventi webhook supportati
Ogni handler riceveActionCtx di Convex e il payload verificato per il relativo tipo di evento:
Utilizzo nel frontend
Chiama le azioni di checkout e del portal dai tuoi componenti React con l’hookuseAction da convex/react.