Integra Dodo Payments nelle tue applicazioni Rust con un SDK fortemente tipizzato e orientato all’async, basato su Tokio e reqwest
Il Rust SDK fornisce un accesso comodo e orientato all’async al REST API di Dodo Payments dalle applicazioni scritte in Rust. Offre richieste e risposte fortemente tipizzate, helper di paginazione integrati e timeout e ambienti configurabili.
Il client legge la tua key API dalla variabile di ambiente DODO_PAYMENTS_API_KEY per impostazione predefinita. Inizializza il client e crea la tua prima sessione di checkout:
use dodopayments::Client;#[tokio::main]async fn main() -> dodopayments::Result<()> { let client = Client::from_env()?; let result = client .checkout_sessions() .create() .body(dodopayments::models::CheckoutSessionsCreateParams { product_cart: Some(vec![dodopayments::models::ProductItemReq { product_id: "product_id".to_string(), quantity: 1, addons: None, amount: None, credit_entitlements: None, }]), ..Default::default() }) .await?; println!("{result:?}"); Ok(())}
Archivia sempre le tue key API in modo sicuro utilizzando variabili di ambiente. Non inserirle mai nel tuo codice sorgente.
Per impostazione predefinita, Client::from_env() legge la tua key API dalla variabile di ambiente DODO_PAYMENTS_API_KEY e utilizza l’URL di base predefinito a meno che tu non imposti DODO_PAYMENTS_BASE_URL:
Puoi anche configurare esplicitamente il client. Client::new restituisce un Result, quindi estrailo con ? all’interno di una funzione che restituisce 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(())}
L’URL di base predefinito è https://live.dodopayments.com. Seleziona un altro ambiente con l’enum Environment invece di codificare gli URL:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new( ClientConfig::from_environment(Environment::TestMode).with_api_key("My API Key"),)?;
Per continuare a leggere la key API da DODO_PAYMENTS_API_KEY tramite from_env() mentre si punta a un ambiente non predefinito, sostituirlo nella configurazione:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new(ClientConfig::from_env()?.with_environment(Environment::TestMode))?;
billing richiede almeno il codice ISO a due lettere country. customer è un enum CustomerRequest — passa AttachExisting per un cliente esistente o New per uno nuovo. I campi di importo come product_price sono nell’unità più bassa della valuta (e.g., 2500 = $25.00 USD).
Gli endpoint dell’elenco restituiranno una pagina tipizzata il cui campo items contiene la pagina corrente dei risultati. Trasmetti ogni elemento attraverso tutte le pagine con 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:?}");}
Oppure avanza una pagina alla volta con 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, }}
Ogni metodo restituisce un dodopayments::Result<T>. I fallimenti sono rappresentati dall’enum dodopayments::Error. Puoi gestire gli errori API in modo distinto dagli errori di trasporto tramite match: