Installation
Installera paketetdodopayments med din pakethanterare:
Snabbstart
Skapa en klient och skapa sedan en checkout-session: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'.
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
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. Angetimeout, i millisekunder, på klienten eller för en enskild request:
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
AngemaxRetries på klienten eller för en enskild request:
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änderclient från Snabbstart.
Skapa en checkout-session
Skapa en checkout-session och omdirigera sedan kunden till den returneradecheckout_url:
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.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 dessevent_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 ifetchOptions.
Node.js (med Undici)
Skicka ett undiciProxyAgent som dispatcher:
Bun
Ange alternativetproxy:
Deno
Skapa en HTTP-klient medDeno.createHttpClient och skicka den som client:
Loggning
Ange loggnivån med klientalternativetlogLevel eller miljövariabeln DODO_PAYMENTS_LOG. Klientalternativet åsidosätter miljövariabeln.
'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.
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 inbyggdafetch-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 medfor await...of för att hämta objekt från varje sida. SDK:t begär nästa sida när den behövs:
page.items och anropar hasNextPage() och getNextPage():
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
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:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Skapa ett ärende i repositoryt.