Skip to main content
Python SDK を使用すると、Python アプリケーションから型付きで Dodo Payments REST API にアクセスできます。同期クライアント DodoPayments と非同期クライアント AsyncDodoPayments があり、どちらも httpx 上に構築されています。ネストされたリクエストパラメータは型付き辞書で、レスポンスは Pydantic モデルです。

インストール

SDK を pip でインストールします。
非同期クライアントの HTTP バックエンドとして aiohttp を使用するには、aiohttp extra をインストールします。
client.webhooks.unwrap() で webhook の署名を検証するには、webhooks extra もインストールします。pip install "dodopayments[webhooks]"。
SDK には Python 3.9 以降が必要です。セキュリティ更新を受け取るため、最新の安定版 Python を使用してください。

クイックスタート

同期クライアント

クライアントを作成し、checkout session を作成します。
bearer_token を省略すると、クライアントは DODO_PAYMENTS_API_KEY 環境変数を読み取ります。environment を省略すると、クライアントは live mode に接続します。test mode API key は environment="test_mode" でのみ機能します。

非同期クライアント

AsyncDodoPayments には DodoPayments と同じメソッドがあります。各呼び出しを await してください。
API key は環境変数または secrets manager に保存してください。バージョン管理にコミットしないでください。

主な機能

Pythonic Interface

パラメータにはキーワード引数、ネストされたオブジェクトには TypedDict 型、レスポンスには Pydantic モデルを使用します。

Async/Await

asyncio 用の AsyncDodoPayments。aiohttp をオプションの HTTP バックエンドとして使用できます。

Type Hints

すべてのメソッドに型ヒントがあり、エディターの自動補完と mypy による型チェックに対応します。

Auto-Pagination

List メソッドは、ループ中に次のページを取得する iterator を返します。

設定

環境変数

API key を環境変数に保存します。
.env
対応する引数を渡さない場合、クライアントは次の変数を読み取ります。 DODO_PAYMENTS_BASE_URL が設定されていて、environment も渡すと、コンストラクターは “Ambiguous URL” エラーを発生させます。その場合に environment を使用するには、base_url=None を渡してください。 webhook を検証するには、未加工のリクエスト本文とヘッダーを client.webhooks.unwrap(payload, headers=headers) に渡します。webhook key で署名を確認し、解析済みイベントを返します。client.webhooks.unsafe_unwrap(payload) は検証せずに本文を解析するため、テスト用途にのみ使用してください。Webhooks を参照してください。

タイムアウト

リクエストはデフォルトで 1 分後にタイムアウトし、接続タイムアウトは 5 秒です。timeout を秒単位で渡すか、読み取り、書き込み、接続に個別の制限を設定する httpx.Timeout を渡します。
リクエストがタイムアウトすると、SDK は APITimeoutError を発生させます。タイムアウトしたリクエストは再試行されるため、失敗するまでに timeout より長くかかる場合があります。

再試行

クライアントで max_retries を設定するか、with_options() を使用して単一のリクエストに設定します。
SDK は接続エラーと、ステータスが 408、409、429、または 500 以上のレスポンスを再試行します。デフォルトでは指数バックオフを使用して 2 回再試行します。それでもリクエストが失敗すると、SDK は dodopayments.APIError のサブクラスを発生させます。 ステータス例外は dodopayments.APIStatusError を継承し、status_code と response 属性を持ちます。APITimeoutError は APIConnectionError のサブクラスです。

一般的な操作

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

Checkout Session の作成

checkout session を作成し、返された checkout_url に顧客をリダイレクトします。
各 checkout_url は一度だけ使用でき、24 時間後に期限切れになります。すべての session オプションについては、Checkout Sessions を参照してください。

顧客の管理

メールアドレスと名前を指定して顧客を作成し、ID で取得します。

サブスクリプションの処理

サブスクリプションを作成し、on-demand subscription に課金し、サブスクリプションの使用量履歴を読み取ります。
POST /subscriptions(SDK の subscriptions.create メソッド)は deprecated です。既存のインテグレーションでは引き続き機能しますが、新しいインテグレーションでは Checkout Session を通じてサブスクリプションを作成してください。
billing に必要なのは、2 文字の ISO 国コードである country だけです。customer では、既存の顧客を関連付ける {"customer_id": ...}、または顧客を作成する {"email": ..., "name": ...} を指定できます。charge は on-demand subscriptions 用で、product_price は通貨の最小単位で指定します。retrieve_usage_history はページ分割されたリストを返し、Pagination に示すように反復処理できます。

使用量ベースの課金

使用量イベントの取り込み

顧客の使用量イベントを送信します。
event_id は idempotency key であるため、各イベントに一意の値を指定してください。同じ event_id が 1 つのリクエスト内に 2 回現れると、リクエスト全体が拒否されます。event_id がすでに取り込まれている場合、新しいイベントは無視されます。1 つのリクエストで最大 1,000 件のイベントを受け付けます。timestamp は現在時刻がデフォルト値で、過去 1 時間より前または未来 5 分より後の場合は拒否されます。

イベントの一覧表示と取得

event_id で単一イベントを取得するか、顧客とイベント名でフィルタリングしたイベントを一覧表示します。
usage_events.list は、meter_id、start、end のフィルターも受け付けます。

ページネーション

自動ページネーション

List メソッドは、ループ中に次のページを取得する iterator を返します。

非同期ページネーション

非同期クライアントでは、async for を使ってループします。

手動ページネーション

一度に 1 ページずつ処理するには、items を読み取り、has_next_page() と get_next_page() を呼び出します。next_page_info() は次のリクエスト用パラメータを返します。

HTTP クライアント設定

プロキシ、カスタムトランスポート、その他の httpx 設定を追加するには、独自の http_client を渡します。DefaultHttpxClient は SDK のデフォルトの接続制限、タイムアウト、リダイレクト設定を維持します。
1 つのリクエストで別の HTTP クライアントを使用するには、client.with_options(http_client=...) を呼び出します。

AIOHTTP を使用した非同期処理

デフォルトでは、非同期クライアントは httpx でリクエストを送信します。並行性を高めるには、aiohttp extra をインストールし、DefaultAioHttpClient() を http_client として渡します。

ロギング

SDK は標準ライブラリの logging モジュールでログを記録します。ロギングを有効にするには、DODO_PAYMENTS_LOG を info に設定します。
より詳細なログを取得するには、debug に設定します。

フレームワークとの統合

これらの例では、Web エンドポイントから checkout session を作成し、その URL を返します。

FastAPI

このエンドポイントでは非同期クライアントを使用します。

Django

この view では同期クライアントを使用します。

リソース

GitHub Repository

ソースコード、リリース、すべてのメソッド一覧。

API Reference

すべてのエンドポイント、パラメータ、レスポンス。

Discord Community

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

Report Issues

バグを報告したり、機能をリクエストしたりできます。

サポート

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

コントリビューション

コントリビューションするには、コントリビューションガイドライン をお読みください。
最終更新日 2026年9月26日