Skip to main content
Rust SDKを使用すると、async RustアプリケーションからDodo Payments REST APIに型安全にアクセスできます。Tokioとreqwest上に構築され、型付きのrequestおよびresponse structを使用し、ページ分割された結果をストリーミングし、失敗したrequestを再試行します。

インストール

Cargoを使ってSDKをプロジェクトに追加します:
または、手動で追加します:
SDKにはRust 1.75以降が必要です。

クイックスタート

Client::from_env()はDODO_PAYMENTS_API_KEY環境変数からAPI keyを読み取ります。clientを作成してから、checkout sessionを作成します。
DODO_PAYMENTS_API_KEYが設定されていない場合、Client::from_env()はError::Configを返します。別のenvironmentを選択しない限り、clientはlive modeに接続します。詳しくはEnvironmentsを参照してください。test modeのAPI keyはtest modeでのみ使用できます。
API keyは環境変数またはsecrets managerで管理してください。ソースコードに直接記述しないでください。

主な機能

Async First

Tokioとreqwest上に構築され、すべてのrequestでasync/awaitを使用します。

Strong Typing

compile-time check用の型付きrequestおよびresponse struct。

Auto-Pagination

すべてのページのitemをstreamすることも、1ページずつ移動することもできます。

Configurable

各clientのenvironment、base URL、timeout、retry countを設定できます。

Configuration

Environment Variables

Client::from_env()はDODO_PAYMENTS_API_KEYからAPI keyを読み取ります。DODO_PAYMENTS_BASE_URLを設定しない限り、live modeのURLを使用します。
Rust SDKはDODO_PAYMENTS_WEBHOOK_KEYを読み取らず、webhook signatureを検証するmethodもありません。検証するにはWebhooksを参照してください。 clientを明示的に設定することもできます。Client::newはResultを返すため、dodopayments::Resultを返すfunction内で?を使ってunwrapします。

Environments

SDKには2つのenvironmentがあります。 デフォルトのbase URLはhttps://live.dodopayments.comです。別のenvironmentを選択するには、ハードコードされたURLの代わりにEnvironment enumを使用します。
from_env()でDODO_PAYMENTS_API_KEYからAPI keyを引き続き読み取りながら、別のenvironmentを対象にするには、configでenvironmentを上書きします。

Timeouts

デフォルトのrequest timeoutは30秒です。clientで上書きするにはwith_timeoutを使用します。
clientはconnection errorと、status 408、409、429、または500以上のresponseを再試行します。デフォルトでは指数バックオフを使用して2回再試行し、APIからRetry-After headerが送信された場合はその値に従って待機します。retry countを変更するにはClientConfigでwith_max_retriesを呼び出します。たとえば.with_max_retries(0)にすると再試行を無効にできます。

一般的な操作

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

Checkout Sessionの作成

return URLを指定してcheckout sessionを作成します。
customerをsession.checkout_urlにredirectします。各checkout URLは1回のみ使用でき、24時間後に期限切れになります。すべてのsession optionについてはCheckout Sessionsを参照してください。

Customerの管理

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

Subscriptionの処理

既存のcustomerのsubscriptionを作成します。
POST /subscriptions(SDKのsubscriptions().create() method)はdeprecatedです。既存のintegrationでは引き続き動作しますが、新しいintegrationではCheckout Sessionを通じてsubscriptionを作成してください。
billingに必要なのはcountryだけです。これはCountryCode::UsなどのCountryCode enum variantです。customerはCustomerRequest enumです。既存のcustomerにはAttachExistingCustomerを渡し、customerを作成するにはNewCustomerを渡します。on-demand subscriptionに課金するには、SubscriptionsChargeParams bodyでclient.subscriptions().charge().subscription_id(...)を呼び出します。product_priceなどのamount fieldは最小通貨単位で指定します(たとえば2500は$25.00です)。

Usage-Based Billing

Usage Eventの取り込み

customerのusage eventを送信します。
event_idはidempotency keyです。そのため、各eventに一意の値を指定してください。timestampがNoneの場合、eventには現在時刻が使用されます。

Usage Eventの一覧表示

customerとevent nameでfilterしたeventを一覧表示します。filterはJSON query objectに指定します。

Pagination

List endpointは、items fieldに現在のページのresultを格納した型付きpageを返します。すべてのページのitemをstreamするには、into_streamを呼び出します。
1ページずつ移動するにはget_next_pageを呼び出します。最後のページの後はNoneを返します。

Error Handling

すべてのmethodはdodopayments::Result<T>を返します。失敗はdodopayments::Error enumのvariantです。ApiはAPIからのerror status、Httpはtransport error、Jsonはserialization error、Configはconfiguration error、MissingPathParamまたはMissingBodyは不完全なrequestを表します。これにmatchして、API errorとtransport errorを個別に処理します。

未ドキュメントのEndpoint

型付きmethodがないendpointを呼び出すには、低レベルのrequest builderを使用します。authenticationとbase URLが適用されます。reqwest::Methodを指定するには、dependenciesにreqwest 0.12を追加します。

Resources

GitHub Repository

ソースコード、release、すべてのmethod list。

Crates.io

公開済みcrateとそのversion。

API Reference

すべてのendpoint、parameter、response。

Discord Community

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

Support

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

Contributing

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