Installation
パッケージマネージャーを使用してdodopaymentsパッケージをインストールします。
クイックスタート
clientを作成し、その後checkout sessionを作成します。bearerTokenを省略すると、clientはDODO_PAYMENTS_API_KEY環境変数を読み取ります。environmentを省略すると、clientはlive modeに接続します。test modeのAPI keyはenvironment: 'test_mode'でのみ使用できます。
主な機能
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
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を設定します。
APIConnectionTimeoutErrorをthrowします。timeoutしたrequestはリトライされるため、失敗するまでにtimeoutより長くかかる場合があります。
リトライ設定
clientまたは単一のrequestでmaxRetriesを設定します。
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を読み取ります。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を使用)
undiciProxyAgentをdispatcherとして渡します。
Bun
proxy optionを設定します。
Deno
Deno.createHttpClientでHTTP clientを作成し、clientとして渡します。
Logging
logLevel client optionまたはDODO_PAYMENTS_LOG環境変数でlog levelを設定します。client optionは環境変数より優先されます。
'debug': Debug message、info、warning、error。'info': Info message、warning、error。'warn': Warningとerror。デフォルトです。'error': Errorのみ。'off': Loggingなし。
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します。
page.itemsを読み取り、hasNextPage()とgetNextPage()を呼び出します。
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以降
リソース
GitHub Repository
Source code、release、完全なmethod list。
API Reference
すべてのendpoint、parameter、response。
Discord Community
質問をしたり、他のdeveloperと交流したりできます。
Report Issues
bugを報告したり、featureをリクエストしたりできます。
サポート
TypeScript SDKについてサポートが必要な場合:- Discord: リアルタイムのサポートを受けるには、community serverに参加してください。
- Email: support@dodopayments.comにお問い合わせください。
- GitHub: repositoryでissueを作成してください。