net/httpとconnection poolを使用してリクエストを送信し、失敗したリクエストをretryし、ページ分割されたlistを自動的に反復処理します。また、RBIおよびRBS type definitionsも提供します。
インストール
Gemfileにgemを追加します:Gemfile
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"でのみ使用できます。
主な機能
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を設定できます。
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します。
Customerの管理
email addressとnameを指定してcustomerを作成し、その後IDで取得します。Subscriptionの処理
subscriptionを作成し、on-demand subscriptionにchargeし、subscriptionのmetadataを更新します。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します。
status、headers、およびbody attributeがあります。
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についてサポートが必要な場合:- Discord:community serverに参加すると、リアルタイムでサポートを受けられます。
- Email:support@dodopayments.comにお問い合わせください。
- GitHub:repositoryでissueを作成してください。