インストール
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でのみ使用できます。
主な機能
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を使用します。
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を使用します。
Retry-After headerが送信された場合はその値に従って待機します。retry countを変更するにはClientConfigでwith_max_retriesを呼び出します。たとえば.with_max_retries(0)にすると再試行を無効にできます。
一般的な操作
このセクションの例では、Quick Startのclientを使用します。
Checkout Sessionの作成
return URLを指定してcheckout sessionを作成します。session.checkout_urlにredirectします。各checkout URLは1回のみ使用でき、24時間後に期限切れになります。すべてのsession optionについてはCheckout Sessionsを参照してください。
Customerの管理
email addressとnameを指定してcustomerを作成し、IDで取得します。Subscriptionの処理
既存のcustomerの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を呼び出します。
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についてサポートが必要な場合:- Discord:community serverに参加して、リアルタイムでサポートを受けてください。
- Email:support@dodopayments.comまでお問い合わせください。
- GitHub:repositoryでissueを作成してください。