Skip to main content

Overview

Better Auth-adaptern, @dodopayments/better-auth, är en Better Auth-plugin som kopplar dina användare till Dodo Payments. Den tillhandahåller:
  • Valfritt skapande av kunder eller kundkoppling via e-post vid registrering
  • Checkout-sessioner, den rekommenderade checkout-metoden, med mappning av produkt-slugs
  • En självbetjäningsportal i Customer Portal
  • Endpoints för insamling och rapportering av användning för usage-based billing
  • Bearbetning av webhook-händelser med signaturverifiering
  • TypeScript-typer för varje endpoint
You need a Dodo Payments account and API keys to use this integration.

Prerequisites

  • Node.js 16 eller senare
  • Åtkomst till din Dodo Payments-dashboard
  • Ett befintligt projekt som använder Better Auth 1.4 eller en senare 1.x-version

Installation

1

Install Dependencies

Kör det här kommandot i projektets rotkatalog:
Adaptern, Dodo Payments SDK, Better Auth och Zod installeras.

Setup

1

Configure Environment Variables

Lägg till dessa variabler i din .env-fil. Skapa API-nyckeln under Developer → API Keys i dashboarden. Du får webhook-hemligheten när du lägger till webhook-endpointen, enligt beskrivningen under Webhooks på den här sidan. BETTER_AUTH_SECRET är en slumpmässig sträng på minst 32 tecken.
Never commit API keys or secrets to version control.
2

Set Up Server-Side Integration

Skapa eller uppdatera src/lib/auth.ts:
Pluginen lägger till fältet dodoCustomerId i Better Auth-tabellen user, där varje användares Dodo Payments-kund-ID lagras. När du har lagt till pluginen uppdaterar du databasschemat med Better Auth CLI.
Ange environment till live_mode för production.
3

Set Up Client-Side Integration

Skapa eller uppdatera src/lib/auth-client.ts:

Användningsexempel

Använd authClient.dodopayments.checkoutSession för nya integrationer. Den äldre metoden checkout är föråldrad och behålls endast för bakåt- kompatibilitet.

Skapa en checkout-session (rekommenderas)

Skapa en checkout-session från en konfigurerad slug eller från en produktvarukorg och omdirigera sedan kunden till den returnerade URL:en:
checkoutSession fyller i vissa fält åt dig:
  • Faktureringsadress: Behöver inte anges i förväg eftersom checkout samlar in den från kunden. Om du vill förifylla den skickar du billing_address.
  • Kund: För en inloggad användare använder pluginen e-postadressen och namnet från användarens Better Auth-session och ignorerar alla customer-objekt som du skickar. Utan en inloggad användare används customer-objektet.
  • Övriga fält: Argumentet accepterar samma fält som request body för endpointen Create Checkout Session, samt slug och referenceId.
Om sluggen inte är konfigurerad, eller om du varken skickar slug eller product_cart, misslyckas begäran med ett 400-fel.
Return URL hämtas från successUrl som konfigurerats i server-pluginen, och löses mot appens URL. Pluginen ignorerar alla return_url i client payload.

Äldre checkout (föråldrad)

Metoden authClient.dodopayments.checkout är föråldrad. Använd checkoutSession i stället för nya implementationer.
Den äldre metoden kräver billing och customer och skapar en betalningslänk via det föråldrade dynamiska checkout-flödet. Fält som du anger i customer åsidosätter e-postadressen och namnet från sessionen.

Åtkomst till Customer Portal

Portal-endpoints kräver en inloggad användare med en verifierad e-postadress. Om användaren ännu inte har någon Dodo Payments-kund hittar pluginen en via e-post eller skapar en. INLINE_CODE_PLACEHOLDER_baf0df18400b3e6_END returnerar portalens URL:

Lista kunddata

Lista den inloggade kundens prenumerationer och betalningar. page börjar på 1 och status filtrerar resultaten:

Spåra mätbaserad användning

Aktivera usage()-pluginen på servern för att registrera användningshändelser för usage-based billing och låta kunder se sin användning. Båda metoderna kräver en inloggad användare med en verifierad e-postadress.
  • authClient.dodopayments.usage.ingest registrerar en händelse för den inloggade användaren.
  • authClient.dodopayments.usage.meters.list listar den inloggade kundens användningshändelser. Den accepterar query-parametrarna page_number, page_size, event_name, meter_id, start och end.
Dodo Payments avvisar händelser med tidsstämplar som ligger mer än en timme bakåt eller mer än fem minuter framåt i tiden.
Om du utelämnar meter_id innehåller listan alla kundens användningshändelser. Med meter_id innehåller den endast händelser som matchar den mätaren.

Webhooks

Webhooks-pluginen verifierar signaturen för varje Dodo Payments-händelse och anropar dina handlers. Standard-endpointen är /api/auth/dodopayments/webhooks.
1

Generate and Set Webhook Secret

Gå till Developer → Webhooks i dashboarden och lägg till endpointens URL, till exempel https://<your-domain>/api/auth/dodopayments/webhooks. Kopiera endpointens signeringshemlighet till din .env-fil:
2

Handle Webhook Events

Skicka en handler för varje händelse som du vill bearbeta. onPayload körs för varje händelse:
Om signaturverifieringen misslyckas eller en handler kastar ett fel svarar endpointen med 400. När dina handlers har körts klart returnerar den { received: true }.

Webhook-eventhandlers som stöds

Varje handler tar emot den verifierade payloaden för sin eventtyp:

Konfigurationsreferens

  • client (obligatoriskt): DodoPayments-klientinstans
  • createCustomerOnSignUp (valfritt): Skapa en Dodo Payments-kund när en användare registrerar sig eller koppla en befintlig kund med samma e-postadress. Pluginen uppdaterar även kunden när användarens uppgifter ändras.
  • use (obligatoriskt): Array med plugins som ska aktiveras (checkout, portal, usage, webhooks)
  • getCustomerParams (valfritt): Funktion som tar emot Better Auth User och returnerar extra fält som ska kopplas till Dodo Payments-kunden vid skapande och uppdatering (t.ex. metadata, phone_number). Den kan vara async.
  • products: Array med { productId, slug }-objekt eller en async-funktion som returnerar ett sådant
  • successUrl: URL att omdirigera till efter en lyckad betalning
  • authenticatedUsersOnly: Kräv användarautentisering (standard: false)

Felsökning och tips

  • Ogiltig API-nyckel: Kontrollera DODO_PAYMENTS_API_KEY i .env och kontrollera att nyckelns läge matchar environment.
  • Webhook-signaturen stämmer inte: Kontrollera att webhook-hemligheten matchar den som angetts i Dodo Payments-dashboarden.
  • Kunden skapades inte: Kontrollera att createCustomerOnSignUp är inställd på true.
  • Portal- eller usage-begäranden returnerar 401: Användarens e-postadress är inte verifierad.
  • Använd environment variables för alla hemligheter och nycklar.
  • Testa i test_mode innan du byter till live_mode.
  • Logga webhook-händelser för felsökning och granskning.

Prompt för LLM:er

Kopiera den här prompten till din AI-kodningsassistent för att låta den 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