Hoppa till huvudinnehåll
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({
  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'
});

Användningsbaserad Fakturering

Ingesta Användningsevenemang

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. Dubbletter av ID:n inom samma förfrågan avvisas, och efterföljande förfrågningar med befintliga ID:n ignoreras.

Hämta Användningsevenemang

Hämta detaljerad information om användningsevenemang:
// 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örningar:

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 loggningens verbositet med hjälp av 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 loggningsnivåer:
  • 'debug' - Visa debug-meddelanden, info, varningar och fel
  • 'info' - Visa informationsmeddelanden, varningar och fel
  • 'warn' - Visa varningar och fel (standard)
  • 'error' - Visa endast fel
  • 'off' - Inaktivera all loggning
På debugnivå loggas alla HTTP-förfrågningar och -responser, inklusive headers och kroppar. Vissa autentiseringsheaders maskeras, men känslig data i kroppar kan fortfarande vara synlig.

Migration från Node.js SDK

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

View Migration Guide

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

Automatisk paginering

Listmetoder i DodoPayments API är paginerade. Du kan använda syntaxen for await … of för att iterera över objekt i 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 enda sida åt gången:
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örningar stöds:
  • Webbläsare (uppdaterade Chrome, Firefox, Safari, Edge med flera)
  • 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 senare med "node"-miljön
  • Nitro v2.6 eller senare
TypeScript >= 4.9 stöds.

Resurser

Support

Behöver du hjälp med TypeScript SDK?

Bidra

Vi välkomnar bidrag! Kolla in bidragsriktlinjerna för att komma igång.