Integrieren Sie Dodo Payments in Ihre TypeScript- und Node.js-Anwendungen mit Typsicherheit und modernem Async/Await-Support
Das TypeScript SDK bietet bequemen serverseitigen Zugriff auf die Dodo Payments REST API für TypeScript- und JavaScript-Anwendungen. Es verfügt über umfassende Typdefinitionen, Fehlerbehandlung, Wiederholungen, Zeitüberschreitungen und automatische Seitenumbruch für nahtlose Zahlungsabwicklung.
Initialisieren Sie den Client mit Ihrem API-Schlüssel und beginnen Sie mit der Zahlungsabwicklung:
Kopieren
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted environment: 'test_mode', // defaults to 'live_mode'});const checkoutSessionResponse = await client.checkoutSessions.create({ product_cart: [{ product_id: 'product_id', quantity: 1 }],});console.log(checkoutSessionResponse.session_id);
Bewahren Sie Ihre API-Schlüssel immer sicher auf, indem Sie Umgebungsvariablen verwenden. Kommittieren Sie sie niemals in die Versionskontrolle oder exponieren Sie sie im Client-Code.
Konfigurieren Sie das Verhalten automatischer Wiederholungen:
Kopieren
// Configure default for all requests (default is 2 retries)const client = new DodoPayments({ maxRetries: 0, // disable retries});// Override per-requestawait client.checkoutSessions.create( { product_cart: [{ product_id: 'product_id', quantity: 1 }] }, { maxRetries: 5 },);
Das SDK wiederholt automatisch Anfragen, die aufgrund von Netzwerkfehlern oder Serverproblemen (5xx-Antworten) fehlschlagen, mit exponentiellem Backoff.
Ereignisse müssen eindeutige event_id Werte für Idempotenz haben. Doppelte IDs innerhalb derselben Anfrage werden abgelehnt, und nachfolgende Anfragen mit vorhandenen IDs werden ignoriert.
Abrufen detaillierter Informationen über Nutzungsereignisse:
Kopieren
// Get a specific eventconst event = await client.usageEvents.retrieve('api_call_12345');// List events with filteringconst events = await client.usageEvents.list({ customer_id: 'cus_abc123', event_name: 'api_request', start: '2024-01-14T10:30:00Z', end: '2024-01-15T10:30:00Z'});
import DodoPayments from 'dodopayments';import * as undici from 'undici';const proxyAgent = new undici.ProxyAgent('http://localhost:8888');const client = new DodoPayments({ fetchOptions: { dispatcher: proxyAgent, },});
Steuern Sie die Protokollierungsstärke mit Umgebungsvariablen oder Client-Optionen:
Kopieren
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
Kopieren
# Via environment variableexport DODO_PAYMENTS_LOG=debug
Verfügbare Protokollstufen:
'debug' - Zeigt Debug-Nachrichten, Informationen, Warnungen und Fehler an
'info' - Zeigt Informationsnachrichten, Warnungen und Fehler an
'warn' - Zeigt Warnungen und Fehler an (Standard)
'error' - Zeigt nur Fehler an
'off' - Deaktiviert alle Protokollierungen
Auf der Debug-Ebene werden alle HTTP-Anfragen und -Antworten protokolliert, einschließlich Header und Inhalte. Einige Authentifizierungsheader werden anonymisiert, aber sensible Daten in den Inhalten können weiterhin sichtbar sein.
Listenmethoden in der DodoPayments API sind paginiert. Sie können die for await … of Syntax verwenden, um durch Elemente über alle Seiten zu iterieren:
Kopieren
async function fetchAllPayments() { const allPayments = []; // Automatically fetches more pages as needed. for await (const paymentListResponse of client.payments.list()) { allPayments.push(paymentListResponse); } return allPayments;}
Alternativ können Sie eine einzelne Seite auf einmal anfordern:
Kopieren
let page = await client.payments.list();for (const paymentListResponse of page.items) { console.log(paymentListResponse);}// Convenience methods are provided for manually paginating:while (page.hasNextPage()) { page = await page.getNextPage(); // ...}