Hoppa till huvudinnehåll

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

TypeScript SDK tillhandahåller bekväm server-sidåtkomst till Dodo Payments REST API för TypeScript- och JavaScript-applikationer. Den har omfattande typdefinitioner, felhantering, omstarter, tidsgränser och automatisk paginering för sömlös betalningsbehandling.

Installation

Installera SDK:t med den pakethanterare du föredrar:
npm install dodopayments

Snabbstart

Initiera klienten med din API-nyckel och börja behandla betalningar:
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);
Spara alltid dina API-nycklar säkert med hjälp av miljövariabler. Checka aldrig in dem i versionskontroll eller exponera dem i klientkod.

Kärnfunktioner

TypeScript First

Fullt TypeScript-stöd med omfattande typdefinitioner för alla API-slutpunkter

Auto-Pagination

Automatisk paginering för listresponser gör det enkelt att hantera stora datamängder

Error Handling

Inbyggda feltyper med detaljerade meddelanden för olika felscenarier

Smart Retries

Konfigurerbara automatiska försök med exponentiell återgång för tillfälliga fel

Konfiguration

Miljövariabler

Ställ in miljövariabler för säker konfiguration:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here

Tidsgränskonfiguration

Konfigurera begärningstidsgränser globalt eller per begäran:
// 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: 1 }] },
  { timeout: 5 * 1000 },
);

Omstartskonfiguration

Konfigurera automatisk omstartsbeteende:
// 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: 1 }] },
  { maxRetries: 5 },
);
SDK:t gör automatiskt omförsök för förfrågningar som misslyckas på grund av nätverksfel eller serverproblem (5xx-responser) med exponentiell återgång.

Vanliga Operationer

Skapa en Checkout-session

Generera en checkout-session för att samla in betalningsinformation:
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);

Hantera Kunder

Skapa och hämta kundinformation:
// Create a customer
const customer = await client.customers.create({
  email: 'customer@example.com',
  name: 'John Doe',
  metadata: {
    user_id: '12345'
  }
});

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

Hantera Prenumerationer

Skapa och hantera återkommande prenumerationer:
// Create a subscription
const 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 kräver minst den tvåbokstavskod för ISO-land. customer är en union av { customer_id } (för att koppla en befintlig kund) eller { email, name? } (för att skapa en ny). product_price uttrycks i den lägsta valutadenominationen.

Användningsbaserad Fakturering

Registrera Användningshändelser

Spåra anpassade händelser för användningsbaserad fakturering:
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'
      }
    }
  ]
});
Händelser måste ha unika event_id värden för idempotens. Dubblett-ID:n inom samma förfrågan avvisas, och efterföljande förfrågningar med befintliga ID:n ignoreras.

Hämta Användningshändelser

Hämta detaljerad information om användningshändelser:
// 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'
});

Proxykonfiguration

Konfigurera proxyinställningar för olika körmiljöer:

Node.js (använder 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,
  },
});

Loggning

Kontrollera loggverbalitet med miljövariabler eller klientalternativ:
// Via client option
const client = new DodoPayments({
  logLevel: 'debug', // Show all log messages
});
# Via environment variable
export DODO_PAYMENTS_LOG=debug
Tillgängliga loggnivåer:
  • 'debug' - Visa debug-meddelanden, info, varningar och fel
  • 'info' - Visa infomeddelanden, varningar och fel
  • 'warn' - Visa varningar och fel (standard)
  • 'error' - Visa endast fel
  • 'off' - Inaktivera all loggning
På debug-nivån loggas alla HTTP-förfrågningar och svar, inklusive headers och kroppar. Vissa autentiseringsheaders är censurerade, men känslig data i kroppar kan fortfarande vara synlig.

Migrering från Node.js SDK

Om du uppgraderar från den äldre Node.js SDK, erbjuder TypeScript SDK förbättrad typesäkerhet och funktioner:

View Migration Guide

Lär dig hur du migrerar från Node.js SDK till TypeScript SDK

Automatisk Pagination

Listmetoder i DodoPayments API är paginerade. Du kan använda for await … of syntaxen för att iterera genom objekt över alla sidor:
async function fetchAllPayments() {
  const allPayments = [];
  // Automatically fetches more pages as needed.
  for await (const paymentListResponse of client.payments.list()) {
    allPayments.push(paymentListResponse);
  }
  return allPayments;
}
Alternativt kan du begära en sida i taget:
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();
  // ...
}

Krav

Följande körmiljöer stöds:
  • Webb-läsare (Uppdaterade Chrome, Firefox, Safari, Edge och fler)
  • Node.js 20 LTS eller senare (non-EOL) versioner
  • Deno v1.28.0 eller högre
  • Bun 1.0 eller senare
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 eller högre med "node" miljön
  • Nitro v2.6 eller högre
TypeScript >= 4.9 stöds.

Resurser

GitHub Repository

Visa källkod och bidra

API Reference

Komplett API-dokumentation

Discord Community

Få hjälp och anslut med utvecklare

Report Issues

Rapportera buggar eller begär funktioner

Support

Behöver du hjälp med TypeScript SDK?

Medverkan

Vi välkomnar bidrag! Kolla in bidragsriktlinjerna för att komma igång.
Last modified on May 14, 2026