Installation
Lägg till SDK till ditt projekt med Cargo:Cargo.toml:
SDK:t kräver Rust 1.75 eller senare.
Snabbstart
Client::from_env() läser din API-nyckel från miljövariabeln DODO_PAYMENTS_API_KEY. Skapa en klient och skapa sedan en checkout-session:
DODO_PAYMENTS_API_KEY inte är angiven returnerar Client::from_env() en Error::Config. Klienten ansluter till live-läge om du inte väljer en annan miljö, enligt beskrivningen i Miljöer. En API-nyckel för testläge fungerar endast i testläge.
Kärnfunktioner
Async First
Byggt på Tokio och reqwest, med
async/await för varje request.Strong Typing
Typade strukturer för requests och responses som möjliggör kontroller vid kompilering.
Auto-Pagination
Streama varje objekt över flera sidor eller gå igenom en sida i taget.
Configurable
Ange miljö, base URL, timeout och antal retries för varje klient.
Konfiguration
Miljövariabler
Client::from_env() läser din API-nyckel från DODO_PAYMENTS_API_KEY. Den använder URL:en för live-läge om du inte anger DODO_PAYMENTS_BASE_URL:
DODO_PAYMENTS_WEBHOOK_KEY och har ingen metod som verifierar webhook-signaturer. Följ Webhooks för att verifiera dem.
Du kan även konfigurera klienten explicit. Client::new returnerar en Result, så använd unwrap med ? i en funktion som returnerar dodopayments::Result:
Miljöer
SDK:t har två miljöer:
Standardvärdet för base URL är
https://live.dodopayments.com. Om du vill välja en annan miljö använder du enumen Environment i stället för en hårdkodad URL:
DODO_PAYMENTS_API_KEY med from_env() men rikta klienten mot en annan miljö, åsidosätter du miljön i konfigurationen:
Tidsgränser
Standardvärdet för request-timeout är 30 sekunder. Åsidosätt det för en klient medwith_timeout:
Retry-After när API:et skickar en sådan. Om du vill ändra antalet retries anropar du with_max_retries på ClientConfig, till exempel .with_max_retries(0) för att stänga av retries.
Vanliga operationer
Exemplen i det här avsnittet använderclient från Snabbstart.
Skapa en checkout-session
Skapa en checkout-session med en return URL:session.checkout_url. Varje checkout-URL kan användas en gång och upphör att gälla efter 24 timmar. Information om alla session-alternativ finns i Checkout Sessions.
Hantera kunder
Skapa en kund med en e-postadress och ett namn och hämta den sedan med dess ID:Hantera prenumerationer
Skapa en prenumeration för en befintlig kund.billing kräver endast country, en CountryCode enum-variant som CountryCode::Us. customer är en CustomerRequest enum: skicka AttachExistingCustomer för en befintlig kund eller NewCustomer för att skapa en. Om du vill debitera en on-demand-prenumeration anropar du client.subscriptions().charge().subscription_id(...) med en SubscriptionsChargeParams body. Beloppsfält som product_price anges i valutans minsta enhet (exempelvis motsvarar 2500 $25.00).Förbrukningsbaserad fakturering
Ta emot användningshändelser
Skicka användningshändelser för en kund:event_id är idempotency key, så ge varje händelse ett unikt värde. Om timestamp är None använder händelsen den aktuella tiden.
Lista användningshändelser
Lista händelser filtrerade efter kund och händelsenamn. Filtren anges i ett JSON-queryobjekt:Paginering
List-endpoints returnerar en typad sida vars fältitems innehåller den aktuella resultatsidan. Om du vill streama alla objekt över alla sidor anropar du into_stream:
get_next_page. Den returnerar None efter den sista sidan:
Felhantering
Varje metod returnerar endodopayments::Result<T>. Fel är varianter av enumen dodopayments::Error: Api för en felstatus från API:et, Http för transportfel, Json för serialiseringsfel, Config för konfigurationsfel och MissingPathParam eller MissingBody för ofullständiga requests. Matcha mot den för att hantera API-fel separat från transportfel:
Ej dokumenterade endpoints
Om du vill anropa en endpoint som saknar en typad metod använder du buildern på låg nivå,request. Den tillämpar autentisering och base URL. Om du vill ange reqwest::Method lägger du till reqwest 0.12 i dina dependencies:
Resurser
GitHub Repository
Källkod, releases och den fullständiga metodlistan.
Crates.io
Det publicerade paketet och dess versioner.
API Reference
Varje endpoint, parameter och response.
Discord Community
Ställ frågor och prata med andra utvecklare.
Support
Om du behöver hjälp med Rust SDK:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Öppna ett ärende i kodförrådet.