메인 콘텐츠로 건너뛰기

GitHub Repository

전체 소스 코드 및 설정 안내

빠른 설정

1. 필수 조건

2. 종속성 설치

3. 데이터베이스 설정

  1. Neon에 가입합니다
  2. 새 프로젝트를 생성합니다
  3. SQL 편집기를 엽니다
  4. schema.sql의 내용을 복사해서 붙여넣습니다
  5. 쿼리를 실행합니다
  6. Neon → Connection Details에서 연결 문자열을 가져옵니다

4. 초기 환경 변수 설정

참고: 배포 후 웹훅 URL을 확보하면 DODO_PAYMENTS_WEBHOOK_KEY를 설정합니다.

5. 초기화 및 배포

6. 웹훅 URL 가져오기

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

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

  1. DodoPayments 대시보드 → Developer → Webhooks로 이동합니다
  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 - 상태, 금액, next_billing_date, 고객에 연결됨
  • webhook_events - 멱등성을 위한 webhook_id가 있는 이벤트 로그

구현 코드

작동 방식

웹훅 핸들러:
  1. 서명 검증 - HMAC-SHA256을 사용하여 요청이 DodoPayments에서 왔는지 확인합니다
  2. 중복 검사 - 동일한 이벤트를 두 번 처리하지 않도록 웹훅 ID를 사용합니다
  3. 이벤트 기록 - 감사 로그를 위해 webhook_events 테이블에 원본 웹훅을 저장합니다
  4. 이벤트 처리 - Neon에서 고객과 구독을 생성하거나 업데이트합니다
  5. 오류 처리 - 실패를 기록하고 재시도를 위해 이벤트를 처리되지 않은 상태로 표시합니다

테스트

로컬 개발:
Netlify 대시보드에서 로그 보기:
  1. 사이트를 선택 → Functions
  2. webhook 함수를 클릭합니다
  3. 실시간 로그 및 호출 기록을 확인합니다
DodoPayments 대시보드에서 구성:
  1. 개발자 → 웹훅으로 이동
  2. Netlify Functions URL로 엔드포인트 추가
  3. 활성화: subscription.active, subscription.cancelled, subscription.renewed

일반적인 문제

리소스

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