Skip to main content
Das Rust SDK bietet asynchronen Rust-Anwendungen typisierten Zugriff auf die Dodo Payments REST API. Es basiert auf Tokio und reqwest, verwendet typisierte Request- und Response-Strukturen, streamt paginierte Ergebnisse und wiederholt fehlgeschlagene Requests.

Installation

Fügen Sie das SDK mit Cargo zu Ihrem Projekt hinzu:
Oder fügen Sie es manuell zu Ihrer Cargo.toml hinzu:
Das SDK erfordert Rust 1.75 oder höher.

Schnellstart

Client::from_env() liest Ihren API-Schlüssel aus der Umgebungsvariable DODO_PAYMENTS_API_KEY. Erstellen Sie einen Client und anschließend eine Checkout-Sitzung:
Wenn DODO_PAYMENTS_API_KEY nicht gesetzt ist, gibt Client::from_env() ein Error::Config zurück. Der Client stellt eine Verbindung zum Live-Modus her, sofern Sie keine andere Umgebung auswählen, wie unter Umgebungen gezeigt. Ein API-Schlüssel für den Testmodus funktioniert nur im Testmodus.
Bewahren Sie API-Schlüssel in Umgebungsvariablen oder einem Secrets Manager auf. Hinterlegen Sie sie niemals fest in Ihrem Quellcode.

Kernfunktionen

Async First

Basiert auf Tokio und reqwest, mit async/await für jeden Request.

Strong Typing

Typisierte Request- und Response-Strukturen für Prüfungen zur Compile-Zeit.

Auto-Pagination

Streamen Sie jedes Element über alle Seiten hinweg oder wechseln Sie seitenweise.

Configurable

Legen Sie Umgebung, Basis-URL, Timeout und Anzahl der Wiederholungsversuche für jeden Client fest.

Konfiguration

Umgebungsvariablen

Client::from_env() liest Ihren API-Schlüssel aus DODO_PAYMENTS_API_KEY. Standardmäßig wird die URL des Live-Modus verwendet, sofern Sie nicht DODO_PAYMENTS_BASE_URL setzen:
Das Rust SDK liest DODO_PAYMENTS_WEBHOOK_KEY nicht aus und verfügt über keine Methode zur Überprüfung von Webhook-Signaturen. Folgen Sie zur Überprüfung Webhooks. Sie können den Client auch explizit konfigurieren. Client::new gibt ein Result zurück. Entpacken Sie es daher mit ? innerhalb einer Funktion, die dodopayments::Result zurückgibt:

Umgebungen

Das SDK verfügt über zwei Umgebungen: Die standardmäßige Basis-URL ist https://live.dodopayments.com. Verwenden Sie zur Auswahl einer anderen Umgebung das Enum Environment anstelle einer fest codierten URL:
Um den API-Schlüssel weiterhin aus DODO_PAYMENTS_API_KEY mit from_env() auszulesen, aber eine andere Umgebung anzusprechen, überschreiben Sie die Umgebung in der Konfiguration:

Timeouts

Das standardmäßige Request-Timeout beträgt 30 Sekunden. Überschreiben Sie es für einen Client mit with_timeout:
Der Client wiederholt Verbindungsfehler und Antworten mit dem Status 408, 409, 429 oder 500 und höher. Standardmäßig wird ein Request zweimal mit exponentiellem Backoff wiederholt. Wenn die API einen Retry-After-Header sendet, wartet der Client dessen Wert ab. Um die Anzahl der Wiederholungsversuche zu ändern, rufen Sie with_max_retries auf ClientConfig auf, beispielsweise .with_max_retries(0), um Wiederholungen zu deaktivieren.

Häufige Vorgänge

Die Beispiele in diesem Abschnitt verwenden client aus Schnellstart.

Checkout-Sitzung erstellen

Erstellen Sie eine Checkout-Sitzung mit einer Rückgabe-URL:
Leiten Sie den Kunden zu session.checkout_url weiter. Jede Checkout-URL kann einmal verwendet werden und läuft nach 24 Stunden ab. Eine Übersicht über alle Sitzungsoptionen finden Sie unter Checkout-Sitzungen.

Kunden verwalten

Erstellen Sie einen Kunden mit E-Mail-Adresse und Namen und rufen Sie ihn anschließend über seine ID ab:

Abonnements verwalten

Erstellen Sie ein Abonnement für einen bestehenden Kunden.
POST /subscriptions (die subscriptions().create()-Methode des SDK) ist veraltet. Sie funktioniert weiterhin für bestehende Integrationen, neue Integrationen sollten Abonnements jedoch über eine Checkout-Sitzung erstellen.
billing erfordert nur country, eine Variante des CountryCode-Enums wie CountryCode::Us. customer ist ein CustomerRequest-Enum: Übergeben Sie AttachExistingCustomer für einen bestehenden Kunden oder NewCustomer, um einen neuen Kunden zu erstellen. Um ein On-Demand-Abonnement zu belasten, rufen Sie client.subscriptions().charge().subscription_id(...) mit einem SubscriptionsChargeParams-Body auf. Betragsfelder wie product_price werden in der kleinsten Währungseinheit angegeben (beispielsweise entspricht 2500 $25.00).

Nutzungsbasierte Abrechnung

Nutzungsereignisse erfassen

Senden Sie Nutzungsereignisse für einen Kunden:
event_id ist der Idempotenzschlüssel. Verwenden Sie daher für jedes Ereignis einen eindeutigen Wert. Wenn timestamp gleich None ist, verwendet das Ereignis die aktuelle Zeit.

Nutzungsereignisse auflisten

Listen Sie nach Kunde und Ereignisnamen gefilterte Ereignisse auf. Die Filter werden in einem JSON-Abfrageobjekt angegeben:

Paginierung

List-Endpunkte geben eine typisierte Seite zurück, deren Feld items die Ergebnisse der aktuellen Seite enthält. Um jedes Element über alle Seiten hinweg zu streamen, rufen Sie into_stream auf:
Um seitenweise vorzugehen, rufen Sie get_next_page auf. Nach der letzten Seite wird None zurückgegeben:

Fehlerbehandlung

Jede Methode gibt ein dodopayments::Result<T> zurück. Fehler sind Varianten des dodopayments::Error-Enums: Api für einen Fehlerstatus der API, Http für Transportfehler, Json für Serialisierungsfehler, Config für Konfigurationsfehler und MissingPathParam oder MissingBody für unvollständige Requests. Verwenden Sie eine Fallunterscheidung, um API-Fehler getrennt von Transportfehlern zu behandeln:

Nicht dokumentierte Endpunkte

Um einen Endpunkt ohne typisierte Methode aufzurufen, verwenden Sie den Low-Level-Builder request. Er übernimmt Authentifizierung und Basis-URL. Um reqwest::Method zu benennen, fügen Sie reqwest 0.12 zu Ihren Abhängigkeiten hinzu:

Ressourcen

GitHub Repository

Quellcode, Releases und die vollständige Methodenliste.

Crates.io

Das veröffentlichte Crate und seine Versionen.

API Reference

Jeder Endpunkt, Parameter und jede Antwort.

Discord Community

Stellen Sie Fragen und tauschen Sie sich mit anderen Entwicklern aus.

Support

Hilfe zum Rust SDK:

Mitwirken

Um mitzuwirken, lesen Sie die Richtlinien für Beiträge.
Zuletzt geändert am 26. September 2026