Integrieren Sie Dodo Payments in Ihre Rust-Anwendungen mit einem asynchronen, stark typisierten SDK, das auf Tokio und reqwest basiert.
Das Rust SDK bietet bequemen, asynchronen Zugriff auf die REST-API von Dodo Payments aus in Rust geschriebenen Anwendungen. Es bietet stark typisierte Anfragen und Antworten, eingebaute Paginierungshilfen sowie konfigurierbare Timeouts und Umgebungen.
Der Client liest standardmäßig Ihren API-Schlüssel aus der Umgebungseinstellung DODO_PAYMENTS_API_KEY. Initialisieren Sie den Client und erstellen Sie Ihre erste Checkout-Sitzung:
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(())}
Speichern Sie Ihre API-Schlüssel immer sicher mit Umgebungseinstellungen. Nie hartkodiert in Ihrem Quellcode.
Standardmäßig liest Client::from_env() Ihren API-Schlüssel aus der Umgebungseinstellung DODO_PAYMENTS_API_KEY und verwendet die Standard-Basis-URL, es sei denn, Sie setzen DODO_PAYMENTS_BASE_URL:
Sie können den Client auch explizit konfigurieren. Client::new gibt ein Result zurück, also verwenden Sie ? in einer Funktion, die dodopayments::Result zurückgibt:
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(())}
Die Standardbasis-URL ist https://live.dodopayments.com. Wählen Sie eine andere Umgebung mit der Environment-Enum anstelle von hartcodierten URLs:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new( ClientConfig::from_environment(Environment::TestMode).with_api_key("My API Key"),)?;
Um den API-Schlüssel weiterhin aus DODO_PAYMENTS_API_KEY über from_env() zu lesen und gleichzeitig eine nicht standardmäßige Umgebung anzusprechen, überschreiben Sie ihn in der Konfiguration:
use dodopayments::{Client, ClientConfig, Environment};let client = Client::new(ClientConfig::from_env()?.with_environment(Environment::TestMode))?;
billing erfordert mindestens den zweibuchstabigen ISO country-Code. customer ist ein CustomerRequest-Enum — übergeben Sie AttachExisting für einen bestehenden Kunden oder New für einen neuen. Betragsfelder wie product_price sind in der kleinsten Währungseinheit (z.B., 2500 = $25,00 USD).
Listenendpunkte geben eine typisierte Seite zurück, deren items-Feld die aktuelle Seite der Ergebnisse enthält. Streamen Sie jedes Element über alle Seiten mit 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:?}");}
Oder gehen Sie mit get_next_page eine Seite nach der anderen weiter:
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, }}
Jede Methode gibt ein dodopayments::Result<T> zurück. Fehler werden durch das dodopayments::Error-Enum dargestellt. Verwenden Sie Match, um API-Fehler unterschiedlich von Transportfehlern zu behandeln:
Um einen Endpunkt aufzurufen, der noch nicht als typisierte Methode vorhanden ist, verwenden Sie den Low-Level request-Builder, der Authentifizierung und die Basis-URL anwendet:
let response = client .request(reqwest::Method::GET, "/some/path") .send() .await?;