Use this file to discover all available pages before exploring further.
Ruby SDK:n erbjuder ett enkelt och intuitivt sätt att integrera Dodo Payments i dina Ruby-applikationer. Den följer Ruby-konventioner och bästa praxis, och erbjuder omfattande felhantering, paginering och middleware-stöd.
Använd alltid den senaste SDK-versionen för att få tillgång till de nyaste funktionerna i Dodo Payments. Kör bundle update dodopayments regelbundet för att hålla dig uppdaterad.
Kör sedan:
bundle install
SDK:en stöder Ruby 3.2.0 och senare versioner, med omfattande typer, felhantering och återförsöksmekanismer.
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)
Lagra dina API-nycklar säkert med hjälp av miljövariabler. Släpp dem aldrig till versionshantering eller exponera dem i din kod.
# 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 kräver minst den två bokstäver långa ISO country koden. customer accepterar antingen { customer_id: "..." } för att bifoga en befintlig kund eller { email: "...", name: "..." } för att skapa en ny. product_price är i den lägsta valutadenomineringen.
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
Implementera logik för omförsök med exponentiell backoff för att hantera begränsningsfel och säkerställa att din applikation hanterar högvolymscenarier smidigt.
Använd Sorbet för typsäkra förfrågningsparametrar:
# 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)