Installation
Installez le packagedodopayments avec votre gestionnaire de packages :
Démarrage rapide
Créez un client, puis créez une session de paiement :bearerToken, le client lit la variable d’environnement DODO_PAYMENTS_API_KEY. Si vous omettez environment, le client se connecte au mode réel. Une clé API de mode test fonctionne uniquement avec environment: 'test_mode'.
Fonctionnalités principales
TypeScript First
Définitions de types pour chaque paramètre de requête et champ de réponse, affichées dans votre éditeur.
Auto-Pagination
Les méthodes de liste récupèrent la page suivante pour vous lorsque vous effectuez une itération avec
for await...of.Error Handling
Une classe d’erreur typée pour chaque statut d’erreur HTTP, avec le statut, les en-têtes et le corps de la réponse.
Smart Retries
Deux nouvelles tentatives par défaut, avec un backoff exponentiel, pour les erreurs de connexion et les codes de statut pouvant faire l’objet d’une nouvelle tentative.
Configuration
Variables d’environnement
Stockez votre clé API dans une variable d’environnement :.env
Si une URL de base est définie et que vous transmettez également
environment, le constructeur génère une erreur « Ambiguous URL ». Pour utiliser environment dans ce cas, transmettez baseURL: null.
Pour vérifier un webhook, transmettez le corps brut de la requête et les en-têtes à client.webhooks.unwrap(rawBody, { headers }). Cette méthode vérifie la signature avec votre clé de webhook et renvoie l’événement analysé. client.webhooks.unsafeUnwrap(rawBody) analyse le corps sans le vérifier ; utilisez-la donc uniquement pour les tests. Voir Webhooks.
Configuration du délai d’expiration
Les requêtes expirent après 1 minute par défaut. Définisseztimeout, en millisecondes, sur le client ou pour une seule requête :
APIConnectionTimeoutError. Les requêtes expirées font l’objet de nouvelles tentatives ; un appel peut donc durer plus longtemps que timeout avant d’échouer.
Configuration des nouvelles tentatives
DéfinissezmaxRetries sur le client ou pour une seule requête :
DodoPayments.APIError. Chaque erreur possède les propriétés status, headers et error (le corps de la réponse). Vérifiez une classe spécifique avec instanceof, par exemple err instanceof DodoPayments.RateLimitError :
Opérations courantes
Les exemples de cette section utilisentclient de la section Démarrage rapide.
Créer une session de paiement
Créez une session de paiement, puis redirigez le client vers lecheckout_url renvoyé :
checkout_url fonctionne une fois et expire après 24 heures. Pour connaître toutes les options de session, consultez Sessions de paiement.
Gérer les clients
Créez un client avec une adresse e-mail et un nom, puis récupérez-le par son ID :Gérer les abonnements
Créez un abonnement, facturez un abonnement à la demande et consultez l’historique d’utilisation d’un abonnement.billing nécessite uniquement country, un code pays ISO à deux lettres. customer accepte { customer_id } pour associer un client existant, ou { email, name? } pour en créer un. charge est destiné aux abonnements à la demande, et product_price est exprimé dans la plus petite unité monétaire. retrieveUsageHistory renvoie une liste paginée que vous pouvez parcourir comme indiqué dans Pagination automatique.Facturation basée sur l’utilisation
Ingérer des événements d’utilisation
Envoyez des événements d’utilisation pour un client :event_id est la clé d’idempotence ; attribuez donc une valeur unique à chaque événement. Si le même event_id apparaît deux fois dans une requête, l’ensemble de la requête est rejeté. Si un event_id a déjà été ingéré, le nouvel événement est ignoré. Une requête accepte jusqu’à 1 000 événements. timestamp prend par défaut l’heure actuelle et est rejeté s’il remonte à plus d’une heure dans le passé ou se situe à plus de 5 minutes dans le futur.Récupérer des événements d’utilisation
Récupérez un événement unique grâce à sonevent_id, ou listez les événements filtrés par client, nom d’événement et période :
usageEvents.list accepte également meter_id et renvoie une liste paginée.
Configuration du proxy
Pour envoyer des requêtes via un proxy, transmettez les paramètres de proxy de votre environnement d’exécution dansfetchOptions.
Node.js (avec Undici)
Transmettez unProxyAgent undici en tant que dispatcher :
Bun
Définissez l’optionproxy :
Deno
Créez un client HTTP avecDeno.createHttpClient et transmettez-le en tant que client :
Journalisation
Définissez le niveau de journalisation avec l’option clientlogLevel ou la variable d’environnement DODO_PAYMENTS_LOG. L’option du client remplace la variable d’environnement.
'debug': messages de débogage, informations, avertissements et erreurs.'info': informations, avertissements et erreurs.'warn': avertissements et erreurs. Il s’agit de la valeur par défaut.'error': erreurs uniquement.'off': aucune journalisation.
console. Pour utiliser pino, winston ou une autre bibliothèque de journalisation, transmettez votre logger en tant qu’option logger ; logLevel contrôle toujours les messages qui lui sont transmis. Les messages de journalisation sont uniquement destinés au débogage et leur format peut changer d’une version à l’autre.
Migration depuis le SDK Node.js
Si vous utilisez l’ancien SDK Node.js, suivez le guide de migration pour effectuer la mise à niveau. Le SDK actuel utilise l’APIfetch intégrée au lieu de node-fetch, nécessite Node.js 20, TypeScript 4.9 et Jest 28 ou une version ultérieure, et inclut un outil de migration qui met à jour la plupart de votre code.
View Migration Guide
Découvrez comment migrer du SDK Node.js vers le SDK TypeScript
Pagination automatique
Les méthodes de liste renvoient des résultats paginés. Effectuez une itération avecfor await...of pour obtenir les éléments de chaque page. Le SDK demande la page suivante lorsqu’il en a besoin :
page.items et appelez hasNextPage() et getNextPage() :
page_size à la méthode de liste, par exemple client.payments.list({ page_size: 50 }).
Prérequis
Le SDK prend en charge TypeScript 4.9 ou une version ultérieure ainsi que les environnements d’exécution suivants :- Navigateurs web (versions à jour de Chrome, Firefox, Safari, Edge et autres)
- Node.js 20 LTS ou versions ultérieures (non arrivées en fin de vie)
- Deno 1.28.0 ou version ultérieure
- Bun 1.0 ou version ultérieure
- Cloudflare Workers
- Vercel Edge Runtime
- Jest 28 ou version ultérieure avec l’environnement
"node"(l’environnement"jsdom"n’est pas pris en charge) - Nitro 2.6 ou version ultérieure
Ressources
GitHub Repository
Code source, versions et liste complète des méthodes.
API Reference
Chaque endpoint, paramètre et réponse.
Discord Community
Posez vos questions et échangez avec d’autres développeurs.
Report Issues
Signalez des bugs ou demandez des fonctionnalités.
Assistance
Pour obtenir de l’aide concernant le SDK TypeScript :- Discord : rejoignez le serveur communautaire pour obtenir de l’aide en temps réel.
- E-mail : contactez support@dodopayments.com.
- GitHub : ouvrez un ticket dans le dépôt.