Skip to main content
TypeScript SDKを使用すると、サーバーサイドのTypeScriptおよびJavaScriptコードから、型付きでDodo Payments REST APIにアクセスできます。すべてのrequestとresponseの型定義、型付きエラー、自動リトライ、タイムアウト、auto-paginationが含まれています。

Installation

パッケージマネージャーを使用してdodopaymentsパッケージをインストールします。

クイックスタート

clientを作成し、その後checkout sessionを作成します。
bearerTokenを省略すると、clientはDODO_PAYMENTS_API_KEY環境変数を読み取ります。environmentを省略すると、clientはlive modeに接続します。test modeのAPI keyはenvironment: 'test_mode'でのみ使用できます。
API keyは環境変数またはsecrets managerに保存してください。version controlにcommitしたり、client-side codeで公開したりしないでください。

主な機能

TypeScript First

すべてのrequest parameterとresponse fieldの型定義がeditorに表示されます。

Auto-Pagination

for await...ofでiterateすると、List methodが次のpageを自動的に取得します。

Error Handling

各HTTP error statusに対応する型付きerror classを提供します。status、headers、response bodyも含まれます。

Smart Retries

connection errorとretry可能なstatus codeに対して、exponential backoffを使用してデフォルトで2回リトライします。

設定

環境変数

API keyを環境変数に保存します。
.env
対応するoptionを渡さない場合、clientは次の変数を読み取ります。 base URLが設定されていて、さらにenvironmentを渡すと、constructorは「Ambiguous URL」エラーをthrowします。その場合にenvironmentを使用するには、baseURL: nullを渡してください。 webhookを検証するには、raw request bodyとheadersをclient.webhooks.unwrap(rawBody, { headers })に渡します。webhook keyでsignatureをチェックし、parsed eventを返します。client.webhooks.unsafeUnwrap(rawBody)は検証せずにbodyをparseするため、testingにのみ使用してください。Webhooksを参照してください。

タイムアウト設定

requestはデフォルトで1分後にtimeoutします。clientまたは単一のrequestで、ミリ秒単位のtimeoutを設定します。
requestがtimeoutすると、SDKはAPIConnectionTimeoutErrorをthrowします。timeoutしたrequestはリトライされるため、失敗するまでにtimeoutより長くかかる場合があります。

リトライ設定

clientまたは単一のrequestでmaxRetriesを設定します。
SDKは、connection errorとstatus 408、409、429、または500以上のresponseをリトライします。デフォルトではexponential backoffを使用して2回リトライします。
requestが引き続き失敗すると、SDKはDodoPayments.APIErrorのsubclassをthrowします。各errorにはstatus、headers、error(response body)propertyがあります。instanceofを使用して特定のclassを確認できます。たとえばerr instanceof DodoPayments.RateLimitErrorです。

一般的な操作

このセクションの例では、クイックスタートの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のusage historyを読み取ります。
POST /subscriptions(SDKのsubscriptions.create method)はdeprecatedです。既存のintegrationでは引き続き機能しますが、新しいintegrationではCheckout Sessionを通じてsubscriptionを作成してください。
billingに必要なのはcountry(2文字のISO country code)だけです。customerには、既存のcustomerを紐付けるための{ customer_id }、またはcustomerを作成するための{ email, name? }を指定します。chargeはon-demand subscriptions用で、product_priceはcurrencyの最小単位で指定します。retrieveUsageHistoryはpaginated listを返し、Auto-Paginationに示すようにiterateできます。

Usage-Based Billing

Usage Eventの取り込み

customerのusage eventを送信します。
event_idはidempotency keyであるため、各eventには一意の値を指定してください。同じevent_idが1つのrequestに2回現れると、request全体がrejectされます。event_idがすでにingestされている場合、新しいeventは無視されます。1つのrequestで最大1,000件のeventを受け付けます。timestampはデフォルトで現在時刻になり、1時間を超えて過去の場合、または5分を超えて未来の場合はrejectされます。

Usage Eventの取得

event_idで単一のeventを取得するか、customer、event name、time rangeでfilterしたeventをlistします。
usageEvents.listはmeter_idも受け付け、paginated listを返します。

Proxy設定

proxy経由でrequestを送信するには、runtimeのproxy settingsをfetchOptionsに渡します。

Node.js(Undiciを使用)

undici ProxyAgentをdispatcherとして渡します。

Bun

proxy optionを設定します。

Deno

Deno.createHttpClientでHTTP clientを作成し、clientとして渡します。

Logging

logLevel client optionまたはDODO_PAYMENTS_LOG環境変数でlog levelを設定します。client optionは環境変数より優先されます。
debug levelでは、SDKはheadersとbodiesを含むすべてのHTTP requestとresponseをlogに記録します。一部のauthentication headersはredactされますが、body内のsensitive dataは表示される場合があります。
log levelは、詳細度の高い順に次のとおりです。
  • 'debug': Debug message、info、warning、error。
  • 'info': Info message、warning、error。
  • 'warn': Warningとerror。デフォルトです。
  • 'error': Errorのみ。
  • 'off': Loggingなし。
SDKはデフォルトでconsoleにlogを出力します。pino、winston、または別のlogging libraryを使用するには、loggerをlogger optionとして渡します。どのmessageをloggerに送るかはlogLevelが引き続き制御します。log messageはdebugging専用であり、その形式はrelease間で変更される場合があります。

Node.js SDKからの移行

legacy Node.js SDKを使用している場合は、migration guideに従ってupgradeしてください。現在のSDKはnode-fetchの代わりに組み込みのfetch APIを使用し、Node.js 20、TypeScript 4.9、Jest 28以降を必要とします。また、codeの大部分を更新するmigration toolも含まれています。

View Migration Guide

Node.js SDKからTypeScript SDKへの移行方法

Auto-Pagination

List methodはpaginated resultを返します。for await...ofでiterateすると、すべてのpageからitemを取得できます。SDKは必要に応じて次のpageをrequestします。
一度に1つのpageを処理するには、page.itemsを読み取り、hasNextPage()とgetNextPage()を呼び出します。
page sizeを設定するには、list methodにpage_sizeを渡します。たとえばclient.payments.list({ page_size: 50 })です。

要件

SDKはTypeScript 4.9以降と、次のruntimeをサポートします。
  • Web browser(最新のChrome、Firefox、Safari、Edgeなど)
  • Node.js 20 LTS以降のnon-EOL version
  • Deno 1.28.0以降
  • Bun 1.0以降
  • Cloudflare Workers
  • Vercel Edge Runtime
  • "node" environmentでのJest 28以降("jsdom" environmentはサポートされません)
  • Nitro 2.6以降
React Nativeはサポートされていません。

リソース

GitHub Repository

Source code、release、完全なmethod list。

API Reference

すべてのendpoint、parameter、response。

Discord Community

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

Report Issues

bugを報告したり、featureをリクエストしたりできます。

サポート

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

Contributing

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