Skip to main content
Das TypeScript SDK ermöglicht serverseitigem TypeScript- und JavaScript-Code typsicheren Zugriff auf die Dodo Payments REST API. Es enthält Typdefinitionen für jede Anfrage und Antwort, typisierte Fehler, automatische Wiederholungen, Timeouts und automatische Seitennavigation.

Installation

Installieren Sie das dodopayments-Paket mit Ihrem Paketmanager:

Schnellstart

Erstellen Sie einen Client und anschließend eine Checkout-Sitzung:
Wenn Sie bearerToken nicht angeben, liest der Client die Umgebungsvariable DODO_PAYMENTS_API_KEY. Wenn Sie environment nicht angeben, stellt der Client eine Verbindung zum Live-Modus her. Ein API-Schlüssel für den Testmodus funktioniert nur mit environment: 'test_mode'.
Bewahren Sie API-Schlüssel in Umgebungsvariablen oder einem Secrets Manager auf. Übertragen Sie sie niemals in die Versionsverwaltung und legen Sie sie nicht in clientseitigem Code offen.

Kernfunktionen

TypeScript First

Typdefinitionen für jeden Anfrageparameter und jedes Antwortfeld, die in Ihrem Editor angezeigt werden.

Auto-Pagination

List-Methoden rufen beim Iterieren mit for await...of automatisch die nächste Seite für Sie ab.

Error Handling

Eine typisierte Fehlerklasse für jeden HTTP-Fehlerstatus mit Status, Headern und Antworttext.

Smart Retries

Standardmäßig zwei Wiederholungsversuche mit exponentiellem Backoff für Verbindungsfehler und wiederholbare Statuscodes.

Konfiguration

Umgebungsvariablen

Speichern Sie Ihren API-Schlüssel in einer Umgebungsvariablen:
.env
Der Client liest diese Variablen, wenn Sie die entsprechende Option nicht übergeben: Wenn eine Basis-URL festgelegt ist und Sie zusätzlich environment übergeben, löst der Konstruktor einen Fehler „Ambiguous URL“ aus. Um in diesem Fall environment zu verwenden, übergeben Sie baseURL: null. Um einen Webhook zu überprüfen, übergeben Sie den unveränderten Anfrage-Body und die Header an client.webhooks.unwrap(rawBody, { headers }). Die Signatur wird mit Ihrem Webhook-Schlüssel geprüft und das analysierte Ereignis zurückgegeben. client.webhooks.unsafeUnwrap(rawBody) analysiert den Body ohne Überprüfung. Verwenden Sie es daher nur zu Testzwecken. Siehe Webhooks.

Timeout-Konfiguration

Anfragen laufen standardmäßig nach 1 Minute ab. Legen Sie timeout in Millisekunden für den Client oder eine einzelne Anfrage fest:
Wenn eine Anfrage abläuft, löst das SDK APIConnectionTimeoutError aus. Abgelaufene Anfragen werden wiederholt. Daher kann ein Aufruf länger als timeout dauern, bevor er fehlschlägt.

Konfiguration der Wiederholungsversuche

Legen Sie maxRetries für den Client oder eine einzelne Anfrage fest:
Das SDK wiederholt Verbindungsfehler und Antworten mit dem Status 408, 409, 429 oder 500 und höher. Standardmäßig wird die Anfrage zweimal mit exponentiellem Backoff wiederholt.
Wenn eine Anfrage weiterhin fehlschlägt, löst das SDK eine Unterklasse von DodoPayments.APIError aus. Jeder Fehler verfügt über die Eigenschaften status, headers und error (den Antworttext). Prüfen Sie mit instanceof auf eine bestimmte Klasse, zum Beispiel err instanceof DodoPayments.RateLimitError:

Häufige Vorgänge

Die Beispiele in diesem Abschnitt verwenden den client aus dem Schnellstart.

Checkout-Sitzung erstellen

Erstellen Sie eine Checkout-Sitzung und leiten Sie den Kunden anschließend zur zurückgegebenen checkout_url weiter:
Jede checkout_url kann einmal verwendet werden und läuft nach 24 Stunden ab. Alle Optionen für Sitzungen finden Sie unter Checkout-Sitzungen.

Kunden verwalten

Erstellen Sie einen Kunden mit E-Mail-Adresse und Namen und rufen Sie ihn anschließend per ID ab:

Abonnements verwalten

Erstellen Sie ein Abonnement, belasten Sie ein On-Demand-Abonnement und lesen Sie den Nutzungsverlauf eines Abonnements aus.
POST /subscriptions (die subscriptions.create-Methode des SDK) ist veraltet. Sie funktioniert weiterhin für bestehende Integrationen. Neue Integrationen sollten Abonnements jedoch über eine Checkout-Sitzung erstellen.
billing erfordert nur country, einen zweistelligen ISO-Ländercode. customer akzeptiert { customer_id }, um einen bestehenden Kunden zu verknüpfen, oder { email, name? }, um einen neuen Kunden zu erstellen. charge ist für On-Demand-Abonnements vorgesehen, und product_price wird in der kleinsten Währungseinheit angegeben. retrieveUsageHistory gibt eine paginierte Liste zurück, die Sie wie unter Automatische Seitennavigation gezeigt durchlaufen können.

Nutzungsbasierte Abrechnung

Nutzungsereignisse erfassen

Senden Sie Nutzungsereignisse für einen Kunden:
event_id ist der Idempotenzschlüssel. Verwenden Sie daher für jedes Ereignis einen eindeutigen Wert. Wenn derselbe event_id zweimal in einer Anfrage vorkommt, wird die gesamte Anfrage abgelehnt. Wenn ein event_id bereits erfasst wurde, wird das neue Ereignis ignoriert. Eine Anfrage akzeptiert bis zu 1.000 Ereignisse. timestamp wird standardmäßig auf die aktuelle Zeit gesetzt und abgelehnt, wenn der Zeitpunkt mehr als 1 Stunde in der Vergangenheit oder mehr als 5 Minuten in der Zukunft liegt.

Nutzungsereignisse abrufen

Rufen Sie ein einzelnes Ereignis anhand seines event_id ab oder listen Sie nach Kunde, Ereignisname und Zeitraum gefilterte Ereignisse auf:
usageEvents.list akzeptiert außerdem meter_id und gibt eine paginierte Liste zurück.

Proxy-Konfiguration

Um Anfragen über einen Proxy zu senden, übergeben Sie die Proxy-Einstellungen Ihrer Laufzeitumgebung in fetchOptions.

Node.js (mit Undici)

Übergeben Sie einen undici ProxyAgent als dispatcher:

Bun

Legen Sie die Option proxy fest:

Deno

Erstellen Sie mit Deno.createHttpClient einen HTTP-Client und übergeben Sie ihn als client:

Protokollierung

Legen Sie die Protokollstufe mit der Client-Option logLevel oder der Umgebungsvariablen DODO_PAYMENTS_LOG fest. Die Client-Option hat Vorrang vor der Umgebungsvariablen.
Auf der Stufe debug protokolliert das SDK jede HTTP-Anfrage und -Antwort einschließlich Headern und Bodies. Einige Authentifizierungs-Header werden ausgeblendet, vertrauliche Daten in Bodies können jedoch weiterhin sichtbar sein.
Die Protokollstufen lauten, von der ausführlichsten bis zur am wenigsten ausführlichen:
  • 'debug': Debug-Meldungen, Informationen, Warnungen und Fehler.
  • 'info': Informationsmeldungen, Warnungen und Fehler.
  • 'warn': Warnungen und Fehler. Dies ist die Standardeinstellung.
  • 'error': Nur Fehler.
  • 'off': Keine Protokollierung.
Das SDK protokolliert standardmäßig in console. Um pino, winston oder eine andere Protokollierungsbibliothek zu verwenden, übergeben Sie Ihren Logger als logger-Option. logLevel steuert weiterhin, welche Meldungen ihn erreichen. Protokollmeldungen dienen ausschließlich dem Debugging, und ihr Format kann sich zwischen Releases ändern.

Migration vom Node.js SDK

Wenn Sie das ältere Node.js SDK verwenden, folgen Sie der Migrationsanleitung für das Upgrade. Das aktuelle SDK verwendet anstelle von node-fetch die integrierte fetch API, erfordert Node.js 20, TypeScript 4.9 und Jest 28 oder höher und enthält ein Migrationstool, das den Großteil Ihres Codes aktualisiert.

View Migration Guide

Erfahren Sie, wie Sie vom Node.js SDK zum TypeScript SDK migrieren

Automatische Seitennavigation

List-Methoden geben paginierte Ergebnisse zurück. Iterieren Sie mit for await...of, um Elemente aus jeder Seite abzurufen. Das SDK fordert die nächste Seite bei Bedarf an:
Um jeweils mit einer Seite zu arbeiten, lesen Sie page.items aus und rufen Sie hasNextPage() sowie getNextPage() auf:
Um die Seitengröße festzulegen, übergeben Sie page_size an die List-Methode, zum Beispiel client.payments.list({ page_size: 50 }).

Anforderungen

Das SDK unterstützt TypeScript 4.9 oder höher sowie folgende Laufzeitumgebungen:
  • Webbrowser (aktuelle Versionen von Chrome, Firefox, Safari, Edge und anderen)
  • Node.js 20 LTS oder höhere (nicht dem EOL unterliegende) Versionen
  • Deno 1.28.0 oder höher
  • Bun 1.0 oder höher
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 oder höher mit der Umgebung "node" (die Umgebung "jsdom" wird nicht unterstützt)
  • Nitro 2.6 oder höher
React Native wird nicht unterstützt.

Ressourcen

GitHub Repository

Quellcode, Releases und die vollständige Methodenliste.

API Reference

Jeder Endpunkt, Parameter und jede Antwort.

Discord Community

Stellen Sie Fragen und tauschen Sie sich mit anderen Entwicklern aus.

Report Issues

Melden Sie Fehler oder schlagen Sie Funktionen vor.

Support

Hilfe zum TypeScript SDK:

Mitwirken

Wenn Sie mitwirken möchten, lesen Sie die Richtlinien für Mitwirkende.
Zuletzt geändert am 26. September 2026