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
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 :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".
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éfinisseztimeout, en secondes, sur le client ou sur une requête individuelle :
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éfinissezmax_retries sur le client ou sur une requête individuelle :
Opérations courantes
Les exemples de cette section utilisent le clientdodo_payments de Démarrage rapide.
Créer une session de paiement
Créez une session de paiement, puis redirigez le client vers lecheckout_url renvoyé :
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.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. Lisezitems 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, appeleznext_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 deDodopayments::Errors::APIError :
status, headers et body :
Sécurité des types avec Sorbet
Le SDK fournit des définitions RBI et ne dépend pas desorbet-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, utilisezrequest. 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 dansrequest_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, dansconfig/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 blocconfigure 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 :- 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.