Skip to main content
Ruby SDK ger Ruby-applikationer åtkomst till Dodo Payments REST API. Det skickar requests med standardbibliotekets net/http och en connection pool, gör omförsök av misslyckade requests, itererar genom paginerade listor åt dig och innehåller RBI- och RBS-typedefinitioner.

Installation

Lägg till gem-paketet i din Gemfile:
Gemfile
SDK-versioner lägger till stöd för API-ändringar. Kör bundle update dodopayments regelbundet för att hålla dig uppdaterad.
Installera det sedan:
SDK kräver Ruby 3.2.0 eller senare.

Snabbstart

Skapa en klient och skapa sedan en checkout-session:
Om du utelämnar bearer_token läser klienten miljövariabeln DODO_PAYMENTS_API_KEY. Om du utelämnar environment ansluter klienten till live-läge. En API-nyckel för testläge fungerar endast med environment: "test_mode".
Förvara API-nycklar i miljövariabler eller i en secrets manager. Checka aldrig in dem i versionshanteringen och exponera dem inte i koden.

Kärnfunktioner

Ruby Conventions

Metoder och keyword arguments med snake_case, där vanliga hash-tabeller accepteras för nästlade parametrar.

Elegant Syntax

Svar är objekt med attributläsare, och obj[:prop] läser även fält som SDK:t inte definierar.

Auto-Pagination

auto_paging_each itererar över varje objekt och hämtar nästa sida vid behov.

Type Safety

RBI-definitioner för Sorbet, utan beroende av sorbet-runtime.

Konfiguration

Dodopayments::Client.new tar bearer_token, webhook_key, environment, base_url, max_retries, timeout, initial_retry_delay och max_retry_delay. När du utelämnar dem läser den DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (din webhook-signaturhemlighet) och DODO_PAYMENTS_BASE_URL från miljön. Klienten är trådsäker och har sin egen connection pool, så skapa en klient för applikationen och återanvänd den. För att verifiera en webhook skickar du den råa request-kroppen och headers till dodo_payments.webhooks.unwrap(payload, headers: headers). Den kontrollerar signaturen med din webhook-nyckel och returnerar den tolkade händelsen. dodo_payments.webhooks.unsafe_unwrap(payload) tolkar kroppen utan att verifiera den, så använd den endast för testning. Se Webhooks.

Konfiguration av timeout

Requests får timeout efter 60 sekunder som standard. Ange timeout, i sekunder, på klienten eller för en enskild request:
När en request får timeout kastar SDK:t Dodopayments::Errors::APITimeoutError. Requests som får timeout görs om som standard.

Konfiguration av omförsök

SDK:t gör omförsök vid anslutningsfel, timeouts och svar med status 408, 409, 429 eller 500 och högre. Som standard görs två omförsök med en kort exponentiell backoff. Ange max_retries på klienten eller för en enskild request:

Vanliga åtgärder

Exemplen i det här avsnittet använder klienten dodo_payments från Snabbstart.

Skapa en checkout-session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade checkout_url:
Varje checkout-URL fungerar en gång och upphör att gälla efter 24 timmar. Se Checkout Sessions för alla sessionsalternativ.

Hantera kunder

Skapa en kund med en e-postadress och ett namn och hämta den sedan med ID:

Hantera prenumerationer

Skapa en prenumeration, debitera en on-demand-prenumeration och uppdatera metadata för en prenumeration.
POST /subscriptions (SDK:ts subscriptions.create-metod) är föråldrad. Den fungerar fortfarande för befintliga integreringar, men nya integreringar bör skapa prenumerationer via en Checkout Session.
billing kräver endast country, en tvåbokstavskod för ISO-land. customer tar { customer_id: "..." } för att koppla en befintlig kund eller { email: "...", name: "..." } för att skapa en. charge används för on-demand-prenumerationer, och product_price anges i den minsta valutaenheten.

Paginering

Automatisk paginering

Listmetoder returnerar en sida. Läs items för den aktuella sidan eller anropa auto_paging_each för att iterera över varje objekt. Nästa sida hämtas vid behov:

Manuell paginering

Om du vill gå en sida i taget anropar du next_page? och next_page:

Felhantering

När SDK:t inte kan ansluta till API:t eller API:t returnerar en 4xx- eller 5xx-status kastar SDK:t en subklass av Dodopayments::Errors::APIError:
Felk Klassen beror på orsaken. Varje fel har attributen status, headers och body:
SDK:t gör redan omförsök av 429-svar med exponentiell backoff. Ett RateLimitError innebär att även dessa omförsök misslyckades, så vänta längre innan du skickar requesten igen.

Typsäkerhet med Sorbet

SDK:t innehåller RBI-definitioner och är inte beroende av sorbet-runtime. Om du vill typkontrollera request-parametrar skickar du modellklasser i stället för hash-tabeller:

Avancerad användning

Odokumenterade endpoints

Om du vill anropa en endpoint som saknar en SDK-metod använder du request. Den använder samma autentisering och omförsök som SDK-metoderna:

Odokumenterade parametrar

Om du vill skicka parametrar som SDK:t inte definierar skickar du dem i request_options. En parameter extra_* med samma namn som en dokumenterad parameter åsidosätter den:

Rails-integrering

Skapa en initializer

Skapa en klient när Rails startar, i config/initializers/dodo_payments.rb:

Mönster för serviceobjekt

Omslut klienten i ett serviceobjekt:

Controller-integrering

Anropa tjänsten från en controller och omdirigera till checkout-sidan:

Sinatra-integrering

Skapa klienten en gång i ett configure-block och använd den i dina routes:

Resurser

GitHub Repository

Källkod, versioner och den fullständiga metodlistan.

API Reference

Alla endpoints, parametrar och svar.

Discord Community

Ställ frågor och prata med andra utvecklare.

Report Issues

Rapportera buggar eller föreslå funktioner.

Support

Om du behöver hjälp med Ruby SDK:

Bidra

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