メインコンテンツへスキップ

Overview

The Better Auth Adapter for Dodo Payments provides:
  • Automatic customer creation on sign-up
  • Checkout Sessions (preferred) with product slug mapping
  • Self-service customer portal
  • Metered usage ingestion and reporting endpoints for usage-based billing
  • Real-time webhook event processing with signature verification
  • Full TypeScript support
You need a Dodo Payments account and API keys to use this integration.

Prerequisites

  • Node.js 20+
  • Access to your Dodo Payments Dashboard
  • Existing project using better-auth

Installation

1

Install dependencies

Run the following command in your project root:
All required packages are now installed.

Setup

1

Configure environment variables

Add these to your .env file:
Never commit API keys or secrets to version control.
2

Set up server-side integration

Create or update src/lib/auth.ts:
Set environment to live_mode for production.
3

Set up client-side integration

Create or update src/lib/auth-client.ts:

Usage Examples

Prefer authClient.dodopayments.checkoutSession for new integrations. The legacy checkout method is deprecated and kept only for backward compatibility.

Creating a Checkout Session (Preferred)

レガシーのcheckoutメソッドとは異なり、checkoutSession はチェックアウトページでユーザーから請求情報を取得するため、事前に請求情報は必要ありません。ただし、引数で billingキーを渡すことで上書きすることもできます。
レガシーのcheckoutメソッドと同様に、 checkoutSessionは顧客のメールアドレスと名前をBetter-Authセッションから取得しますが、 customerオブジェクトにメールと名前を渡すことで上書きすることができます。
Checkout Sessionを作成 エンドポイントのリクエストボディとして同じオプションを引数に渡すことができます。
戻りURLはサーバプラグインで設定されているsuccessUrlから取得されます。 クライアントのペイロードにreturn_urlを含める必要はありません。

レガシーチェックアウト (非推奨)

authClient.dodopayments.checkoutメソッドは廃止されました。新しい実装では checkoutSessionを使用してください。

カスタマーポータルへのアクセス

顧客データのリスト化

計測使用の追跡

計測イベントをキャプチャし、使用に基づく請求を顧客が確認できるようにするためにサーバーでusage()プラグインを有効にします。
  • authClient.dodopayments.usage.ingest はサインイン済みでメール確認済みのユーザーのためにイベントを取り込みます。
  • authClient.dodopayments.usage.meters.list はその顧客のサブスクリプションに紐付けられたメーターの最近の使用状況をリストします。
タイムスタンプが1時間以上前または5分以上将来の場合、使用の取り込み時に拒否されます。
使用メーターをリストする際にmeter_idを省略した場合、顧客のサブスクリプションに紐付けられたすべてのメーターが返されます。

Webhooks

WebhooksプラグインはDodo Paymentsからのリアルタイムの支払いイベントを安全に署名検証して処理します。デフォルトのエンドポイントは /api/auth/dodopayments/webhooksです。
1

Generate and set webhook secret

Dodo PaymentsダッシュボードでエンドポイントURL(例:https://<your-domain>/api/auth/dodopayments/webhooks)のためのWebhookシークレットを生成し、.envファイルに設定します。
2

Handle webhook events

ハンドラーの例:

対応しているWebhookイベントハンドラー

設定リファレンス

  • client (必須): DodoPaymentsクライアントインスタンス
  • createCustomerOnSignUp (オプション): ユーザーサインアップ時に顧客を自動作成
  • use (必須): 有効にするプラグインの配列 (checkout, portal, usage, webhooks)
  • getCustomerParams (オプション): BetterAuth Userを受け取り、作成時にDodoPayments顧客に添付する追加フィールドを返す関数(例: metadata, phone_number
  • products: プロダクトの配列またはプロダクトを返す非同期関数 - successUrl: 支払い成功後のリダイレクトURL - authenticatedUsersOnly: ユーザー認証を要求 (デフォルト: false)

トラブルシューティングとヒント

  • 無効なAPIキー: .envファイル内のDODO_PAYMENTS_API_KEYをもう一度確認してください。 - Webhook署名の不一致: WebhookシークレットがDodo Paymentsダッシュボードに設定したものと一致していることを確認してください。 - 顧客が作成されない: createCustomerOnSignUptrueに設定されていることを確認してください。
  • すべてのシークレットおよびキーを環境変数で使用してください。 - live_modeに切り替える前にtest_modeでテストしてください。 - デバッグと監査のためにWebhookイベントをログに記録してください。

LLM用プロンプト

最終更新日 2026年7月9日