Skip to main content
Das Ruby SDK ermöglicht Ruby-Anwendungen den Zugriff auf die Dodo Payments REST API. Es sendet Anfragen mit der net/http der Standardbibliothek und einem Verbindungspool, wiederholt fehlgeschlagene Anfragen, durchläuft paginierte Listen für dich und enthält RBI- und RBS-Typdefinitionen.

Installation

Fügen Sie das Gem zu Ihrer Gemfile hinzu:
Gemfile
SDK-Releases unterstützen Änderungen an der API. Führe bundle update dodopayments regelmäßig aus, um auf dem neuesten Stand zu bleiben.
Installiere es anschließend:
Das SDK erfordert Ruby 3.2.0 oder höher.

Schnellstart

Erstelle einen Client und anschließend eine Checkout-Sitzung:
Wenn du bearer_token nicht angibst, liest der Client die Umgebungsvariable DODO_PAYMENTS_API_KEY. Wenn du environment nicht angibst, verbindet sich der Client mit dem Live-Modus. Ein API-Schlüssel für den Testmodus funktioniert nur mit environment: "test_mode".
Bewahre API-Schlüssel in Umgebungsvariablen oder einem Secrets Manager auf. Übertrage sie niemals in die Versionsverwaltung und lege sie nicht in deinem Code offen.

Kernfunktionen

Ruby Conventions

Snake_case-Methoden und Keyword-Argumente; für verschachtelte Parameter werden einfache Hashes akzeptiert.

Elegant Syntax

Antworten sind Objekte mit Attribut-Readern, und obj[:prop] liest auch Felder, die das SDK nicht definiert.

Auto-Pagination

auto_paging_each durchläuft jedes Element und ruft bei Bedarf die nächste Seite ab.

Type Safety

RBI-Definitionen für Sorbet, ohne Abhängigkeit von sorbet-runtime.

Konfiguration

Dodopayments::Client.new akzeptiert bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay und max_retry_delay. Wenn du diese nicht angibst, liest es DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (dein Webhook-Signaturgeheimnis) und DODO_PAYMENTS_BASE_URL aus der Umgebung. Der Client ist thread-sicher und verwaltet seinen eigenen Verbindungspool. Erstelle daher einen Client für deine Anwendung und verwende ihn wieder. Um einen Webhook zu verifizieren, übergib den unveränderten Request-Body und die Header an dodo_payments.webhooks.unwrap(payload, headers: headers). Die Methode prüft die Signatur mit deinem Webhook-Schlüssel und gibt das geparste Ereignis zurück. dodo_payments.webhooks.unsafe_unwrap(payload) parst den Body, ohne ihn zu verifizieren; verwende es daher nur für Tests. Siehe Webhooks.

Timeout-Konfiguration

Anfragen laufen standardmäßig nach 60 Sekunden ab. Setze timeout in Sekunden am Client oder für eine einzelne Anfrage:
Wenn eine Anfrage das Zeitlimit überschreitet, löst das SDK Dodopayments::Errors::APITimeoutError aus. Anfragen mit abgelaufenem Zeitlimit werden standardmäßig wiederholt.

Konfiguration der Wiederholungsversuche

Das SDK wiederholt Verbindungsfehler, Timeouts und Antworten mit dem Status 408, 409, 429 oder 500 und höher. Standardmäßig wird die Anfrage zweimal mit einem kurzen exponentiellen Backoff wiederholt. Setze max_retries am Client oder für eine einzelne Anfrage:

Häufige Vorgänge

Die Beispiele in diesem Abschnitt verwenden den Client dodo_payments aus dem Schnellstart.

Checkout-Sitzung erstellen

Erstelle eine Checkout-Sitzung und leite den Kunden anschließend an die zurückgegebene checkout_url weiter:
Jede Checkout-URL kann einmal verwendet werden und läuft nach 24 Stunden ab. Eine Übersicht über alle Sitzungsoptionen findest du unter Checkout Sessions.

Kunden verwalten

Erstelle einen Kunden mit E-Mail-Adresse und Namen und rufe ihn anschließend über seine ID ab:

Abonnements verwalten

Erstelle ein Abonnement, belaste ein On-Demand-Abonnement und aktualisiere die Metadaten eines Abonnements.
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 Session erstellen.
billing erfordert nur country, einen zweistelligen ISO-Ländercode. customer akzeptiert { customer_id: "..." }, um einen bestehenden Kunden zuzuordnen, oder { email: "...", name: "..." }, um einen neuen zu erstellen. charge ist für On-Demand-Abonnements vorgesehen, und product_price wird in der kleinsten Währungseinheit angegeben.

Seitennavigation

Automatische Seitennavigation

Listenmethoden geben eine Seite zurück. Lies items für die aktuelle Seite oder rufe auto_paging_each auf, um jedes Element zu durchlaufen. Die nächste Seite wird bei Bedarf abgerufen:

Manuelle Seitennavigation

Um jeweils eine Seite weiterzugehen, rufe next_page? und next_page auf:

Fehlerbehandlung

Wenn das SDK keine Verbindung zur API herstellen kann oder die API einen 4xx- oder 5xx-Status zurückgibt, löst das SDK eine Unterklasse von Dodopayments::Errors::APIError aus:
Die Fehlerklasse hängt von der Ursache ab. Jeder Fehler verfügt über die Attribute status, headers und body:
Das SDK wiederholt 429-Antworten bereits mit exponentiellem Backoff. Ein RateLimitError bedeutet, dass auch diese Wiederholungsversuche fehlgeschlagen sind. Warte daher länger, bevor du die Anfrage erneut sendest.

Typsicherheit mit Sorbet

Das SDK enthält RBI-Definitionen und ist nicht von sorbet-runtime abhängig. Um Request-Parameter einer Typprüfung zu unterziehen, übergib Modellklassen anstelle von Hashes:

Erweiterte Verwendung

Nicht dokumentierte Endpunkte

Um einen Endpunkt aufzurufen, für den es keine SDK-Methode gibt, verwende request. Dabei werden dieselbe Authentifizierung und dieselben Wiederholungsversuche wie bei den SDK-Methoden angewendet:

Nicht dokumentierte Parameter

Um Parameter zu senden, die das SDK nicht definiert, übergib sie in request_options. Ein extra_*-Parameter mit demselben Namen wie ein dokumentierter Parameter überschreibt diesen:

Rails-Integration

Initializer erstellen

Erstelle einen Client, wenn Rails in config/initializers/dodo_payments.rb startet:

Muster für Service-Objekte

Kapsle den Client in einem Service-Objekt:

Controller-Integration

Rufe den Service in einem Controller auf und leite zur Checkout-Seite weiter:

Sinatra-Integration

Erstelle den Client einmal in einem configure-Block und verwende ihn in deinen Routen:

Ressourcen

GitHub Repository

Quellcode, Releases und die vollständige Methodenliste.

API Reference

Jeder Endpunkt, Parameter und jede Antwort.

Discord Community

Stelle Fragen und tausche dich mit anderen Entwicklern aus.

Report Issues

Melde Fehler oder fordere Funktionen an.

Support

Hilfe zum Ruby SDK:

Mitwirken

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