Vai al contenuto principale

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.

Il SDK TypeScript fornisce un accesso conveniente al server all’API REST di Dodo Payments per applicazioni TypeScript e JavaScript. Presenta definizioni di tipo complete, gestione degli errori, ritentativi, timeout e auto-paginazione per un’elaborazione dei pagamenti senza soluzione di continuità.

Installazione

Installa l’SDK utilizzando il gestore di pacchetti che preferisci:
npm install dodopayments

Inizio Veloce

Inizializza il client con la tua chiave API e inizia a elaborare i pagamenti:
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);
Conserva sempre le chiavi API in modo sicuro utilizzando variabili d’ambiente. Non committarle mai nel controllo di versione né esporle nel codice client-side.

Caratteristiche Principali

TypeScript First

Supporto completo per TypeScript con definizioni di tipo esaustive per tutti gli endpoint API

Auto-Pagination

La paginazione automatica per le risposte di elenco rende semplice lavorare con dataset di grandi dimensioni

Error Handling

Tipi di errore integrati con messaggi dettagliati per diversi scenari di fallimento

Smart Retries

Ritentativi automatici configurabili con backoff esponenziale per errori temporanei

Configurazione

Variabili di Ambiente

Imposta variabili di ambiente per una configurazione sicura:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here

Configurazione del Timeout

Configura i timeout delle richieste globalmente o per richiesta:
// 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 },
);

Configurazione dei Ritenti

Configura il comportamento dei ritentativi automatici:
// 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 },
);
Lo SDK ritenta automaticamente le richieste che falliscono a causa di errori di rete o problemi lato server (risposte 5xx) con backoff esponenziale.

Operazioni Comuni

Crea una Sessione di Checkout

Genera una sessione di checkout per raccogliere informazioni di pagamento:
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);

Gestisci i Clienti

Crea e recupera informazioni sui clienti:
// 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})`);

Gestisci Abbonamenti

Crea e gestisci abbonamenti ricorrenti:
// 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 richiede almeno il codice paese ISO di due lettere. customer è un’unione di { customer_id } (per allegare un cliente esistente) o { email, name? } (per crearne uno nuovo). product_price è espresso nella denominazione valutaria più bassa.

Fatturazione Basata sull’Uso

Acquisizione degli Eventi di Utilizzo

Traccia eventi personalizzati per la fatturazione basata sull’uso:
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'
      }
    }
  ]
});
Gli eventi devono avere valori di event_id unici per l’idempotenza. Gli ID duplicati all’interno della stessa richiesta vengono rifiutati e le richieste successive con ID esistenti vengono ignorate.

Recupera Eventi di Utilizzo

Recupera informazioni dettagliate sugli eventi di utilizzo:
// 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'
});

Configurazione del Proxy

Configura le impostazioni del proxy per diversi runtime:

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

Log

Controlla la verbosità dei log utilizzando variabili di ambiente o opzioni del client:
// Via client option
const client = new DodoPayments({
  logLevel: 'debug', // Show all log messages
});
# Via environment variable
export DODO_PAYMENTS_LOG=debug
Livelli di log disponibili:
  • 'debug' - Mostra messaggi di debug, info, avvisi ed errori
  • 'info' - Mostra messaggi info, avvisi ed errori
  • 'warn' - Mostra avvisi ed errori (predefinito)
  • 'error' - Mostra solo errori
  • 'off' - Disabilita tutti i log
Al livello di debug, tutte le richieste e risposte HTTP vengono registrate, inclusi intestazioni e corpi. Alcune intestazioni di autenticazione vengono redatte, ma i dati sensibili nei corpi possono essere ancora visibili.

Migrazione dal Node.js SDK

Se stai passando dal vecchio Node.js SDK, il TypeScript SDK offre una maggiore sicurezza dei tipi e funzionalità migliorate:

View Migration Guide

Scopri come migrare dal Node.js SDK al TypeScript SDK

Auto-Paginazione

I metodi di lista nell’API DodoPayments sono paginati. Puoi utilizzare la sintassi for await … of per iterare attraverso gli oggetti su tutte le pagine:
async function fetchAllPayments() {
  const allPayments = [];
  // Automatically fetches more pages as needed.
  for await (const paymentListResponse of client.payments.list()) {
    allPayments.push(paymentListResponse);
  }
  return allPayments;
}
In alternativa, puoi richiedere una singola pagina alla volta:
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();
  // ...
}

Requisiti

I seguenti runtime sono supportati:
  • Browser web (Chrome, Firefox, Safari, Edge aggiornati e altro)
  • Node.js 20 LTS o versioni successive (non-EOL)
  • Deno v1.28.0 o superiore
  • Bun 1.0 o successivi
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 o superiore con l’ambiente "node"
  • Nitro v2.6 o superiore
TypeScript >= 4.9 è supportato.

Risorse

GitHub Repository

Visualizza il codice sorgente e contribuisci

API Reference

Documentazione API completa

Discord Community

Ottieni supporto e connettiti con gli sviluppatori

Report Issues

Segnala bug o richiedi funzionalità

Supporto

Hai bisogno di aiuto con il TypeScript SDK?

Contribuire

Accogliamo con favore i contributi! Consulta le linee guida per contribuire per iniziare.
Last modified on May 14, 2026