@dodopayments/nuxt ger din Nuxt-app tre serverrout-hanterare. checkoutHandler returnerar checkout-URL:er, customerPortalHandler skickar en kund till Customer Portal och Webhooks verifierar webhook-händelser och dirigerar dem till din kod.
Checkout API Route
Skapa checkout-URL:er från en Nuxt-serverrutt.
Customer Portal API Route
Låt kunder hantera sina prenumerationer och uppgifter från en Nuxt-serverrutt.
Webhooks API Route
Ta emot och verifiera webhook-händelser från Dodo Payments i Nuxt.
Översikt
Modulen registrerar sina hanterare som automatiskt importerade Nuxt-servermoduler, så dina serverrutter anropar
checkoutHandler, customerPortalHandler och Webhooks utan import-satser. Varje rutt läser dina autentiseringsuppgifter från runtimeConfig. Nuxt exponerar endast runtimeConfig.public för webbläsaren, så API-nyckeln och webhook-hemligheten förblir på servern.Installation
1
Install the Nuxt Module
Kör det här kommandot i projektets rotkatalog:Modulen anger Nuxt 3 (3.13.1 eller senare) och
zod 3.25 eller senare som peer dependencies.2
Register the Module in nuxt.config.ts
Lägg till Ange dessa miljövariabler, till exempel i en
@dodopayments/nuxt i arrayen modules och mappa dina autentiseringsuppgifter till runtimeConfig:nuxt.config.ts
.env-fil i projektets rotkatalog:En byggd Nuxt-server läser inte din
.env-fil. Vid körning åsidosätter Nuxt ett värde i runtimeConfig endast från variabeln som motsvarar dess sökväg, till exempel NUXT_PRIVATE_RETURN_URL för private.returnUrl. Ange därför även dessa variabler i din hostingmiljö.Exempel på API-rout-hanterare
Exemplen skapar serverrutter i katalogen
server/routes/api/. Nuxt routar varje fil efter dess namn och metodsuffix, så checkout.get.ts hanterar GET /api/checkout.- Checkout API Route
- Customer Portal API Route
- Webhook API Route
Använd den här hanteraren för att lägga till Dodo Payments checkout i din Nuxt-app. En GET-rutt tillhandahåller statisk checkout. En POST-rutt tillhandahåller checkout-sessioner eller dynamisk checkout när du anger
type: "dynamic".checkout.post.ts tillhandahåller ett POST-flöde. Använd antingen exemplet med dynamisk checkout eller exemplet med checkout-session:Checkout-rout-hanterare
Checkout-hanteraren stöder alla tre sätten att ta emot betalningar med Dodo Payments:- Statiska betalningslänkar: Delbara URL:er som samlar in betalningar utan kod.
- Dynamiska betalningslänkar: Betalningslänkar som du genererar med anpassade uppgifter. De använder föråldrade endpoints.
- Checkout-sessioner: Hosted checkout med en produktvagn, kunduppgifter och anpassningsalternativ. Detta är det rekommenderade flödet.
checkoutHandler tar emot dessa alternativ:
Static Checkout (GET)
Static Checkout (GET)
Exempel på query-parametrar
string
obligatorisk
Produktidentifierare, till exempel
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
standard:"1"
Produktens kvantitet.
string
Kundens fullständiga namn. Ignoreras om
firstName eller lastName anges.string
Kundens förnamn.
string
Kundens efternamn.
string
Kundens e-postadress.
string
Kundens land som en ISO 3166-1 alpha-2-kod.
string
Kundens adressrad.
string
Kundens stad.
string
Kundens delstat eller provins.
string
Kundens ZIP- eller postnummer.
boolean
Ange
true för att inaktivera fältet för fullständigt namn.boolean
Ange
true för att inaktivera fältet för förnamn.boolean
Ange
true för att inaktivera fältet för efternamn.boolean
Ange
true för att inaktivera e-postfältet.boolean
Ange
true för att inaktivera landfältet.boolean
Ange
true för att inaktivera adressfältet.boolean
Ange
true för att inaktivera stadsfältet.boolean
Ange
true för att inaktivera fältet för delstat.boolean
Ange
true för att inaktivera ZIP-kodfältet.string
Betalningsvaluta, till exempel
USD.boolean
standard:"true"
Visa eller dölj valutaväljaren.
number
Fastställer det debiterade beloppet i större valutaenheter, till exempel
12.5 för $12.50. Fungerar endast med Pay What You Want-produkter och ignoreras om beloppet understiger produktens minimipris.boolean
standard:"true"
Visa eller dölj avsnittet för rabatter.
string
Alla query-parametrar som börjar med
metadata_ skickas som metadata.returnUrl från sin konfiguration i länken som redirect_url.Svarsformat
Statisk checkout returnerar ett JSON-svar med checkout-URL:en. I testläge använder URL:entest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Skicka parametrarna som en JSON-body i en POST-request.
- Stöder både engångsbetalningar och återkommande betalningar.
billingochcustomerkrävs.- Se följande för alla body-fält som stöds:
Svarsformat
Dynamisk checkout returnerar ett JSON-svar med checkout-URL:en:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout-sessioner skapar en hosted checkout för engångsköp och prenumerationer, med full kontroll över anpassningen.
product_cart är det enda obligatoriska fältet. Om bodyt inte innehåller return_url använder hanteraren returnUrl från sin konfiguration.Se Checkout Sessions Integration Guide för mer information och alla fält som stöds.En session som skapats med payment_method_id returnerar ingen checkout-URL, så hanteraren svarar med 400. Om du vill debitera en sparad betalningsmetod skapar du sessionen med SDK:t i stället.Svarsformat
Checkout-sessioner returnerar ett JSON-svar med checkout-URL:en:Customer Portal-rout-hanterare
Customer Portal-rout-hanteraren skapar en Customer Portal-session för kunden du anger och omdirigerar webbläsaren dit.Query-parametrar
string
obligatorisk
Kund-ID:t för portalsessionen, till exempel
?customer_id=cus_123.boolean
Om värdet är
true skickar Dodo Payments även portal-länken via e-post till kunden.Webhook-rout-hanterare
Webhook-rout-hanteraren verifierar varje request innan din kod körs:- Metod: Endast POST-requests stöds. Andra metoder returnerar 405.
- Signaturverifiering: Verifierar den råa request-body:n och headerarna
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKeyenligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas. - Payload-validering: Validerar payloaden med Zod. Returnerar 400 för en ogiltig payload.
- Felhantering:
- 401: Ogiltig signatur
- 400: Ogiltig payload
- 500: Internt fel under verifieringen
- Händelsedirigering: Anropar
onPayloadför varje händelse, därefter hanteraren för händelsetypen, och returnerar 200.