메인 콘텐츠로 건너뛰기

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은 더 나은 인증 세션에서 고객의 이메일과 이름을 가져오지만, 이메일과 이름이 포함된 customer 객체를 전달하여 재정의할 수 있습니다.
인수에서 동일한 옵션을 체크아웃 세션 생성 엔드포인트의 요청 본문으로 전달할 수 있습니다.
리턴 URL은 서버 플러그인에 구성된 successUrl에서 가져옵니다. 클라이언트 페이로드에 return_url을 포함할 필요가 없습니다.

레거시 체크아웃 (사용 중단됨)

authClient.dodopayments.checkout 메서드는 사용 중단되었습니다. 새로운 구현에 checkoutSession을 사용하세요.

고객 포털에 접근

고객 데이터 나열

미터별 사용량 추적

서버에서 usage() 플러그인을 활성화하여 미터링 이벤트를 캡처하고 고객이 사용 기반 청구를 확인할 수 있도록 합니다.
  • authClient.dodopayments.usage.ingest는 로그인 및 이메일이 인증된 사용자의 이벤트를 수집합니다.
  • authClient.dodopayments.usage.meters.list는 해당 고객의 구독에 연결된 미터의 최근 사용량을 나열합니다.
사용량 수집 시 한 시간 이상이거나 5분 이상 미래의 타임스탬프는 거부됩니다.
사용량 미터를 나열할 때 meter_id를 생략하면 고객의 구독에 연결된 모든 미터가 반환됩니다.

웹훅

웹훅 플러그인은 Dodo Payments의 실시간 결제 이벤트를 안전한 서명 검증과 함께 처리합니다. 기본 엔드포인트는 /api/auth/dodopayments/webhooks입니다.
1

Generate and set webhook secret

웹훅 비밀을 Dodo Payments 대시보드에서 엔드포인트 URL (예: https://<your-domain>/api/auth/dodopayments/webhooks)에 대해 생성하고 .env 파일에 설정하세요.
2

Handle webhook events

예제 핸들러:

지원되는 웹훅 이벤트 핸들러

구성 참고

  • 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를 다시 확인하세요. - 웹훅 서명 불일치: 웹훅 비밀이 Dodo Payments 대시보드의 것과 일치하는지 확인하세요. - 고객이 생성되지 않음: createCustomerOnSignUptrue로 설정되어 있는지 확인하세요.
  • 모든 비밀 및 키에 대한 환경 변수를 사용하세요. - live_mode로 전환하기 전에 test_mode에서 테스트하세요. - 디버깅 및 감사를 위해 웹훅 이벤트를 로그에 기록하세요.

LLMs에 대한 프롬프트

마지막 수정일 2026년 7월 9일