دمج مدفوعات دودي في تطبيقات روبي الخاصة بك باستخدام SDK أنيق ومناسب للغة روبي
يوفر SDK روبي طريقة بسيطة وبديهية لدمج مدفوعات دودي في تطبيقات روبي الخاصة بك. يتبع تقاليد روبي وأفضل الممارسات، ويقدم معالجة شاملة للأخطاء، والترقيم، ودعم البرمجيات الوسيطة.
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 الخاصة بك بشكل آمن باستخدام متغيرات البيئة. لا تقم أبدًا بالتزامها في التحكم في الإصدارات أو كشفها في كودك.
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: 0}] )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 لمعلمات الطلبات الآمنة من حيث النوع:
نسخ
# Type-safe using Sorbet RBI definitionsdodo_payments.checkout_sessions.create( product_cart: [ Dodopayments::CheckoutSessionRequest::ProductCart.new( product_id: "product_id", quantity: 0 ) ])# Hashes work, but are not typesafedodo_payments.checkout_sessions.create( product_cart: [{product_id: "product_id", quantity: 0}])# You can also splat a full Params classparams = Dodopayments::CheckoutSessionCreateParams.new( product_cart: [ Dodopayments::CheckoutSessionRequest::ProductCart.new( product_id: "product_id", quantity: 0 ) ])dodo_payments.checkout_sessions.create(**params)