Skip to main content

GitHub Repository

전체 소스 코드 및 설정 가이드
Dodo Payments Supabase Subscription Starter를 확인해 보세요. 인증, 결제, 웹훅이 포함된 완전한 Next.js, Supabase 및 Dodo Payments 보일러플레이트입니다.

빠른 설정

1. 사전 요구 사항

다음이 필요합니다:
  • 프로젝트가 생성된 Supabase 계정
  • 대시보드의 Developer → API Keys에서 발급한 Dodo Payments API 키

2. 인증 및 연결

Supabase 대시보드의 Project Settings에서 프로젝트 ref를 확인합니다.

3. 데이터베이스 설정

  1. Supabase 대시보드로 이동합니다.
  2. SQL Editor를 엽니다.
  3. schema.sql의 전체 내용을 복사하여 실행합니다.

4. 초기 Secret 설정

Supabase는 런타임에 SUPABASE_URL 및 SUPABASE_SERVICE_ROLE_KEY를 자동으로 제공합니다.
배포 후 웹훅 URL을 확보하면 DODO_PAYMENTS_WEBHOOK_KEY를 설정합니다.

5. 배포

함수는 이미 functions/webhook/index.ts에 설정되어 있습니다.

6. 웹훅 URL 확인

웹훅 URL은 다음과 같습니다:

7. DodoPayments 대시보드에 웹훅 등록

  1. Dodo Payments 대시보드에서 Developer → Webhooks로 이동합니다.
  2. Add endpoint를 클릭합니다.
  3. 웹훅 URL을 입력합니다.
  4. 다음 이벤트를 선택합니다: subscription.active, subscription.cancelled, subscription.renewed.
  5. Create endpoint를 클릭하고 signing secret을 복사합니다.

8. 웹훅 키 설정 및 재배포

작동 방식

웹훅 핸들러는 구독 이벤트를 처리하고 이를 Supabase PostgreSQL에 저장합니다:
  • subscription.active — 고객 및 구독 레코드를 생성하거나 업데이트합니다
  • subscription.cancelled — 구독을 취소됨으로 표시합니다
  • subscription.renewed — 다음 청구일을 업데이트합니다

주요 기능

  • 서명 검증 — Dodo Payments SDK를 사용하여 웹훅의 진위를 확인합니다
  • 멱등성 — webhook-id 헤더를 사용하여 중복 처리를 방지합니다
  • 이벤트 로깅 — 감사 추적을 위해 모든 이벤트를 webhook_events 테이블에 저장합니다
  • 오류 처리 — 실패를 기록하고 이벤트를 재시도 대상으로 표시합니다
이 예제는 최소한의 필드로 세 가지 핵심 구독 이벤트를 처리합니다. 필요에 따라 추가 이벤트 유형과 필드를 지원하도록 확장할 수 있습니다.

구성 파일

데이터베이스 스키마

생성된 테이블:
  • customers — 이메일, 이름 및 Dodo Payments 고객 ID
  • subscriptions — 상태, 금액, 다음 청구일 및 고객 연결 정보
  • webhook_events — 멱등성을 위한 웹훅 ID가 포함된 이벤트 로그

구현 코드

작동 원리

Deno 기반 Edge Function은 다음을 수행합니다:
  1. 서명을 검증합니다 — HMAC-SHA256 검증에 Dodo Payments SDK를 사용합니다
  2. 중복을 확인합니다 — webhook-id 헤더를 사용하여 중복 처리를 방지합니다
  3. 이벤트를 기록합니다 — 원시 웹훅 데이터를 webhook_events 테이블에 저장합니다
  4. 업데이트를 처리합니다 — Supabase client를 통해 고객 및 구독을 생성하거나 업데이트합니다
  5. 오류를 처리합니다 — 실패를 기록하고 이벤트를 재시도 대상으로 표시합니다

테스트

로컬 개발:
웹훅에는 JWT 토큰이 포함되지 않으므로 --no-verify-jwt 플래그가 필요합니다. 보안은 웹훅 서명 검증을 통해 제공됩니다.
로그 보기:
또는 Supabase 대시보드의 Edge Functions → webhook → Logs에서 확인할 수 있습니다. Dodo Payments 대시보드에서 구성:
  1. Developer → Webhooks로 이동합니다.
  2. Supabase URL을 사용하여 엔드포인트를 추가합니다.
  3. subscription.active, subscription.cancelled 및 subscription.renewed를 선택합니다.

일반적인 문제

리소스

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