@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 Skapa API-nyckeln under Developer → API Keys. Lägg till din webhook-endpoint under Developer → Webhooks och kopiera dess signeringshemlighet till
.env i projektets rotkatalog: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.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.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
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.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:
Static Checkout (GET)
Static Checkout (GET)
Parametrar som stöds
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.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)
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: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.Query-parametrar
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-timestampochwebhook-signaturemedwebhookKeyenligt 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
onPayloadför varje händelse, sedan handlern för händelsetypen, och returnerar 200.