Installation
Fügen Sie das SDK mit Cargo zu Ihrem Projekt hinzu: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:
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.
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:
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:
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 mitwith_timeout:
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 verwendenclient aus Schnellstart.
Checkout-Sitzung erstellen
Erstellen Sie eine Checkout-Sitzung mit einer Rückgabe-URL: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.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 Felditems die Ergebnisse der aktuellen Seite enthält. Um jedes Element über alle Seiten hinweg zu streamen, rufen Sie into_stream auf:
get_next_page auf. Nach der letzten Seite wird None zurückgegeben:
Fehlerbehandlung
Jede Methode gibt eindodopayments::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-Builderrequest. 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:- Discord: Treten Sie dem Community-Server bei, um in Echtzeit Hilfe zu erhalten.
- E-Mail: Kontaktieren Sie support@dodopayments.com.
- GitHub: Eröffnen Sie ein Issue im Repository.