Integrasikan Dodo Payments ke dalam aplikasi Rust Anda dengan SDK terketik kuat yang mengutamakan keselarasan berbasis async, dibangun di atas Tokio dan reqwest
SDK Rust menyediakan akses yang mudah dan berbasis async ke Dodo Payments REST API dari aplikasi yang ditulis dalam Rust. Ini menawarkan permintaan dan respons yang terketik kuat, pembantu penomoran halaman bawaan, dan batas waktu serta lingkungan yang dapat dikonfigurasi.
Secara default, Client::from_env() membaca API key Anda dari variabel lingkungan DODO_PAYMENTS_API_KEY dan menggunakan URL dasar default kecuali Anda mengatur DODO_PAYMENTS_BASE_URL:
Anda juga dapat mengonfigurasi klien secara eksplisit. Client::new mengembalikan Result, jadi buka dengan ? di dalam fungsi yang mengembalikan dodopayments::Result:
use dodopayments::{Client, ClientConfig};#[tokio::main]async fn main() -> dodopayments::Result<()> { let client = Client::new( ClientConfig::new("https://live.dodopayments.com").with_api_key("My API Key"), )?; println!("{}", client.base_url()); Ok(())}
URL dasar default adalah https://live.dodopayments.com. Pilih lingkungan lain dengan enum Environment alih-alih menanamkan URL langsung:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new( ClientConfig::from_environment(Environment::TestMode).with_api_key("My API Key"),)?;
Untuk terus membaca API key dari DODO_PAYMENTS_API_KEY via from_env() sambil menargetkan lingkungan non-default, menimpanya pada konfigurasi:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new(ClientConfig::from_env()?.with_environment(Environment::TestMode))?;
billing memerlukan minimal kode ISO dua huruf country. customer adalah enum CustomerRequest — berikan AttachExisting untuk pelanggan yang sudah ada atau New untuk yang baru. Bidang jumlah seperti product_price ada pada denominasi mata uang terendah (mis., 2500 = $25.00 USD).
Endpoint daftar mengembalikan halaman yang terketik yang bidang items memegang halaman hasil saat ini. Melakukan streaming setiap item di seluruh halaman dengan into_stream:
use futures::StreamExt;let mut items = Box::pin( client .payments() .list() .query(serde_json::json!({})) .await? .into_stream(),);while let Some(item) = items.next().await { let item = item?; println!("{item:?}");}
Atau majukan satu halaman pada satu waktu dengan get_next_page:
let mut page = client .payments() .list() .query(serde_json::json!({})) .await?;loop { for item in &page.items { println!("{item:?}"); } match page.get_next_page().await? { Some(next) => page = next, None => break, }}
Setiap metode mengembalikan dodopayments::Result<T>. Kegagalan diwakili oleh enum dodopayments::Error. Cocokkan untuk menangani kesalahan API secara berbeda dari kesalahan transportasi:
Untuk memanggil endpoint yang belum diungkapkan sebagai metode terketik, gunakan pembangun request tingkat rendah, yang menerapkan otentikasi dan URL dasar:
let response = client .request(reqwest::Method::GET, "/some/path") .send() .await?;