Skip to main content
Le SDK Ruby permet aux applications Ruby d’accéder à l’API REST Dodo Payments. Il envoie les requêtes avec net/http de la bibliothèque standard et un pool de connexions, réessaie les requêtes échouées, parcourt automatiquement les listes paginées et fournit des définitions de types RBI et RBS.

Installation

Ajoutez la gem à votre Gemfile :
Gemfile
Les versions du SDK prennent en charge les modifications de l’API. Exécutez régulièrement bundle update dodopayments pour rester à jour.
Installez-le ensuite :
Le SDK nécessite Ruby 3.2.0 ou une version ultérieure.

Démarrage rapide

Créez un client, puis créez une session de paiement :
Si vous omettez bearer_token, le client lit la variable d’environnement DODO_PAYMENTS_API_KEY. Si vous omettez environment, le client se connecte au mode live. Une clé API de mode test fonctionne uniquement avec environment: "test_mode".
Conservez les clés API dans des variables d’environnement ou un gestionnaire de secrets. Ne les validez jamais dans le contrôle de version et ne les exposez pas dans votre code.

Fonctionnalités principales

Ruby Conventions

Méthodes et arguments nommés en snake_case, avec prise en charge des hashes simples pour les paramètres imbriqués.

Elegant Syntax

Les réponses sont des objets dotés d’accesseurs d’attributs, et obj[:prop] lit également les champs que le SDK ne définit pas.

Auto-Pagination

auto_paging_each parcourt chaque élément et récupère la page suivante si nécessaire.

Type Safety

Définitions RBI pour Sorbet, sans dépendance à sorbet-runtime.

Configuration

Dodopayments::Client.new accepte bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay et max_retry_delay. Lorsque vous les omettez, il lit DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (votre secret de signature des webhooks) et DODO_PAYMENTS_BASE_URL depuis l’environnement. Le client est thread-safe et conserve son propre pool de connexions ; créez donc un seul client pour votre application et réutilisez-le. Pour vérifier un webhook, transmettez le corps brut de la requête et les en-têtes à dodo_payments.webhooks.unwrap(payload, headers: headers). Il vérifie la signature avec votre clé de webhook et renvoie l’événement analysé. dodo_payments.webhooks.unsafe_unwrap(payload) analyse le corps sans le vérifier ; utilisez-le donc uniquement pour les tests. Consultez Webhooks.

Configuration du délai d’expiration

Les requêtes expirent par défaut après 60 secondes. Définissez timeout, en secondes, sur le client ou sur une requête individuelle :
Lorsqu’une requête expire, le SDK lève Dodopayments::Errors::APITimeoutError. Les requêtes expirées sont réessayées par défaut.

Configuration des nouvelles tentatives

Le SDK réessaie les erreurs de connexion, les dépassements de délai et les réponses dont le statut est 408, 409, 429 ou 500 et supérieur. Il réessaie deux fois par défaut, avec un court backoff exponentiel. Définissez max_retries sur le client ou sur une requête individuelle :

Opérations courantes

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

Créer une session de paiement

Créez une session de paiement, puis redirigez le client vers le checkout_url renvoyé :
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 identifiant :

Gérer les abonnements

Créez un abonnement, facturez un abonnement à la demande et mettez à jour les métadonnées d’un abonnement.
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, 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.

Pagination

Pagination automatique

Les méthodes de liste renvoient une page. Lisez items pour consulter la page actuelle, ou appelez auto_paging_each pour parcourir chaque élément. La page suivante est récupérée lorsque nécessaire :

Pagination manuelle

Pour avancer page par page, appelez next_page? et next_page :

Gestion des erreurs

Lorsque le SDK ne parvient pas à se connecter à l’API ou que l’API renvoie un statut 4xx ou 5xx, le SDK lève une sous-classe de Dodopayments::Errors::APIError :
La classe d’erreur dépend de la cause. Chaque erreur possède les attributs status, headers et body :
Le SDK réessaie déjà les réponses 429 avec un backoff exponentiel. Un RateLimitError signifie que ces nouvelles tentatives ont également échoué ; attendez donc plus longtemps avant de renvoyer la requête.

Sécurité des types avec Sorbet

Le SDK fournit des définitions RBI et ne dépend pas de sorbet-runtime. Pour vérifier les types des paramètres de requête, transmettez des classes de modèles plutôt que des hashes :

Utilisation avancée

Points de terminaison non documentés

Pour appeler un point de terminaison qui ne possède aucune méthode SDK, utilisez request. Il applique la même authentification et les mêmes nouvelles tentatives que les méthodes du SDK :

Paramètres non documentés

Pour envoyer des paramètres que le SDK ne définit pas, transmettez-les dans request_options. Un paramètre extra_* portant le même nom qu’un paramètre documenté prend le dessus :

Intégration Rails

Créer un initialiseur

Créez un seul client au démarrage de Rails, dans config/initializers/dodo_payments.rb :

Modèle d’objet de service

Encapsulez le client dans un objet de service :

Intégration dans un contrôleur

Appelez le service depuis un contrôleur et redirigez vers la page de paiement :

Intégration Sinatra

Créez le client une seule fois dans un bloc configure et utilisez-le dans vos routes :

Ressources

GitHub Repository

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

API Reference

Chaque point de terminaison, 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 avec le SDK Ruby :

Contribuer

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