Use this file to discover all available pages before exploring further.
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:
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);
Speichern Sie Ihre API-Schlüssel stets sicher über Umgebungsvariablen. Kommittieren Sie sie niemals in die Versionsverwaltung und setzen Sie sie nicht in clientseitigem Code ein.
Konfigurieren Sie das Verhalten automatischer Wiederholungen:
// 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.
Erstellen und verwalten Sie wiederkehrende Abonnements:
// Create a subscriptionconst subscription = await client.subscriptions.create({ billing: { country: 'US', city: 'San Francisco', state: 'CA', street: '1 Market St', zipcode: '94105', }, customer: { customer_id: 'cus_123', // or pass { email, name } to create a new customer }, product_id: 'pdt_456', quantity: 1,});// Charge an on-demand subscription// product_price is in the lowest currency denomination (e.g., 2500 = $25.00 USD)const chargeResponse = await client.subscriptions.charge(subscription.subscription_id, { product_price: 2500,});// Retrieve subscription usage history (for metered subscriptions)const usageHistory = await client.subscriptions.retrieveUsageHistory(subscription.subscription_id, { start_date: '2024-01-01T00:00:00Z', end_date: '2024-03-31T23:59:59Z',});
billing erfordert mindestens den zweistelligen ISO-Ländercode. customer ist eine Vereinigung von { customer_id } (um einen bestehenden Kunden anzufügen) oder { email, name? } (um einen neuen zu erstellen). product_price wird in der niedrigsten Währungsdenomination angegeben.
Ereignisse müssen eindeutige event_id-Werte für Idempotenz haben. Doppelte IDs innerhalb derselben Anforderung werden abgelehnt und nachfolgende Anforderungen mit bestehenden IDs werden ignoriert.
Abrufen detaillierter Informationen über Nutzungereignisse:
// 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 Protokollierungstiefe mit Umgebungsvariablen oder Client-Optionen:
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
# Via environment variableexport DODO_PAYMENTS_LOG=debug
Verfügbare Protokollebene:
'debug' - Zeige Debug-Nachrichten, Infos, Warnungen und Fehler
'info' - Zeige Infos, Warnungen und Fehler
'warn' - Zeige Warnungen und Fehler (Standard)
'error' - Zeige nur Fehler
'off' - Deaktivieren Sie alle Logs
Auf der Debug-Ebene werden alle HTTP-Anfragen und -Antworten protokolliert, einschließlich Kopfzeilen und Körper. Einige Authentifizierungs-Header werden geschwärzt, aber sensible Daten in Körpern können weiterhin sichtbar sein.
Listmethoden in der DodoPayments API sind paginiert. Sie können die for await … of-Syntax verwenden, um durch Elemente über alle Seiten hinweg zu iterieren:
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 nach der anderen anfordern:
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(); // ...}