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.2
Set Up Server-Side Integration
Skapa eller uppdatera Pluginen lägger till fältet
src/lib/auth.ts: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.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ändscustomer-objektet. - Övriga fält: Argumentet accepterar samma fält som request body för endpointen Create Checkout Session, samt
slugochreferenceId.
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)
Den äldre metoden kräverbilling 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
Aktiverausage()-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.ingestregistrerar en händelse för den inloggade användaren.authClient.dodopayments.usage.meters.listlistar den inloggade kundens användningshändelser. Den accepterar query-parametrarnapage_number,page_size,event_name,meter_id,startochend.
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:{ received: true }.
Webhook-eventhandlers som stöds
Varje handler tar emot den verifierade payloaden för sin eventtyp:Konfigurationsreferens
Plugin Options
Plugin Options
- 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
Useroch returnerar extra fält som ska kopplas till Dodo Payments-kunden vid skapande och uppdatering (t.ex.metadata,phone_number). Den kan vara async.
Checkout Plugin Options
Checkout Plugin Options
- 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
Common Issues
Common Issues
- Ogiltig API-nyckel: Kontrollera
DODO_PAYMENTS_API_KEYi.envoch kontrollera att nyckelns läge matcharenvironment. - 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.
Best Practices
Best Practices
- Använd environment variables för alla hemligheter och nycklar.
- Testa i
test_modeinnan du byter tilllive_mode. - Logga webhook-händelser för felsökning och granskning.