Skip to main content
Rust SDK ger asynkrona Rust-applikationer typad åtkomst till Dodo Payments REST API. Det är byggt på Tokio och reqwest, använder typade strukturer för requests och responses, streamar paginerade resultat och försöker skicka misslyckade requests igen.

Installation

Lägg till SDK till ditt projekt med Cargo:
Eller lägg till det manuellt i din 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:
Om 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.
Förvara API-nycklar i miljövariabler eller en secrets manager. Hårdkoda dem aldrig i källkoden.

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:
Rust SDK läser inte 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:
Om du vill fortsätta läsa API-nyckeln från 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 med with_timeout:
Klienten försöker igen vid anslutningsfel och responses med status 408, 409, 429 eller 500 och högre. Som standard gör den två nya försök, med exponentiell backoff, och väntar på headern 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änder client från Snabbstart.

Skapa en checkout-session

Skapa en checkout-session med en return URL:
Omdirigera kunden till 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.
POST /subscriptions (SDK:ts subscriptions().create()-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
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ält items innehåller den aktuella resultatsidan. Om du vill streama alla objekt över alla sidor anropar du into_stream:
Om du vill gå igenom en sida i taget anropar du get_next_page. Den returnerar None efter den sista sidan:

Felhantering

Varje metod returnerar en dodopayments::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:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026