DodoPayments と非同期クライアント AsyncDodoPayments があり、どちらも httpx 上に構築されています。ネストされたリクエストパラメータは型付き辞書で、レスポンスは Pydantic モデルです。
インストール
SDK を pip でインストールします。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 してください。
主な機能
Pythonic Interface
Async/Await
Type Hints
Auto-Pagination
設定
環境変数
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 を渡します。
APITimeoutError を発生させます。タイムアウトしたリクエストは再試行されるため、失敗するまでに timeout より長くかかる場合があります。
再試行
クライアントでmax_retries を設定するか、with_options() を使用して単一のリクエストに設定します。
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 に課金し、サブスクリプションの使用量履歴を読み取ります。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 のデフォルトの接続制限、タイムアウト、リダイレクト設定を維持します。
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 についてサポートが必要な場合:- Discord: コミュニティサーバー に参加すると、リアルタイムでサポートを受けられます。
- メール: support@dodopayments.com にお問い合わせください。
- GitHub: リポジトリ で issue を作成してください。