Skip to main content
Paketet @dodopayments/sveltekit ger din SvelteKit-app tre route handlers. Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-händelser och dirigerar dem till din kod.

Checkout Handler

Skapa checkout-URL:er från din SvelteKit-app.

Customer Portal

Låt kunder hantera sina prenumerationer och uppgifter.

Webhooks

Ta emot och verifiera Dodo Payments webhook-händelser.

Installation

1

Install the Package

Kör det här kommandot i projektets rotkatalog:
Paketet listar SvelteKit 2 (@sveltejs/kit 2.20.3 eller senare) och zod 3.25 eller senare som peer dependencies.
2

Set Up Environment Variables

Skapa en fil med namnet .env i projektets rotkatalog:
Skapa API-nyckeln under Developer → API Keys. Lägg till din webhook-endpoint under Developer → Webhooks och kopiera dess signeringshemlighet till DODO_PAYMENTS_WEBHOOK_KEY. DODO_PAYMENTS_RETURN_URL är den plats kunder skickas till efter checkout. Om du inte anger en miljö använder handlers live_mode.
Lägg aldrig till filen .env eller hemligheter i versionshanteringen.

Exempel på route handlers

Exemplen är SvelteKit +server.ts-endpoints under src/routes/api/. De importerar dina autentiseringsuppgifter från $env/static/private, som SvelteKit håller utanför klientkoden.
Använd denna handler för att lägga till Dodo Payments checkout i din SvelteKit-app. Checkout returnerar en GET-handler för statisk checkout och en POST-handler för checkout sessions, eller för dynamisk checkout när du anger type: "dynamic". Exportera GET från en handler som skapats med type: "static" eller utan type, eftersom GET-handlern för en session- eller dynamic-handler returnerar 400.
Den dynamiska checkout-begäran fungerar när POST kommer från en handler som skapats med type: "dynamic". Med type: "session", som i route-exemplet, skickar du begäran om checkout session.

Checkout route handler

Checkout-handlern stöder alla tre sätt att ta betalt med Dodo Payments:
  • Statiska Payment Links: Delbara URL:er som tar emot betalningar utan kod.
  • Dynamiska Payment Links: Payment links 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.
Checkout tar emot följande alternativ:

Parametrar som stöds

string
obligatorisk
Produktidentifierare, till exempel ?productId=pdt_nZuwz45WAs64n3l07zpQR.
integer
standard:"1"
Antalet produkter.
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 ort.
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örnamnsfältet.
boolean
Ange true för att inaktivera efternamnsfältet.
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 adressfältet.
boolean
Ange true för att inaktivera ortsfältet.
boolean
Ange true för att inaktivera delstatsfältet.
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
Fixerar 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.
Handlern lägger till returnUrl från sin konfiguration i länken som redirect_url.
Om productId saknas returnerar handlern 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 fungerar som proxy för de föråldrade POST /payments- och POST /subscriptions-endpoints. Den fortsätter att fungera för befintliga integrationer, men nya integrationer bör använda checkout sessions.

Svarsformat

Dynamisk checkout returnerar ett JSON-svar med checkout-URL:en:
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:t 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 med ett 302-svar.
Handlern kontrollerar inte vem som anropar den. Alla som begär den med ett kund-ID får den kundens portal. Skydda routen 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 till kunden via e-post.
Returnerar 400 om 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 samt headers webhook-id, webhook-timestamp och webhook-signature med webhookKey enligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas.
  • Validering av payload: Validerar payloaden med Zod. Returnerar 400 för en ogiltig payload.
  • Felhantering:
    • 401: Ogiltig signatur
    • 400: Ogiltig payload
    • 500: Internt fel under verifieringen
  • Event routing: Anropar onPayload för varje händelse, sedan handlern för händelsetypen, och returnerar 200.
Adaptern fångar inte fel som kastas i dina handlers. De propageras till SvelteKit och begäran misslyckas.

Webhook-event handlers som stöds

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

Prompt för LLM

Kopiera denna prompt till din AI-kodningsassistent för att lägga till adaptern i ditt projekt. Om du även vill ge din agent Dodo Payments-dokumentationen och färdigheterna installerar du Agent Plugin.
Senast ändrad 26 september 2026