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 kräver Ruby 3.2.0 eller senare.
Snabbstart
Skapa en klient och skapa sedan en checkout-session: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".
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. Angetimeout, i sekunder, på klienten eller för en enskild request:
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. Angemax_retries på klienten eller för en enskild request:
Vanliga åtgärder
Exemplen i det här avsnittet använder klientendodo_payments från Snabbstart.
Skapa en checkout-session
Skapa en checkout-session och omdirigera sedan kunden till den returneradecheckout_url:
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.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äsitems 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 dunext_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 avDodopayments::Errors::APIError:
status, headers och body:
Typsäkerhet med Sorbet
SDK:t innehåller RBI-definitioner och är inte beroende avsorbet-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 durequest. 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 irequest_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, iconfig/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 ettconfigure-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:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Öppna ett ärende i kodförrådet.