Tích hợp Dodo Payments vào các ứng dụng Ruby của bạn với một SDK tự nhiên cho Ruby
SDK Ruby cung cấp một cách đơn giản và trực quan để tích hợp Dodo Payments vào các ứng dụng Ruby của bạn. Nó tuân theo các quy ước và thực tiễn tốt nhất của Ruby, cung cấp xử lý lỗi toàn diện, phân trang và hỗ trợ middleware.
Luôn sử dụng phiên bản SDK mới nhất để truy cập các tính năng mới nhất của Dodo Payments. Chạy bundle update dodopayments thường xuyên để luôn cập nhật.
Sau đó chạy:
Sao chép
bundle install
SDK hỗ trợ Ruby 3.2.0 và các phiên bản mới hơn, với các kiểu toàn diện, xử lý lỗi và cơ chế thử lại.
Khởi tạo client và tạo một phiên giao dịch thanh toán:
Sao chép
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)
Lưu trữ khóa API của bạn một cách an toàn bằng biến môi trường. Không bao giờ đưa chúng vào hệ thống kiểm soát phiên bản hoặc để lộ trong mã của bạn.
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
Triển khai logic thử lại với exponential backoff cho các lỗi giới hạn tốc độ để đảm bảo ứng dụng của bạn xử lý tốt các tình huống lưu lượng cao.
Sử dụng Sorbet cho các tham số yêu cầu an toàn kiểu:
Sao chép
# 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)