Use this file to discover all available pages before exploring further.
SDK Ruby menyediakan cara yang sederhana dan intuitif untuk mengintegrasikan Dodo Payments ke dalam aplikasi Ruby Anda. Ini mengikuti konvensi dan praktik terbaik Ruby, menawarkan penanganan kesalahan yang komprehensif, paginasi, dan dukungan middleware.
Selalu gunakan versi SDK terbaru untuk mengakses fitur Dodo Payments yang paling mutakhir. Jalankan bundle update dodopayments secara berkala untuk tetap terbaru.
Kemudian jalankan:
bundle install
SDK mendukung Ruby 3.2.0 dan versi yang lebih baru, dengan tipe lengkap, penanganan kesalahan, dan mekanisme retry.
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)
Simpan kunci API Anda dengan aman menggunakan variabel lingkungan. Jangan pernah meng-commit atau mengeksposnya di kode Anda.
# 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 memerlukan setidaknya kode country ISO dua huruf. customer menerima { customer_id: "..." } untuk melampirkan pelanggan yang sudah ada atau { email: "...", name: "..." } untuk membuat pelanggan baru. product_price dalam denominasi mata uang terendah.
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
Implementasikan logika retry dengan eksponensial backoff untuk kesalahan batasan jumlah agar aplikasi Anda dapat menangani skenario volume tinggi dengan lancar.
Gunakan Sorbet untuk parameter permintaan yang aman tipe:
# 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)