@dodopayments/nextjs ger ditt Next.js App Router-projekt tre route handlers. Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-händelser och skickar dem vidare till din kod. Paketet stöder Next.js 14, 15 och 16.
Checkout Handler
Skapa checkout-URL:er med statiska, dynamiska och checkout session-flöden.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Ta emot och bearbeta Dodo Payments webhook-händelser.
Installation
1
Install the Package
Kör det här kommandot i projektets rotkatalog:Paketet kräver även Zod 3.25 eller Zod 4 som peer dependency.
2
Set Up Environment Variables
Skapa en fil med namnet
.env i projektets rotkatalog. Skapa API-nyckeln under Developer → API Keys och webhook-hemligheten under Developer → Webhooks i dashboarden:DODO_PAYMENTS_RETURN_URL är den sida som kunder kommer till efter checkout. Om du inte anger en miljö använder handlers live_mode.Exempel på route handlers
Alla exempel förutsätter att du använder Next.js App Router.
- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Använd den här handlern för att lägga till Dodo Payments checkout i din app. En
GET-handler hanterar statisk checkout. En POST-handler hanterar checkout sessions, eller dynamisk checkout när du anger type: "dynamic".Checkout route handler
Checkout-handlern stöder alla tre sätt att ta betalt 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 sessions: Hosted checkout med en produktvarukorg, kunduppgifter och anpassningsalternativ. Detta är det rekommenderade flödet.
Static Checkout (GET)
Static Checkout (GET)
Parametrar som stöds
string
obligatorisk
Produktidentifierare, till exempel
?productId=pdt_123.integer
standard:"1"
Produktens antal.
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 landsfältet.boolean
Ange
true för att inaktivera fältet för adressrad.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 rabattsektionen.
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-begäran.
- Stöder både engångsbetalningar och återkommande betalningar.
billingochcustomerkrävs.- Information om alla body-fält som stöds finns i:
Svarsformat
Dynamisk checkout returnerar ett JSON-svar med checkout-URL:en:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout sessions 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 bodyn inte innehåller return_url använder handlern returnUrl från sin konfiguration.Mer information och alla fält som stöds finns i Checkout Sessions Integration Guide.En session som skapats med payment_method_id returnerar ingen checkout-URL, så handlern svarar med 400. Om du vill debitera en sparad betalningsmetod skapar du sessionen med SDK:n i stället.Svarsformat
Checkout sessions returnerar ett JSON-svar med checkout-URL:en:Customer Portal route handler
Customer Portal route handler 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 den anges som
true skickar Dodo Payments även portalens länk till kunden via e-post.customer_id saknas och 500 om portalsessionen inte kan skapas.
Webhook route handler
Webhook route handler verifierar varje begäran innan din kod körs:- Metod: Endast POST-begäranden stöds. Andra metoder returnerar 405.
- Signaturverifiering: Verifierar den råa request-bodyn mot headers
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKey. Returnerar 401 om verifieringen misslyckas. - Validering av payload: Tolkar den verifierade bodyn som JSON och validerar den med Zod. Returnerar 400 när en tolkad payload inte följer webhook-schemat.
- Felhantering:
- 401: Ogiltig signatur
- 400: Ogiltig payload
- 500: Oväntade verifieringsfel, felaktig JSON eller fel som kastas av dina callbacks
- Event-routing: Anropar
onPayloadför varje event, sedan handlern för eventets typ, och returnerar 200.