메인 콘텐츠로 건너뛰기

GitHub Repository

전체 소스 코드 및 설정 가이드

빠른 설정

1. 전제 조건

2. 종속성 설치

3. 데이터베이스 설정

  1. Neon에 가입하세요
  2. 새 프로젝트를 만드세요
  3. SQL 편집기를 여세요
  4. schema.sql의 내용을 복사하여 붙여넣으세요
  5. 쿼리를 실행하세요
  6. Neon → 연결 세부정보에서 연결 문자열을 가져오세요

4. 초기 환경 변수 설정

Vercel CLI를 통해:
참고: 웹훅 URL이 준비되면 배포 후 DODO_PAYMENTS_WEBHOOK_KEY를 설정합니다.

5. 배포

6. 웹훅 URL 가져오기

당신의 웹훅 URL은 다음과 같습니다:

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

  1. DodoPayments Dashboard → 개발자 → 웹훅으로 이동하세요
  2. 새 웹훅 엔드포인트를 만드세요
  3. 엔드포인트로 웹훅 URL을 구성하세요
  4. 다음 구독 이벤트를 활성화하세요:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Signing Secret을 복사하세요

8. 웹훅 키 설정 및 재배포

기능

구독 이벤트를 처리하고 PostgreSQL에 저장합니다:
  • subscription.active - 고객 및 구독 기록 생성/업데이트
  • subscription.cancelled - 구독을 취소로 표시
  • subscription.renewed - 다음 청구일 업데이트

주요 기능

서명 검증 - dodopayments 라이브러리 사용
멱등성 - 웹훅 ID로 중복 처리 방지
이벤트 로깅 - 감사 추적을 위한 webhook_events 테이블
오류 처리 - 기록되고 재시도 가능
참고: 이 구현은 최소한의 필드로 세 가지 핵심 구독 이벤트(subscription.active, subscription.cancelled, subscription.renewed)를 처리하는 방법을 보여줍니다. 필요에 따라 추가 이벤트 유형과 필드를 쉽게 확장할 수 있습니다.

구성 파일

데이터베이스 스키마

생성된 테이블:
  • customers - 이메일, 이름, dodo_customer_id
  • subscriptions - 상태, 금액, 다음 청구일, 고객에 연결됨
  • webhook_events - 멱등성을 위한 webhook_id가 포함된 이벤트 로그

구현 코드

작동 방식

웹훅 핸들러:
  1. 바디 파싱 비활성화 - 서명 검증을 위해 원시 바디에 접근
  2. 서명 확인 - HMAC-SHA256을 사용하여 요청이 DodoPayments에서 왔는지 확인
  3. 중복 확인 - 웹훅 ID로 동일 이벤트를 두 번 처리하지 않도록 방지
  4. 이벤트 기록 - 감사 추적을 위해 webhook_events 테이블에 원시 웹훅 저장
  5. 이벤트 처리 - 고객 및 구독을 Neon에 생성하거나 업데이트
  6. 오류 처리 - 실패를 기록하고 재시도를 위해 이벤트를 미처리 상태로 표시

테스트

로컬 개발:
Vercel 대시보드에서 로그 보기:
  1. 프로젝트 선택
  2. 배포 → 최신 배포로 이동
  3. FunctionsLogs 클릭
DodoPayments 대시보드에서 구성:
  1. 개발자 → 웹훅으로 이동
  2. Vercel Functions URL로 엔드포인트 추가
  3. 활성화: subscription.active, subscription.cancelled, subscription.renewed

일반적인 문제

리소스

마지막 수정일 2026년 5월 22일