Passer au contenu principal
Le SDK TypeScript fournit un accès pratique côté serveur à l’API REST de Dodo Payments pour les applications TypeScript et JavaScript. Il propose des définitions de type complètes, la gestion des erreurs, des tentatives, des délais d’attente et une pagination automatique pour un traitement des paiements sans faille.

Installation

Installez le SDK en utilisant votre gestionnaire de paquets préféré :
npm install dodopayments

Démarrage rapide

Initialisez le client avec votre clé API et commencez à traiter les paiements :
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);
Stockez toujours vos clés API en toute sécurité en utilisant des variables d’environnement. Ne les engagez jamais dans le contrôle de version ou ne les exposez pas dans le code côté client.

Fonctionnalités principales

TypeScript First

Support complet de TypeScript avec des définitions de type complètes pour tous les points de terminaison de l’API

Auto-Pagination

Pagination automatique pour les réponses de liste facilitant le travail avec de grands ensembles de données

Gestion des erreurs

Types d’erreurs intégrés avec des messages détaillés pour différents scénarios d’échec

Smart Retries

Tentatives automatiques configurables avec un backoff exponentiel pour les erreurs transitoires

Configuration

Variables d’environnement

Définissez des variables d’environnement pour une configuration sécurisée :
.env
DODO_PAYMENTS_API_KEY=your_api_key_here

Configuration des délais d’attente

Configurez les délais d’attente des requêtes globalement ou par requête :
// 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 }
);

Configuration des tentatives

Configurez le comportement de tentative automatique :
// 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 }
);
Le SDK réessaie automatiquement les requêtes qui échouent en raison d’erreurs réseau ou de problèmes de serveur (réponses 5xx) avec un backoff exponentiel.

Opérations courantes

Créer une session de paiement

Générez une session de paiement pour collecter des informations de paiement :
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);

Gérer les clients

Créez et récupérez des informations sur les clients :
// 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})`);

Gérer les abonnements

Créez et gérez des abonnements récurrents :
// 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'
});

Facturation basée sur l’utilisation

Ingest Usage Events

Suivez des événements personnalisés pour la facturation basée sur l’utilisation :
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'
      }
    }
  ]
});
Les événements doivent avoir des valeurs uniques event_id pour l’idempotence. Les ID en double dans la même requête sont rejetés, et les requêtes ultérieures avec des ID existants sont ignorées.

Récupérer les événements d’utilisation

Récupérez des informations détaillées sur les événements d’utilisation :
// 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'
});

Configuration du proxy

Configurez les paramètres du proxy pour différents environnements d’exécution :

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

Journalisation

Contrôlez la verbosité des journaux en utilisant des variables d’environnement ou des options client :
// Via client option
const client = new DodoPayments({
  logLevel: 'debug', // Show all log messages
});
# Via environment variable
export DODO_PAYMENTS_LOG=debug
Niveaux de journal disponibles :
  • 'debug' - Afficher les messages de débogage, d’information, d’avertissement et d’erreur
  • 'info' - Afficher les messages d’information, d’avertissement et d’erreur
  • 'warn' - Afficher les avertissements et les erreurs (par défaut)
  • 'error' - Afficher uniquement les erreurs
  • 'off' - Désactiver toute journalisation
Au niveau de débogage, toutes les requêtes et réponses HTTP sont enregistrées, y compris les en-têtes et les corps. Certains en-têtes d’authentification sont masqués, mais les données sensibles dans les corps peuvent encore être visibles.

Migration depuis le SDK Node.js

Si vous mettez à niveau depuis le SDK Node.js hérité, le SDK TypeScript offre une sécurité de type améliorée et des fonctionnalités :

Voir le guide de migration

Apprenez à migrer du SDK Node.js vers le SDK TypeScript

Ressources

Support

Besoin d’aide avec le SDK TypeScript ?

Contribuer

Nous accueillons les contributions ! Consultez les directives de contribution pour commencer.