Skip to main content
Modulen @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 @dodopayments/nuxt i arrayen modules och mappa dina autentiseringsuppgifter till runtimeConfig:
nuxt.config.ts
Ange dessa miljövariabler, till exempel i en .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ö.
Checka aldrig in din .env-fil eller hemligheter i versionshanteringen.

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.
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".
Skapa en GET-rutt för statisk checkout:
checkout.post.ts tillhandahåller ett POST-flöde. Använd antingen exemplet med dynamisk checkout eller exemplet med checkout-session:
Om productId saknas eller är ogiltig returnerar hanteraren ett 400-svar.
Testa rutterna genom att skicka dessa requests:

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:

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.
Hanteraren lägger till returnUrl från sin konfiguration i länken som redirect_url.
Om productId saknas returnerar hanteraren ett 400-svar. Ogiltiga query-parametrar och produkt-ID:n som inte finns returnerar också 400.

Svarsformat

Statisk checkout returnerar ett JSON-svar med checkout-URL:en. I testläge använder URL:en test.checkout.dodopayments.com.
Dynamisk checkout proxar de föråldrade endpointsen POST /payments och POST /subscriptions. Den fortsätter att fungera för befintliga integrationer, men nya integrationer bör använda checkout-sessioner.

Svarsformat

Dynamisk checkout returnerar ett JSON-svar med checkout-URL:en:
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.
Hanteraren kontrollerar inte vem som anropar den. Alla som skickar en request med ett kund-ID får åtkomst till den kundens portal. Skydda rutten med din egen autentisering och skicka endast den inloggade användarens kund-ID.

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.
Från @dodopayments/nuxt 0.2.11 returnerar hanteraren HTTP 400 om customer_id saknas och HTTP 500 om portalsessionen inte kan skapas. Tidigare versioner returnerar HTTP 200 med JSON-innehållet { "status": 400, "body": "Missing customer_id in query parameters" }. Uppgradera till 0.2.11 eller senare om du vill förlita dig på HTTP-statusen.

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-timestamp och webhook-signature med webhookKey enligt 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 onPayload för varje händelse, därefter hanteraren för händelsetypen, och returnerar 200.
Adaptern fångar inte upp fel som kastas i dina hanterare. De propagerar till Nuxt och requesten misslyckas.

Webhook-händelsehanterare som stöds

Varje hanterare tar emot den verifierade payloaden för sin händelsetyp:
Se Webhook Event Guide för information om vad varje händelse innebär.

Prompt för LLM

Kopiera den här prompten till din AI-kodningsassistent för att lägga till modulen i projektet. Om du även vill ge din agent Dodo Payments-dokumentationen och färdigheterna installerar du Agent Plugin.
Senast ändrad 26 september 2026