Skip to main content
Paketet @dodopayments/remix ger din Remix-app tre request-hanterare. Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-händelser och dirigerar dem till din kod. Varje hanterare tar emot en Request och returnerar en Response, så du anropar den från en routes loader eller action.

Checkout Handler

Skapa checkout-URL:er från din Remix-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 anger Remix 2 (remix 2.16.8 eller senare) och zod 3.25 eller senare som peer dependencies.
2

Set Up Environment Variables

Skapa en .env-fil i projektets rotkatalog:
Skapa API-nyckeln under Developer → API Keys. Lägg till din webhook endpoint under Developer → Webhooks och kopiera dess signing secret till DODO_PAYMENTS_WEBHOOK_KEY. DODO_PAYMENTS_RETURN_URL är platsen dit kunder kommer efter checkout. Om du inte anger en environment använder hanterarna live_mode.
Committera aldrig din .env-fil eller secrets till versionshantering.

Exempel på route-hanterare

Exemplen är Remix resource routes, som exporterar en loader för GET requests eller en action för POST requests och ingen component. Med flat file routes tillhandahåller app/routes/api.checkout.tsx /api/checkout.
Använd den här hanteraren för att lägga till Dodo Payments checkout i din Remix-app. loader tillhandahåller statisk checkout. action tillhandahåller dynamisk checkout här. För att tillhandahålla checkout sessions, det rekommenderade flödet, ska du i stället returnera checkoutSessionHandler(request) från action.
Begäran om checkout session fungerar när action returnerar checkoutSessionHandler(request).

Checkout route-hanterare

Checkout-hanteraren stöder alla tre sätt att ta betalt med Dodo Payments:
  • Static Payment Links: Delningsbara URL:er som tar emot betalningar utan kod.
  • Dynamic Payment Links: Payment links som du genererar med anpassade uppgifter. De använder deprecated endpoints.
  • Checkout Sessions: Hosted checkout med en produktvarukorg, kunduppgifter och anpassningsalternativ. Detta är det rekommenderade flödet.
Checkout tar emot följande options:

Questrängsparametrar som stöds

string
obligatorisk
Produktidentifierare, till exempel ?productId=pdt_nZuwz45WAs64n3l07zpQR.
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
Sätt till true för att inaktivera fältet för fullständigt namn.
boolean
Sätt till true för att inaktivera fältet för förnamn.
boolean
Sätt till true för att inaktivera fältet för efternamn.
boolean
Sätt till true för att inaktivera e-postfältet.
boolean
Sätt till true för att inaktivera landsfältet.
boolean
Sätt till true för att inaktivera adressfältet.
boolean
Sätt till true för att inaktivera stadsfältet.
boolean
Sätt till true för att inaktivera fältet för delstat.
boolean
Sätt till 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.
Hanteraren lägger till returnUrl från sin config 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 deprecated 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 hanteraren returnUrl från sin config.Mer information och en lista över alla fält som stöds finns i Integrationsguide för Checkout Sessions.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 sessions returnerar ett JSON-svar med checkout-URL:en:

Customer Portal route-hanterare

Customer Portal route-hanteraren skapar en Customer Portal-session för kunden du anger och omdirigerar webbläsaren dit med ett 307-svar.
Hanteraren kontrollerar inte vem som anropar den. Alla som begär den med ett customer ID får tillgång till den kundens portal. Skydda routen med din egen authentication och skicka endast den inloggade användarens customer ID.

Query-parametrar

string
obligatorisk
Customer ID för portalsessionen, till exempel ?customer_id=cus_123.
boolean
Om detta anges till 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-hanterare

Webhook route-hanteraren verifierar varje request innan din kod körs:
  • Method: Endast POST requests stöds. Andra metoder returnerar 405.
  • Signature Verification: Verifierar den råa request bodyn och headers webhook-id, webhook-timestamp och webhook-signature med webhookKey enligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas.
  • Payload Validation: Validerar payloaden med Zod. Returnerar 400 för en ogiltig payload.
  • Error Handling:
    • 401: Ogiltig signatur
    • 400: Ogiltig payload
    • 500: Internt fel under verifieringen
  • Event Routing: 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 propageras till Remix och requesten misslyckas.

Webhook event-hanterare som stöds

Varje hanterare tar emot den verifierade payloaden för sin händelsetyp:
Se guiden för Webhook Events för information om vad varje händelse betyder.

Prompt för LLM

Kopiera den här prompten till din AI coding assistant för att få den att lägga till adaptern i ditt projekt. Om du även vill ge din agent Dodo Payments-dokumentationen och skills installerar du Agent Plugin.
Senast ändrad 26 september 2026