Installation
Installieren Sie dasdodopayments-Paket mit Ihrem Paketmanager:
Schnellstart
Erstellen Sie einen Client und anschließend eine Checkout-Sitzung: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'.
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
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 Sietimeout in Millisekunden für den Client oder eine einzelne Anfrage fest:
APIConnectionTimeoutError aus. Abgelaufene Anfragen werden wiederholt. Daher kann ein Aufruf länger als timeout dauern, bevor er fehlschlägt.
Konfiguration der Wiederholungsversuche
Legen SiemaxRetries für den Client oder eine einzelne Anfrage fest:
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 denclient aus dem Schnellstart.
Checkout-Sitzung erstellen
Erstellen Sie eine Checkout-Sitzung und leiten Sie den Kunden anschließend zur zurückgegebenencheckout_url weiter:
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.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 seinesevent_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 infetchOptions.
Node.js (mit Undici)
Übergeben Sie einen undiciProxyAgent als dispatcher:
Bun
Legen Sie die Optionproxy fest:
Deno
Erstellen Sie mitDeno.createHttpClient einen HTTP-Client und übergeben Sie ihn als client:
Protokollierung
Legen Sie die Protokollstufe mit der Client-OptionlogLevel oder der Umgebungsvariablen DODO_PAYMENTS_LOG fest. Die Client-Option hat Vorrang vor der Umgebungsvariablen.
'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.
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 vonnode-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 mitfor await...of, um Elemente aus jeder Seite abzurufen. Das SDK fordert die nächste Seite bei Bedarf an:
page.items aus und rufen Sie hasNextPage() sowie getNextPage() auf:
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
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:- Discord: Treten Sie dem Community-Server bei, um in Echtzeit Hilfe zu erhalten.
- E-Mail: Kontaktieren Sie support@dodopayments.com.
- GitHub: Eröffnen Sie ein Issue im Repository.