Skip to main content
@dodopayments/convex コンポーネントは、Dodo Payments を Convex バックエンドに追加します。チェックアウトセッションを作成する checkout 関数、サインイン済みユーザーの Customer Portal を開く customerPortal 関数、および Convex HTTP action で webhook を検証する createDodoWebhookHandler を提供します。Convex 1.26 以降が必要です。

Checkout Function

Convex actions からチェックアウトセッションを作成します。

Customer Portal

顧客がサブスクリプションと詳細情報を管理できるようにします。

Webhooks

Dodo Payments webhook イベントを受信して処理します。

インストール

1

Install the Package

プロジェクトのルートで次のコマンドを実行します。
2

Add Component to Convex Config

Dodo Payments コンポーネントを Convex 設定に追加します。
convex.config.ts を編集したら、npx convex dev を一度実行して型を生成します。
3

Set Up Environment Variables

Convex dashboard の Settings → Environment Variables で環境変数を設定します。dashboard を開くには、次を実行します。
次の環境変数を追加します。
  • DODO_PAYMENTS_API_KEY: Dodo Payments API key。Dodo Payments dashboard の Developer → API Keys から取得します。
  • DODO_PAYMENTS_ENVIRONMENT: test_mode または live_mode。
  • DODO_PAYMENTS_WEBHOOK_SECRET: webhook secret。Developer → Webhooks の Dodo Payments dashboard から取得します。webhook 処理に必要です。webhook handler はこの正確な変数名を読み取ります。
シークレットは Convex 環境変数として保存します。Convex backend functions は .env ファイルを読み取りません。シークレットをバージョン管理にコミットしないでください。

コンポーネント設定の例

1

Create Internal Query

認証 ID によってデータベース内の顧客を検索する internal query を作成します。次の手順の identify 関数はこれを使用して、サインイン済みユーザーの Dodo Payments customer ID を取得します。
このコンポーネントは schema を定義しません。この query を使用する前に、convex/schema.ts に by_auth_id index を持つ customers table を定義するか、既存の schema に合わせて query を変更してください。
2

Configure DodoPayments Component

client を作成します。identify は、サインイン済みの Convex user を Dodo Payments customer ID にマッピングします。サインイン済みの user がいない場合、または一致する customer がない場合は null を返します。
次に、必要な functions を追加します。
この function を使用して、Convex app に Dodo Payments checkout を追加します。コンポーネントの checkout payload validator が受け付ける fields から checkout session を作成します。

Checkout Function

Convex コンポーネントは、すべての決済で推奨される checkout flow である checkout session を作成します。session には product cart、customer details、checkout options が含まれます。

使用方法

Convex action から checkout を呼び出し、payload に checkout session fields を指定します。
checkout は identify を呼び出しません。既存の customer を関連付けるには、payload に customer: { customer_id } を渡します。詳細とサポートされている fields の完全な一覧については、Checkout Sessions を参照してください。 payment_method_id で作成された session は checkout URL を返さないため、checkout はその session に対して error を throw します。

Response Format

checkout function は checkout URL を含む object を返します。

Customer Portal Function

customer portal function は、サインイン済みユーザー用の Customer Portal URL を返します。

使用方法

portal_url field を含む object を返します。

Parameters

boolean
デフォルト:"false"
true に設定すると、Dodo Payments は portal link を customer にメールでも送信します。
customerPortal は、DodoPayments setup の identify function から customer を取得します。この function は customer の dodoCustomerId を返す必要があります。identify が null を返す場合、customerPortal は User is not authenticated. error を throw します。

Webhook Handler

createDodoWebhookHandler は、コードを実行する前に各 request を検証します。
  • Method: method: "POST" で route を登録します。他の method の request は handler に到達しません。
  • Signature Verification: DODO_PAYMENTS_WEBHOOK_SECRET environment variable を使用して Standard Webhooks signature を検証します。検証に失敗すると 400 を返します。
  • Payload Validation: Zod で検証します。payload が無効な場合は 400 を返します。
  • Error Handling:
    • 400: 無効な signature、無効な payload、またはいずれかの handler が throw した error
    • 200: すべての handler が完了
    • DODO_PAYMENTS_WEBHOOK_SECRET が設定されていない場合、handler は error を throw し、request は失敗します。
  • Event Routing: すべての event に対して onPayload を呼び出し、その後 event の type に対応する handler を呼び出します。

サポートされている Webhook Event Handlers

各 handler は、対応する event type の Convex ActionCtx と検証済み payload を受け取ります。

Frontend Usage

convex/react の useAction hook を使用して、React コンポーネントから checkout action と portal action を呼び出します。

LLM 向けプロンプト

この prompt を AI coding assistant にコピーして、プロジェクトにコンポーネントを追加させます。agent に Dodo Payments の docs と skills も提供するには、Agent Plugin をインストールしてください。
最終更新日 2026年9月26日