Skip to main content
Ruby SDKを使用すると、RubyアプリケーションからDodo Payments REST APIにアクセスできます。標準ライブラリのnet/httpとconnection poolを使用してリクエストを送信し、失敗したリクエストをretryし、ページ分割されたlistを自動的に反復処理します。また、RBIおよびRBS type definitionsも提供します。

インストール

Gemfileにgemを追加します:
Gemfile
SDKのreleaseではAPIの変更に対応します。常に最新の状態を保つため、bundle update dodopaymentsを定期的に実行してください。
次に、インストールします。
SDKにはRuby 3.2.0以降が必要です。

クイックスタート

clientを作成し、その後checkout sessionを作成します。
bearer_tokenを省略すると、clientはDODO_PAYMENTS_API_KEY環境変数を読み取ります。environmentを省略すると、clientはlive modeに接続します。test modeのAPI keyはenvironment: "test_mode"でのみ使用できます。
API keyは環境変数またはsecrets managerで管理してください。version controlにcommitしたり、コード内で公開したりしないでください。

主な機能

Ruby Conventions

Snake_caseのmethodとkeyword argumentに対応し、nested parameterには通常のhashを使用できます。

Elegant Syntax

responseはattribute readerを持つobjectです。obj[:prop]を使用すると、SDKで定義されていないfieldも読み取れます。

Auto-Pagination

auto_paging_eachはすべてのitemを反復処理し、必要に応じて次のpageを取得します。

Type Safety

Sorbet用のRBI definitionsを提供し、sorbet-runtimeには依存しません。

Configuration

Dodopayments::Client.newは、bearer_token、webhook_key、environment、base_url、max_retries、timeout、initial_retry_delay、およびmax_retry_delayを受け取ります。これらを省略すると、環境からDODO_PAYMENTS_API_KEY、DODO_PAYMENTS_WEBHOOK_KEY(webhook signing secret)、およびDODO_PAYMENTS_BASE_URLを読み取ります。clientはthread-safeで、独自のconnection poolを保持します。そのため、アプリケーションごとに1つのclientを作成し、再利用してください。 webhookを検証するには、raw request bodyとheaderをdodo_payments.webhooks.unwrap(payload, headers: headers)に渡します。webhook keyでsignatureを確認し、parse済みのeventを返します。dodo_payments.webhooks.unsafe_unwrap(payload)は検証せずにbodyをparseするため、testingにのみ使用してください。Webhooksを参照してください。

Timeout Configuration

requestはデフォルトで60秒後にtimeoutします。clientまたは単一のrequestで、秒単位のtimeoutを設定できます。
requestがtimeoutすると、SDKはDodopayments::Errors::APITimeoutErrorをraiseします。timeoutしたrequestはデフォルトでretryされます。

Retry Configuration

SDKはconnection error、timeout、ステータス408、409、429、または500以上のresponseをretryします。デフォルトでは、短いexponential backoffを使用して2回retryします。clientまたは単一のrequestでmax_retriesを設定できます。

Common Operations

このセクションの例では、Quick Startのdodo_payments clientを使用します。

Checkout Sessionの作成

checkout sessionを作成し、返されたcheckout_urlにcustomerをredirectします。
各checkout URLは1回だけ使用でき、24時間後にexpireします。すべてのsession optionについては、Checkout Sessionsを参照してください。

Customerの管理

email addressとnameを指定してcustomerを作成し、その後IDで取得します。

Subscriptionの処理

subscriptionを作成し、on-demand subscriptionにchargeし、subscriptionのmetadataを更新します。
POST /subscriptions(SDKのsubscriptions.create method)はdeprecatedです。既存のintegrationでは引き続き動作しますが、新しいintegrationではCheckout Sessionを使用してsubscriptionを作成してください。
billingに必要なのは、2文字のISO country codeであるcountryだけです。customerでは、{ customer_id: "..." }を指定して既存のcustomerを関連付けるか、{ email: "...", name: "..." }を指定してcustomerを作成します。chargeはon-demand subscriptions用で、product_priceは最小通貨単位で指定します。

Pagination

Auto-Pagination

list methodはpageを返します。現在のpageについてはitemsを読み取り、すべてのitemを反復処理するにはauto_paging_eachを呼び出します。必要に応じて次のpageを取得します。

Manual Pagination

一度に1 pageずつ移動するには、next_page?とnext_pageを呼び出します。

Error Handling

SDKがAPIに接続できない場合、またはAPIが4xxもしくは5xx statusを返した場合、SDKはDodopayments::Errors::APIErrorのsubclassをraiseします。
error classは原因によって異なります。各errorにはstatus、headers、およびbody attributeがあります。
SDKはすでに429 responseをexponential backoffでretryしています。RateLimitErrorは、そのretryも失敗したことを意味するため、requestを再送信する前に、より長く待ってください。

SorbetによるType Safety

SDKはRBI definitionsを提供し、sorbet-runtimeには依存しません。type-checkedなrequest parameterを使用するには、hashの代わりにmodel classを渡します。

Advanced Usage

Undocumented Endpoints

SDK methodが存在しないendpointを呼び出すには、requestを使用します。SDK methodと同じauthenticationおよびretryが適用されます。

Undocumented Parameters

SDKで定義されていないparameterを送信するには、request_optionsに渡します。ドキュメント化されたparameterと同じnameを持つextra_* parameterは、その値を上書きします。

Rails Integration

Initializerの作成

Railsの起動時にconfig/initializers/dodo_payments.rbで1つのclientを作成します。

Service Object Pattern

clientをservice objectでwrapします。

Controller Integration

controllerからserviceを呼び出し、checkout pageにredirectします。

Sinatra Integration

configure blockでclientを1回だけ作成し、routesで使用します。

Resources

GitHub Repository

source code、release、およびmethodの完全なlistです。

API Reference

すべてのendpoint、parameter、およびresponseです。

Discord Community

質問したり、他のdeveloperと交流したりできます。

Report Issues

bugの報告やfeatureのリクエストができます。

Support

Ruby SDKについてサポートが必要な場合:

Contributing

contributeするには、contributing guidelinesをお読みください。
最終更新日 2026年9月26日