Installation
Ajoutez le SDK à votre projet avec Cargo :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 :
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.
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 :
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 :
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 avecwith_timeout :
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 utilisentclient de Démarrage rapide.
Créer une session de paiement
Créez une session de paiement avec une URL de retour :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.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 champitems contient la page actuelle de résultats. Pour diffuser chaque élément de toutes les pages, appelez into_stream :
get_next_page. Il renvoie None après la dernière page :
Gestion des erreurs
Chaque méthode renvoie undodopayments::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 niveaurequest. 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 :- 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.