Skip to main content
Le SDK Rust permet aux applications Rust asynchrones d’accéder à l’API REST de Dodo Payments avec un typage fort. Il est basé sur Tokio et reqwest, utilise des structures typées pour les requêtes et les réponses, diffuse les résultats paginés et réessaie les requêtes ayant échoué.

Installation

Ajoutez le SDK à votre projet avec Cargo :
Ou ajoutez-le manuellement à votre Cargo.toml :
Le SDK nécessite Rust 1.75 ou une version ultérieure.

Démarrage rapide

Client::from_env() lit votre clé API depuis la variable d’environnement DODO_PAYMENTS_API_KEY. Créez un client, puis une session de paiement :
Si DODO_PAYMENTS_API_KEY n’est pas définie, Client::from_env() renvoie une Error::Config. Le client se connecte au mode live, sauf si vous choisissez un autre environnement, comme indiqué dans Environnements. Une clé API de test ne fonctionne qu’en mode test.
Conservez les clés API dans des variables d’environnement ou un gestionnaire de secrets. Ne les inscrivez jamais en dur dans votre code source.

Fonctionnalités principales

Async First

Basé sur Tokio et reqwest, avec async/await pour chaque requête.

Strong Typing

Structures typées pour les requêtes et les réponses, avec vérifications à la compilation.

Auto-Pagination

Diffusez chaque élément sur toutes les pages ou avancez page par page.

Configurable

Définissez l’environnement, l’URL de base, le délai d’expiration et le nombre de tentatives pour chaque client.

Configuration

Variables d’environnement

Client::from_env() lit votre clé API depuis DODO_PAYMENTS_API_KEY. Il utilise l’URL du mode live, sauf si vous définissez DODO_PAYMENTS_BASE_URL :
Le SDK Rust ne lit pas DODO_PAYMENTS_WEBHOOK_KEY et ne possède aucune méthode permettant de vérifier les signatures des webhooks. Pour les vérifier, consultez Webhooks. Vous pouvez également configurer explicitement le client. Client::new renvoie un Result ; utilisez donc unwrap avec ? dans une fonction qui renvoie dodopayments::Result :

Environnements

Le SDK possède deux environnements : L’URL de base par défaut est https://live.dodopayments.com. Pour sélectionner un autre environnement, utilisez l’énumération Environment plutôt qu’une URL codée en dur :
Pour continuer à lire la clé API depuis DODO_PAYMENTS_API_KEY avec from_env() tout en ciblant un autre environnement, remplacez l’environnement dans la configuration :

Délais d’expiration

Le délai d’expiration par défaut des requêtes est de 30 secondes. Remplacez-le pour un client avec with_timeout :
Le client réessaie les erreurs de connexion et les réponses avec le statut 408, 409, 429 ou 500 et supérieur. Par défaut, il effectue deux nouvelles tentatives, avec un backoff exponentiel, et attend l’en-tête Retry-After lorsque l’API en envoie un. Pour modifier le nombre de tentatives, appelez with_max_retries sur ClientConfig, par exemple .with_max_retries(0) pour désactiver les tentatives.

Opérations courantes

Les exemples de cette section utilisent client de Démarrage rapide.

Créer une session de paiement

Créez une session de paiement avec une URL de retour :
Redirigez le client vers session.checkout_url. Chaque URL de paiement ne fonctionne qu’une seule 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 pour un client existant.
POST /subscriptions (la méthode subscriptions().create() du SDK) est obsolète. Elle fonctionne toujours pour les intégrations existantes, mais les nouvelles intégrations doivent créer des abonnements via une Session de paiement.
billing nécessite uniquement country, une variante d’énumération CountryCode telle que CountryCode::Us. customer est une énumération CustomerRequest : transmettez AttachExistingCustomer pour un client existant ou NewCustomer pour en créer un. Pour facturer un abonnement à la demande, appelez client.subscriptions().charge().subscription_id(...) avec un corps SubscriptionsChargeParams. Les champs de montant tels que product_price sont exprimés dans la plus petite unité monétaire (par exemple, 2500 correspond à $25.00).

Facturation à l’usage

Importer 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 timestamp est None, l’événement utilise l’heure actuelle.

Lister les événements d’utilisation

Répertoriez les événements filtrés par client et par nom d’événement. Les filtres sont placés dans un objet de requête JSON :

Pagination

Les endpoints de liste renvoient une page typée dont le champ items contient la page actuelle de résultats. Pour diffuser chaque élément de toutes les pages, appelez into_stream :
Pour avancer page par page, appelez get_next_page. Il renvoie None après la dernière page :

Gestion des erreurs

Chaque méthode renvoie un dodopayments::Result<T>. Les échecs sont des variantes de l’énumération dodopayments::Error : Api pour une erreur de statut renvoyée par l’API, Http pour les erreurs de transport, Json pour les erreurs de sérialisation, Config pour les erreurs de configuration, et MissingPathParam ou MissingBody pour les requêtes incomplètes. Utilisez un match pour traiter séparément les erreurs de l’API et les erreurs de transport :

Endpoints non documentés

Pour appeler un endpoint qui ne possède aucune méthode typée, utilisez le builder de bas niveau request. Il applique l’authentification et l’URL de base. Pour nommer reqwest::Method, ajoutez reqwest 0.12 à vos dépendances :

Ressources

GitHub Repository

Code source, versions et liste complète des méthodes.

Crates.io

Le crate publié et ses versions.

API Reference

Chaque endpoint, paramètre et réponse.

Discord Community

Posez vos questions et échangez avec d’autres développeurs.

Assistance

Pour obtenir de l’aide avec le SDK Rust :

Contribution

Pour contribuer, consultez les directives de contribution.
Dernière modification le 26 septembre 2026