net/http dari standard library dan connection pool, mencoba kembali request yang gagal, melakukan iterasi melalui daftar berpaginasi untuk Anda, serta menyediakan definisi tipe RBI dan RBS.
Instalasi
Tambahkan gem ke dalam Gemfile Anda:Gemfile
SDK memerlukan Ruby 3.2.0 atau yang lebih baru.
Memulai dengan Cepat
Buat client, lalu buat checkout session:bearer_token, client akan membaca environment variable DODO_PAYMENTS_API_KEY. Jika Anda tidak menyertakan environment, client akan terhubung ke live mode. API key test mode hanya berfungsi dengan environment: "test_mode".
Fitur Utama
Ruby Conventions
Method dan keyword argument Snake_case, dengan hash biasa yang diterima untuk parameter bertingkat.
Elegant Syntax
Response berupa object dengan attribute reader, dan
obj[:prop] juga dapat membaca field yang tidak didefinisikan SDK.Auto-Pagination
auto_paging_each melakukan iterasi pada setiap item dan mengambil halaman berikutnya bila diperlukan.Type Safety
Definisi RBI untuk Sorbet, tanpa dependensi pada
sorbet-runtime.Konfigurasi
Dodopayments::Client.new menerima bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay, dan max_retry_delay. Jika Anda tidak menyertakannya, client akan membaca DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (webhook signing secret Anda), dan DODO_PAYMENTS_BASE_URL dari environment. Client ini thread-safe dan memiliki connection pool sendiri, jadi buat satu client untuk aplikasi Anda dan gunakan kembali.
Untuk memverifikasi webhook, teruskan raw request body dan header ke dodo_payments.webhooks.unwrap(payload, headers: headers). Method ini memeriksa signature menggunakan webhook key Anda dan mengembalikan event yang telah di-parse. dodo_payments.webhooks.unsafe_unwrap(payload) mem-parse body tanpa memverifikasinya, jadi gunakan hanya untuk testing. Lihat Webhooks.
Konfigurasi Timeout
Request mengalami timeout setelah 60 detik secara default. Aturtimeout, dalam satuan detik, pada client atau satu request tertentu:
Dodopayments::Errors::APITimeoutError. Request yang mengalami timeout akan dicoba kembali secara default.
Konfigurasi Retry
SDK mencoba kembali connection error, timeout, dan response dengan status 408, 409, 429, atau 500 ke atas. Secara default, SDK mencoba kembali sebanyak dua kali dengan exponential backoff singkat. Aturmax_retries pada client atau satu request tertentu:
Operasi Umum
Contoh dalam bagian ini menggunakan clientdodo_payments dari Quick Start.
Membuat Checkout Session
Buat checkout session, lalu redirect customer kecheckout_url yang dikembalikan:
Mengelola Customer
Buat customer dengan alamat email dan nama, lalu ambil berdasarkan ID:Menangani Subscription
Buat subscription, kenakan biaya pada on-demand subscription, dan perbarui metadata subscription.billing hanya memerlukan country, yaitu kode negara ISO dua huruf. customer menerima { customer_id: "..." } untuk melampirkan customer yang sudah ada atau { email: "...", name: "..." } untuk membuat customer baru. charge digunakan untuk on-demand subscriptions, dan product_price dinyatakan dalam unit terkecil mata uang.Pagination
Auto-Pagination
Method list mengembalikan sebuah halaman. Bacaitems untuk halaman saat ini, atau panggil auto_paging_each untuk melakukan iterasi pada setiap item. Method ini mengambil halaman berikutnya saat diperlukan:
Pagination Manual
Untuk berpindah satu halaman setiap kali, panggilnext_page? dan next_page:
Penanganan Error
Saat SDK tidak dapat terhubung ke API, atau API mengembalikan status 4xx atau 5xx, SDK akan memunculkan subclass dariDodopayments::Errors::APIError:
status, headers, dan body:
Type Safety dengan Sorbet
SDK menyediakan definisi RBI dan tidak bergantung padasorbet-runtime. Untuk mendapatkan type-checking pada parameter request, teruskan model class, bukan hash:
Penggunaan Lanjutan
Endpoint yang Tidak Terdokumentasi
Untuk memanggil endpoint yang tidak memiliki method SDK, gunakanrequest. Method ini menerapkan authentication dan retries yang sama seperti method SDK:
Parameter yang Tidak Terdokumentasi
Untuk mengirim parameter yang tidak didefinisikan SDK, teruskan parameter tersebut dalamrequest_options. Parameter extra_* dengan nama yang sama seperti parameter terdokumentasi akan menggantikannya:
Integrasi Rails
Membuat Initializer
Buat satu client saat Rails dimulai, diconfig/initializers/dodo_payments.rb:
Pola Service Object
Bungkus client dalam service object:Integrasi Controller
Panggil service dari controller dan redirect ke halaman checkout:Integrasi Sinatra
Buat client sekali dalam blokconfigure dan gunakan di routes Anda:
Resource
GitHub Repository
Source code, releases, dan daftar method lengkap.
API Reference
Setiap endpoint, parameter, dan response.
Discord Community
Ajukan pertanyaan dan berdiskusi dengan developer lain.
Report Issues
Laporkan bug atau ajukan fitur.
Dukungan
Untuk mendapatkan bantuan terkait Ruby SDK:- Discord: Bergabunglah dengan community server untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.