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
Das SDK erfordert Ruby 3.2.0 oder höher.
Schnellstart
Erstelle einen Client und anschließend eine Checkout-Sitzung: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".
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. Setzetimeout in Sekunden am Client oder für eine einzelne Anfrage:
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. Setzemax_retries am Client oder für eine einzelne Anfrage:
Häufige Vorgänge
Die Beispiele in diesem Abschnitt verwenden den Clientdodo_payments aus dem Schnellstart.
Checkout-Sitzung erstellen
Erstelle eine Checkout-Sitzung und leite den Kunden anschließend an die zurückgegebenecheckout_url weiter:
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.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. Liesitems 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, rufenext_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 vonDodopayments::Errors::APIError aus:
status, headers und body:
Typsicherheit mit Sorbet
Das SDK enthält RBI-Definitionen und ist nicht vonsorbet-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, verwenderequest. 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 inrequest_options. Ein extra_*-Parameter mit demselben Namen wie ein dokumentierter Parameter überschreibt diesen:
Rails-Integration
Initializer erstellen
Erstelle einen Client, wenn Rails inconfig/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 einemconfigure-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:- Discord: Tritt dem Community-Server bei, um in Echtzeit Hilfe zu erhalten.
- E-Mail: Kontaktiere support@dodopayments.com.
- GitHub: Erstelle ein Issue im Repository.