Use this file to discover all available pages before exploring further.
Le SDK Ruby fournit un moyen simple et intuitif d’intégrer Dodo Payments dans vos applications Ruby. Il suit les conventions et les meilleures pratiques de Ruby, offrant une gestion complète des erreurs, de la pagination et un support middleware.
Utilisez toujours la dernière version du SDK pour accéder aux fonctionnalités les plus récentes de Dodo Payments. Exécutez bundle update dodopayments régulièrement pour rester à jour.
Puis exécutez :
bundle install
Le SDK prend en charge Ruby 3.2.0 et les versions ultérieures, avec des types complets, la gestion des erreurs et des mécanismes de nouvelle tentative.
Initialisez le client et créez une session de paiement :
require "bundler/setup"require "dodopayments"dodo_payments = Dodopayments::Client.new( bearer_token: ENV["DODO_PAYMENTS_API_KEY"], # This is the default and can be omitted environment: "test_mode" # defaults to "live_mode")checkout_session_response = dodo_payments.checkout_sessions.create( product_cart: [{product_id: "product_id", quantity: 1}])puts(checkout_session_response.session_id)
Stockez vos clés API de manière sécurisée en utilisant des variables d’environnement. Ne les validez jamais dans le contrôle de version ni ne les exposez dans votre code.
# Create a subscriptionsubscription = dodo_payments.subscriptions.create( billing: { country: "US", city: "San Francisco", state: "CA", street: "1 Market St", zipcode: "94105" }, customer: { customer_id: "cus_123" }, # or { email: "...", name: "..." } for a new customer product_id: "pdt_456", quantity: 1)# Charge an on-demand subscription# product_price is in the lowest currency denomination (e.g., 2500 = $25.00 USD)charge = dodo_payments.subscriptions.charge( subscription.subscription_id, product_price: 2500)# Update subscription metadataupdated = dodo_payments.subscriptions.update( subscription.subscription_id, metadata: { plan_type: "premium" })
billing nécessite au minimum le code ISO à deux lettres country. customer accepte soit { customer_id: "..." } pour attacher un client existant, soit { email: "...", name: "..." } pour en créer un nouveau. product_price est dans la plus petite dénomination de la devise.
Itérer automatiquement à travers toutes les pages :
page = dodo_payments.payments.list# Fetch single item from pagepayment = page.items[0]puts(payment.brand_id)# Automatically fetches more pages as neededpage.auto_paging_each do |payment| puts(payment.brand_id)end
begin checkout_session = dodo_payments.checkout_sessions.create(product_cart: [{product_id: "product_id", quantity: 1}] )rescue Dodopayments::Errors::APIConnectionError => e puts("The server could not be reached") puts(e.cause) # an underlying Exception, likely raised within `net/http`rescue Dodopayments::Errors::RateLimitError => e puts("A 429 status code was received; we should back off a bit.")rescue Dodopayments::Errors::APIStatusError => e puts("Another non-200-range status code was received") puts(e.status)end
Implémentez une logique de reprise avec backoff exponentiel pour les erreurs de limite de débit afin de vous assurer que votre application gère correctement les scénarios à fort volume.
Utiliser Sorbet pour des paramètres de requête de type sécurisé :
# Type-safe using Sorbet RBI definitionsdodo_payments.checkout_sessions.create( product_cart: [ Dodopayments::ProductItemReq.new( product_id: "product_id", quantity: 1 ) ])# Hashes work, but are not typesafedodo_payments.checkout_sessions.create( product_cart: [{product_id: "product_id", quantity: 1}])# You can also splat a full Params classparams = Dodopayments::CheckoutSessionCreateParams.new( product_cart: [ Dodopayments::ProductItemReq.new( product_id: "product_id", quantity: 1 ) ])dodo_payments.checkout_sessions.create(**params)