मुख्य सामग्री पर जाएं

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Ruby SDK Dodo Payments को आपके Ruby अनुप्रयोगों में एक सरल और सहज तरीके से एकीकृत करने के लिए प्रदान करता है। यह Ruby की परंपराओं और सर्वोत्तम प्रथाओं का पालन करता है, व्यापक त्रुटि प्रबंधन, पृष्ठांकन, और मध्यवर्ती समर्थन प्रदान करता है।

स्थापना

अपने Gemfile में जेम जोड़ें:
Gemfile
gem "dodopayments", "~> 2.9"
नवीनतम Dodo Payments सुविधाओं तक पहुंचने के लिए हमेशा नवीनतम SDK संस्करण का उपयोग करें। नवीनतम जानकारी के लिए bundle update dodopayments को नियमित रूप से चलाएं।
फिर चलाएं:
bundle install
SDK Ruby 3.2.0 और उसके बाद के संस्करणों का समर्थन करता है, जिसमें व्यापक प्रकार, त्रुटि हैंडलिंग और पुनः प्रयास तंत्र शामिल हैं।

त्वरित प्रारंभ

क्लाइंट को प्रारंभ करें और एक चेकआउट सत्र बनाएं:
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)
अपने API कुंजियों को वातावरण चर में सुरक्षित रूप से संग्रहीत करें। उन्हें संस्करण नियंत्रण में कभी कमिट न करें या अपने कोड में उजागर न करें।

मुख्य विशेषताएँ

Ruby Conventions

Ruby नामकरण शैलियों और आदतपूर्वक पैटर्न का पालन करता है

Elegant Syntax

साफ़, पठनीय API जो Ruby डेवलपर्स के लिए प्राकृतिक अनुभव देता है

Auto-Pagination

सूची प्रतिक्रियाओं के लिए अंतर्निर्मित ऑटो-पेजिंग इटरेटर

Type Safety

बढ़ी हुई टाइप सुरक्षा के लिए वैकल्पिक Sorbet प्रकार

कॉन्फ़िगरेशन

टाइमआउट कॉन्फ़िगरेशन

अनुरोध टाइमआउट कॉन्फ़िगर करें:
# Configure default for all requests (default is 60 seconds)
dodo_payments = Dodopayments::Client.new(
  timeout: nil # disable timeout
)

# Or, configure per-request
dodo_payments.checkout_sessions.create(
  product_cart: [{product_id: "product_id", quantity: 1}],
  request_options: {timeout: 5}
)

पुनः प्रयास कॉन्फ़िगरेशन

स्वचालित पुनः प्रयास व्यवहार कॉन्फ़िगर करें:
# Configure default for all requests (default is 2)
dodo_payments = Dodopayments::Client.new(
  max_retries: 0 # disable retries
)

# Or, configure per-request
dodo_payments.checkout_sessions.create(
  product_cart: [{product_id: "product_id", quantity: 1}],
  request_options: {max_retries: 5}
)

सामान्य संचालन

एक चेकआउट सत्र बनाएं

एक चेकआउट सत्र उत्पन्न करें:
session = dodo_payments.checkout_sessions.create(
  product_cart: [
    {
      product_id: "prod_123",
      quantity: 1
    }
  ],
  return_url: "https://yourdomain.com/return"
)

# Redirect to checkout
redirect_to session.url

ग्राहकों का प्रबंधन करें

ग्राहक जानकारी बनाएं और पुनः प्राप्त करें:
# Create a customer
customer = dodo_payments.customers.create(
  email: "customer@example.com",
  name: "John Doe",
  metadata: {
    user_id: "12345"
  }
)

# Retrieve customer
customer = dodo_payments.customers.retrieve("cus_123")
puts "Customer: #{customer.name} (#{customer.email})"

सदस्यताओं को संभालें

आवर्ती सदस्यताएँ बनाएं और प्रबंधित करें:
# Create a subscription
subscription = 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 metadata
updated = dodo_payments.subscriptions.update(
  subscription.subscription_id,
  metadata: { plan_type: "premium" }
)
billing को कम से कम दो-अक्षर ISO country कोड की आवश्यकता होती है। customer या तो { customer_id: "..." } का उपयोग करके एक मौजूदा ग्राहक को संलग्न करने के लिए स्वीकार करता है या { email: "...", name: "..." } का उपयोग करके एक नया ग्राहक बनाने के लिए। product_price सबसे कम मुद्रा संप्रदाय में है।

पृष्ठांकन

ऑटो-पृष्ठांकन

सभी पृष्ठों के माध्यम से स्वचालित रूप से इटका करें:
page = dodo_payments.payments.list

# Fetch single item from page
payment = page.items[0]
puts(payment.brand_id)

# Automatically fetches more pages as needed
page.auto_paging_each do |payment|
  puts(payment.brand_id)
end

मैनुअल पृष्ठांकन

पृष्ठांकन पर अधिक नियंत्रण के लिए:
page = dodo_payments.payments.list

if page.next_page?
  new_page = page.next_page
  puts(new_page.items[0].brand_id)
end

त्रुटि प्रबंधन

विभिन्न डोडो पेमेंट्स API त्रुटियों को संभालें:
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
आपका अनुप्रयोग उच्च-भारी परिदृश्यों को प्रभावी ढंग से संभाल सके, यह सुनिश्चित करने के लिए दर सीमा त्रुटियों के लिए घातीय बैकऑफ के साथ पुनः प्रयास तर्क को लागू करें।

Sorbet के साथ प्रकार सुरक्षा

टाइप-सुरक्षित अनुरोध पैरामीटर के लिए Sorbet का उपयोग करें:
# Type-safe using Sorbet RBI definitions
dodo_payments.checkout_sessions.create(
  product_cart: [
    Dodopayments::ProductItemReq.new(
      product_id: "product_id",
      quantity: 1
    )
  ]
)

# Hashes work, but are not typesafe
dodo_payments.checkout_sessions.create(
  product_cart: [{product_id: "product_id", quantity: 1}]
)

# You can also splat a full Params class
params = Dodopayments::CheckoutSessionCreateParams.new(
  product_cart: [
    Dodopayments::ProductItemReq.new(
      product_id: "product_id",
      quantity: 1
    )
  ]
)
dodo_payments.checkout_sessions.create(**params)

उन्नत उपयोग

डाक्यूमेंटेशनहीन एंडपॉइंट्स

डाक्यूमेंटेशनहीन एंडपॉइंट्स पर अनुरोध करें:
response = dodo_payments.request(
  method: :post,
  path: '/undocumented/endpoint',
  query: {"dog": "woof"},
  headers: {"useful-header": "interesting-value"},
  body: {"hello": "world"}
)

डाक्यूमेंटेशनहीन पैरामीटर्स

डाक्यूमेंटेशनहीन पैरामीटर्स भेजें:
checkout_session_response = dodo_payments.checkout_sessions.create(
  product_cart: [{product_id: "product_id", quantity: 1}],
  request_options: {
    extra_query: {my_query_parameter: value},
    extra_body: {my_body_parameter: value},
    extra_headers: {"my-header": value}
  }
)

# Access undocumented response properties
puts(checkout_session_response[:my_undocumented_property])

Rails एकीकरण

इनिशियलाइज़र बनाएं

config/initializers/dodo_payments.rb बनाएं:
require "dodopayments"

DODO_CLIENT = Dodopayments::Client.new(
  bearer_token: Rails.application.credentials.dodo_api_key,
  environment: Rails.env.production? ? "live_mode" : "test_mode"
)

सेवा ऑब्जेक्ट पैटर्न

एक भुगतान सेवा बनाएं:
# app/services/payment_service.rb
class PaymentService
  def initialize
    @client = DODO_CLIENT
  end

  def create_checkout(items)
    @client.checkout_sessions.create(
      product_cart: items,
      return_url: Rails.application.routes.url_helpers.checkout_return_url
    )
  end

  def process_payment(amount:, currency:, customer_id:)
    @client.payments.create(
      amount: amount,
      currency: currency,
      customer_id: customer_id
    )
  end
end

कंट्रोलर एकीकरण

अपने Rails कंट्रोलर्स में उपयोग करें:
# app/controllers/checkouts_controller.rb
class CheckoutsController < ApplicationController
  def create
    service = PaymentService.new
    session = service.create_checkout(checkout_params[:items])
    
    redirect_to session.url, allow_other_host: true
  rescue Dodopayments::Errors::APIError => e
    flash[:error] = "Payment error: #{e.message}"
    redirect_to cart_path
  end

  private

  def checkout_params
    params.require(:checkout).permit(items: [:product_id, :quantity])
  end
end

Sinatra एकीकरण

Sinatra अनुप्रयोगों के साथ उपयोग करें:
require "sinatra"
require "dodopayments"

configure do
  set :dodo_client, Dodopayments::Client.new(
    bearer_token: ENV["DODO_API_KEY"]
  )
end

post "/create-checkout" do
  content_type :json
  
  begin
    session = settings.dodo_client.checkout_sessions.create(
      product_cart: JSON.parse(request.body.read)["items"],
      return_url: "#{request.base_url}/return"
    )
    
    { checkout_url: session.url }.to_json
  rescue Dodopayments::Errors::APIError => e
    status 400
    { error: e.message }.to_json
  end
end

संसाधन

GitHub Repository

स्रोत कोड देखें और योगदान दें

API Reference

पूरी API डाक्यूमेंटेशन

Discord Community

मदद प्राप्त करें और डेवलपर्स के साथ कनेक्ट करें

Report Issues

बग रिपोर्ट करें या सुविधाओं का अनुरोध करें

समर्थन

Ruby SDK के साथ सहायता की आवश्यकता है?

योगदान दे रहे हैं

हम योगदान का स्वागत करते हैं! आरंभ करने के लिए contributing guidelines देखें।
Last modified on May 14, 2026