Zum Hauptinhalt springen
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.

Installation

Installieren Sie das SDK mit Ihrem bevorzugten Paketmanager:
npm install dodopayments

Schnellstart

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);
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.

Kernfunktionen

TypeScript First

Vollständige TypeScript-Unterstützung mit umfassenden Typdefinitionen für alle API-Endpunkte

Auto-Pagination

Automatische Seitenumbruch für Listenantworten macht die Arbeit mit großen Datensätzen mühelos

Error Handling

Eingebaute Fehlertypen mit detaillierten Nachrichten für verschiedene Fehlerszenarien

Smart Retries

Konfigurierbare automatische Wiederholungen mit exponentiellem Backoff für vorübergehende Fehler

Konfiguration

Umgebungsvariablen

Setzen Sie Umgebungsvariablen für eine sichere Konfiguration:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here

Zeitüberschreitungs-Konfiguration

Konfigurieren Sie Zeitüberschreitungen für Anfragen global oder pro Anfrage:
// Configure default timeout for all requests (default is 1 minute)
const client = new DodoPayments({
  timeout: 20 * 1000, // 20 seconds
});

// Override per-request
await client.checkoutSessions.create(
  { product_cart: [{ product_id: 'product_id', quantity: 0 }] },
  { timeout: 5 * 1000 }
);

Wiederholungs-Konfiguration

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-request
await client.checkoutSessions.create(
  { product_cart: [{ product_id: 'product_id', quantity: 0 }] },
  { maxRetries: 5 }
);
Das SDK wiederholt automatisch Anfragen, die aufgrund von Netzwerkfehlern oder Serverproblemen (5xx-Antworten) fehlschlagen, mit exponentiellem Backoff.

Häufige Operationen

Erstellen einer Checkout-Sitzung

Generieren Sie eine Checkout-Sitzung zur Erfassung von Zahlungsinformationen:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_123',
      quantity: 1
    }
  ],
  return_url: 'https://yourdomain.com/return'
});

console.log('Redirect to:', session.url);

Kunden verwalten

Erstellen und Abrufen von Kundeninformationen:
// Create a customer
const customer = await client.customers.create({
  email: '[email protected]',
  name: 'John Doe',
  metadata: {
    user_id: '12345'
  }
});

// Retrieve customer
const retrieved = await client.customers.retrieve('cus_123');
console.log(`Customer: ${retrieved.name} (${retrieved.email})`);

Abonnements verwalten

Erstellen und verwalten Sie wiederkehrende Abonnements:
// Create a subscription
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_456',
  price_id: 'price_789'
});

// Retrieve subscription usage history
const usageHistory = await client.subscriptions.retrieveUsageHistory('sub_123', {
  start_date: '2024-01-01T00:00:00Z',
  end_date: '2024-03-31T23:59:59Z'
});

Nutzungsbasierte Abrechnung

Nutzungsereignisse erfassen

Verfolgen Sie benutzerdefinierte Ereignisse für die nutzungsbasierte Abrechnung:
await client.usageEvents.ingest({
  events: [
    {
      event_id: 'api_call_12345',
      customer_id: 'cus_abc123',
      event_name: 'api_request',
      timestamp: '2024-01-15T10:30:00Z',
      metadata: {
        endpoint: '/api/v1/users',
        method: 'GET',
        tokens_used: '150'
      }
    }
  ]
});
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.

Nutzungsereignisse abrufen

Abrufen detaillierter Informationen über Nutzungsereignisse:
// Get a specific event
const event = await client.usageEvents.retrieve('api_call_12345');

// List events with filtering
const 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'
});

Proxy-Konfiguration

Konfigurieren Sie Proxy-Einstellungen für verschiedene Laufzeiten:

Node.js (mit undici)

import DodoPayments from 'dodopayments';
import * as undici from 'undici';

const proxyAgent = new undici.ProxyAgent('http://localhost:8888');
const client = new DodoPayments({
  fetchOptions: {
    dispatcher: proxyAgent,
  },
});

Bun

import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  fetchOptions: {
    proxy: 'http://localhost:8888',
  },
});

Deno

import DodoPayments from 'npm:dodopayments';

const httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });
const client = new DodoPayments({
  fetchOptions: {
    client: httpClient,
  },
});

Protokollierung

Steuern Sie die Protokollierungsstärke mit Umgebungsvariablen oder Client-Optionen:
// Via client option
const client = new DodoPayments({
  logLevel: 'debug', // Show all log messages
});
# Via environment variable
export 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.

Migration vom Node.js SDK

Wenn Sie vom Legacy Node.js SDK upgraden, bietet das TypeScript SDK verbesserte Typsicherheit und Funktionen:

Migrationsleitfaden anzeigen

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

Ressourcen

Unterstützung

Brauchen Sie Hilfe mit dem TypeScript SDK?

Mitwirken

Wir freuen uns über Beiträge! Überprüfen Sie die Mitwirkungsrichtlinien, um loszulegen.