Instalasi
Tambahkan SDK ke proyek Anda dengan Cargo:Cargo.toml Anda:
SDK memerlukan Rust 1.75 atau yang lebih baru.
Pengantar Cepat
Client::from_env() membaca API key Anda dari environment variable DODO_PAYMENTS_API_KEY. Buat client, lalu buat checkout session:
DODO_PAYMENTS_API_KEY tidak disetel, Client::from_env() mengembalikan Error::Config. Client terhubung ke live mode kecuali Anda memilih environment lain, seperti yang ditunjukkan dalam Environments. API key test mode hanya berfungsi dalam test mode.
Fitur Inti
Async First
Dibangun di atas Tokio dan reqwest, dengan
async/await untuk setiap request.Strong Typing
Struct request dan response bertipe untuk pemeriksaan saat compile time.
Auto-Pagination
Lakukan streaming setiap item di seluruh halaman, atau pindah satu halaman setiap kali.
Configurable
Tetapkan environment, base URL, timeout, dan jumlah retry untuk setiap client.
Konfigurasi
Environment Variables
Client::from_env() membaca API key Anda dari DODO_PAYMENTS_API_KEY. SDK menggunakan URL live mode kecuali Anda menetapkan DODO_PAYMENTS_BASE_URL:
DODO_PAYMENTS_WEBHOOK_KEY dan tidak memiliki method untuk memverifikasi webhook signatures. Untuk memverifikasinya, ikuti Webhooks.
Anda juga dapat mengonfigurasi client secara eksplisit. Client::new mengembalikan Result, jadi lakukan unwrap dengan ? di dalam function yang mengembalikan dodopayments::Result:
Environments
SDK memiliki dua environment:
Base URL default adalah
https://live.dodopayments.com. Untuk memilih environment lain, gunakan enum Environment alih-alih URL hard-coded:
DODO_PAYMENTS_API_KEY dengan from_env() tetapi menargetkan environment lain, override environment pada config:
Timeouts
Timeout request default adalah 30 detik. Override timeout tersebut untuk sebuah client denganwith_timeout:
Retry-After ketika API mengirimkannya. Untuk mengubah jumlah retry, panggil with_max_retries pada ClientConfig, misalnya .with_max_retries(0) untuk menonaktifkan retry.
Operasi Umum
Contoh dalam bagian ini menggunakanclient dari Quick Start.
Membuat Checkout Session
Buat checkout session dengan return URL:session.checkout_url. Setiap checkout URL hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.
Mengelola Customers
Buat customer dengan alamat email dan nama, lalu ambil customer tersebut berdasarkan ID:Menangani Subscriptions
Buat subscription untuk customer yang sudah ada.billing hanya memerlukan country, yaitu varian enum CountryCode seperti CountryCode::Us. customer adalah enum CustomerRequest: teruskan AttachExistingCustomer untuk customer yang sudah ada atau NewCustomer untuk membuat customer baru. Untuk menagih on-demand subscription, panggil client.subscriptions().charge().subscription_id(...) dengan body SubscriptionsChargeParams. Field amount seperti product_price menggunakan unit mata uang terkecil (misalnya, 2500 adalah $25.00).Billing Berbasis Penggunaan
Memasukkan Usage Events
Kirim usage events untuk customer:event_id adalah idempotency key, jadi berikan nilai unik untuk setiap event. Jika timestamp adalah None, event menggunakan waktu saat ini.
Mencantumkan Usage Events
Cantumkan events yang difilter berdasarkan customer dan nama event. Filter dimasukkan ke dalam object query JSON:Pagination
List endpoints mengembalikan typed page yang fielditems-nya berisi halaman hasil saat ini. Untuk melakukan streaming setiap item di seluruh halaman, panggil into_stream:
get_next_page. Method ini mengembalikan None setelah halaman terakhir:
Penanganan Error
Setiap method mengembalikandodopayments::Result<T>. Failure merupakan varian dari enum dodopayments::Error: Api untuk error status dari API, Http untuk transport errors, Json untuk serialization errors, Config untuk configuration errors, serta MissingPathParam atau MissingBody untuk request yang tidak lengkap. Gunakan match pada nilai tersebut untuk menangani API errors secara terpisah dari transport errors:
Endpoints yang Tidak Terdokumentasi
Untuk memanggil endpoint yang tidak memiliki typed method, gunakan builder low-levelrequest. Builder ini menerapkan authentication dan base URL. Untuk memberi nama reqwest::Method, tambahkan reqwest 0.12 ke dependencies Anda:
Resources
GitHub Repository
Source code, releases, dan daftar method lengkap.
Crates.io
Crate yang dipublikasikan beserta versinya.
API Reference
Setiap endpoint, parameter, dan response.
Discord Community
Ajukan pertanyaan dan berdiskusi dengan developer lain.
Dukungan
Untuk mendapatkan bantuan terkait Rust SDK:- Discord: Bergabunglah dengan community server untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.