Skip to main content
TypeScript SDK ger serverbaserad TypeScript- och JavaScript-kod typad åtkomst till Dodo Payments REST API. Det innehåller typdefinitioner för varje begäran och varje svar, typade fel, automatiska omförsök, timeouts och automatisk paginering.

Installation

Installera paketet dodopayments med din pakethanterare:

Snabbstart

Skapa en klient och skapa sedan en checkout-session:
Om du utelämnar bearerToken läser klienten miljövariabeln DODO_PAYMENTS_API_KEY. Om du utelämnar environment ansluter klienten till liveläget. En API-nyckel för testläge fungerar endast med environment: 'test_mode'.
Förvara API-nycklar i miljövariabler eller en secrets manager. Checka aldrig in dem i versionshanteringen och exponera dem aldrig i klientkod.

Kärnfunktioner

TypeScript First

Typdefinitioner för varje parameter i begäran och varje fält i svaret, som visas i din editor.

Auto-Pagination

List-metoder hämtar nästa sida åt dig när du itererar med for await...of.

Error Handling

En typad felklass för varje HTTP-felstatus, med status, headers och svarstext.

Smart Retries

Två omförsök som standard, med exponentiell backoff, för anslutningsfel och statuskoder som kan försöka igen.

Konfiguration

Miljövariabler

Lagra din API-nyckel i en miljövariabel:
.env
Klienten läser dessa variabler när du inte skickar med motsvarande alternativ: Om en bas-URL har angetts och du även skickar med environment genererar konstruktorn felet “Ambiguous URL”. Om du vill använda environment i det fallet skickar du med baseURL: null. Om du vill verifiera en webhook skickar du den råa request body:n och headers till client.webhooks.unwrap(rawBody, { headers }). Den kontrollerar signaturen med din webhook-nyckel och returnerar den parsade händelsen. client.webhooks.unsafeUnwrap(rawBody) parsar body:n utan att verifiera den, så använd den endast för testning. Se Webhooks.

Timeout-konfiguration

Requests får som standard timeout efter 1 minut. Ange timeout, i millisekunder, på klienten eller för en enskild request:
När en request överskrider timeouten genererar SDK:t APIConnectionTimeoutError. Requests som överskrider timeouten försöks igen, så ett anrop kan ta längre tid än timeout innan det misslyckas.

Konfiguration av omförsök

Ange maxRetries på klienten eller för en enskild request:
SDK:t försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre. Som standard görs två omförsök med exponentiell backoff.
När en request fortfarande misslyckas genererar SDK:t en subklass av DodoPayments.APIError. Varje fel har egenskaperna status, headers och error (svarstexten). Kontrollera om en specifik klass används med instanceof, till exempel err instanceof DodoPayments.RateLimitError:

Vanliga åtgärder

Exemplen i det här avsnittet använder client från Snabbstart.

Skapa en checkout-session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade checkout_url:
Varje checkout_url fungerar en gång och upphör att gälla efter 24 timmar. Information om alla sessionsalternativ finns i Checkout Sessions.

Hantera kunder

Skapa en kund med e-postadress och namn och hämta den sedan med ID:

Hantera prenumerationer

Skapa en prenumeration, debitera en on-demand-prenumeration och läs en prenumerations användningshistorik.
POST /subscriptions (SDK:ts subscriptions.create-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
billing kräver endast country, en tvåbokstavskod för ISO-land. customer tar { customer_id } för att koppla en befintlig kund eller { email, name? } för att skapa en. charge används för on-demand-prenumerationer, och product_price anges i den minsta valutaenheten. retrieveUsageHistory returnerar en paginerad lista som du kan iterera över enligt beskrivningen i Automatisk paginering.

Användningsbaserad fakturering

Samla in användningshändelser

Skicka användningshändelser för en kund:
event_id är idempotency-nyckeln, så ge varje händelse ett unikt värde. Om samma event_id förekommer två gånger i samma request avvisas hela requesten. Om en event_id redan har samlats in ignoreras den nya händelsen. En request accepterar upp till 1 000 händelser. timestamp använder aktuell tid som standard och avvisas om den ligger mer än 1 timme bakåt eller mer än 5 minuter framåt i tiden.

Hämta användningshändelser

Hämta en enskild händelse med dess event_id eller lista händelser filtrerade efter kund, händelsenamn och tidsintervall:
usageEvents.list accepterar även meter_id och returnerar en paginerad lista.

Proxykonfiguration

Om du vill skicka requests via en proxy skickar du runtime-miljöns proxyinställningar i fetchOptions.

Node.js (med Undici)

Skicka ett undici ProxyAgent som dispatcher:

Bun

Ange alternativet proxy:

Deno

Skapa en HTTP-klient med Deno.createHttpClient och skicka den som client:

Loggning

Ange loggnivån med klientalternativet logLevel eller miljövariabeln DODO_PAYMENTS_LOG. Klientalternativet åsidosätter miljövariabeln.
På nivån debug loggar SDK:t varje HTTP-request och -svar, inklusive headers och bodies. Vissa autentiseringsheaders maskeras, men känsliga data i bodies kan fortfarande visas.
Loggnivåerna, från mest till minst detaljerad, är:
  • 'debug': Debug-meddelanden, informationsmeddelanden, varningar och fel.
  • 'info': Informationsmeddelanden, varningar och fel.
  • 'warn': Varningar och fel. Detta är standardvärdet.
  • 'error': Endast fel.
  • 'off': Ingen loggning.
SDK:t loggar som standard till console. Om du vill använda pino, winston eller ett annat loggningsbibliotek skickar du din logger som alternativet logger; logLevel styr fortfarande vilka meddelanden som når den. Loggmeddelanden är endast avsedda för felsökning och deras format kan ändras mellan versioner.

Migrering från Node.js SDK

Om du använder det äldre Node.js SDK:t följer du migreringsguiden för att uppgradera. Det aktuella SDK:t använder det inbyggda fetch-API:t i stället för node-fetch, kräver Node.js 20, TypeScript 4.9 och Jest 28 eller senare och innehåller ett migreringsverktyg som uppdaterar större delen av din kod.

View Migration Guide

Läs om hur du migrerar från Node.js SDK till TypeScript SDK

Automatisk paginering

List-metoder returnerar paginerade resultat. Iterera med for await...of för att hämta objekt från varje sida. SDK:t begär nästa sida när den behövs:
Om du vill arbeta med en sida i taget läser du page.items och anropar hasNextPage() och getNextPage():
Om du vill ange sidstorleken skickar du page_size till list-metoden, till exempel client.payments.list({ page_size: 50 }).

Krav

SDK:t stöder TypeScript 4.9 eller senare och följande runtime-miljöer:
  • Webbläsare (aktuella versioner av Chrome, Firefox, Safari, Edge och andra)
  • Node.js 20 LTS eller senare (versioner som inte nått EOL)
  • Deno 1.28.0 eller senare
  • Bun 1.0 eller senare
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 eller senare med miljön "node" (miljön "jsdom" stöds inte)
  • Nitro 2.6 eller senare
React Native stöds inte.

Resurser

GitHub Repository

Källkod, versioner och den fullständiga metodlistan.

API Reference

Alla endpoints, parametrar och svar.

Discord Community

Ställ frågor och prata med andra utvecklare.

Report Issues

Rapportera buggar eller önska funktioner.

Support

För hjälp med TypeScript SDK:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026