메인 콘텐츠로 건너뛰기

개요

Next.js minimal boilerplate는 Dodo Payments가 이미 연결된 starter app입니다. API keys와 product IDs를 추가하면 checkout을 여는 pricing page, payment events를 위한 webhook endpoint, Customer Portal 링크를 사용할 수 있습니다.
이 boilerplate는 TypeScript, Tailwind CSS 4, 그리고 @dodopayments/nextjs adaptor를 사용하는 Next.js 16 App Router를 기반으로 합니다. 기존 app에 동일한 route handlers를 추가하려면 Next.js Adaptor를 참조하세요.

기능

이 boilerplate에는 다음이 포함됩니다:
  • 간편한 설정: clone부터 작동하는 pricing page까지 약 5분이면 완료할 수 있습니다.
  • Checkout: @dodopayments/nextjs를 기반으로 사전 구성된 checkout flow입니다.
  • Pricing Page: Tailwind CSS로 스타일링된 dark-themed pricing page입니다.
  • Webhook Handler: 각 webhook signature를 검증하고 event에 대한 코드를 실행하는 endpoint입니다.
  • Customer Portal: 고객이 subscription을 관리할 수 있는 Customer Portal을 여는 header link입니다.
  • TypeScript: 타입이 지정된 product definitions와 handlers입니다.
  • 사전 입력된 Checkout: 고객의 이름과 email을 checkout에 전달하므로 고객이 다시 입력할 필요가 없습니다.

사전 요구 사항

시작하기 전에 다음이 필요합니다:
  • Next.js 16에 필요한 Node.js 20.9 이상
  • dashboard에서 API key와 webhook signing secret을 생성할 수 있는 Dodo Payments account

빠른 시작

1

Clone the Repository

2

Install Dependencies

3

Get API Credentials

Dodo Payments에 가입한 다음 dashboard에서 credentials를 가져옵니다:
사이드바의 Live Mode switch가 꺼진 상태에서 두 key를 모두 생성하세요. test mode key는 DODO_PAYMENTS_ENVIRONMENT=test_mode에서만 작동하며 test mode payment는 실제 자금을 이동시키지 않습니다.
4

Configure Environment Variables

example file을 복사하여 root directory에 .env file을 생성합니다:
값을 Dodo Payments credentials로 설정합니다:
route handlers는 다음 variables를 읽습니다:
  • DODO_PAYMENTS_API_KEY는 checkout 및 Customer Portal handlers를 인증합니다.
  • DODO_PAYMENTS_WEBHOOK_KEY는 webhook signatures를 검증합니다.
  • DODO_PAYMENTS_RETURN_URL는 payment 후 checkout이 customer를 보내는 위치입니다.
  • DODO_PAYMENTS_ENVIRONMENT는 test_mode 또는 live_mode입니다.
.env file을 version control에 commit하지 마세요. repository의 .gitignore가 이미 해당 file을 제외합니다.
5

Add Your Products

src/lib/products.ts의 sample products를 원하는 products로 교체합니다. 각 product_id를 dashboard의 Products 아래에 있는 product의 ID로 설정하세요:
pricing page는 이 file에서 name, description, price, features를 표시합니다. Checkout은 Dodo Payments의 product에 설정된 price를 청구하므로 price가 product와 동기화되어 있는지 확인하세요.
6

Run the Development Server

http://localhost:3000을 열어 pricing page를 확인합니다.

Project Structure

checkout, Customer Portal, webhook route handlers는 src/app/api/ 아래에 있습니다:

사용자 지정

Product Information 업데이트

src/lib/products.ts를 편집하여 다음을 변경합니다:
  • Dodo Payments dashboard의 Products에 있는 Product IDs
  • Prices
  • Features
  • Descriptions

Customer Data 사전 입력

src/app/components/ProductCard.tsx는 각 checkout request와 함께 hardcoded name과 email을 전송합니다. 이를 로그인한 사용자의 정보로 교체하세요:

Customer Portal 업데이트

src/app/components/Header.tsx의 Customer Portal link는 hardcoded customer ID를 사용하여 /api/customer-portal를 엽니다. 이를 로그인한 사용자의 Dodo Payments customer ID로 교체하세요:
테스트를 위한 customer ID를 가져오려면 test purchase를 완료한 다음 dashboard의 Customers에서 customer의 ID를 복사합니다. production에서는 backend에서 ID를 가져오세요.

Webhook Events

src/app/api/webhook/route.ts의 handler는 DODO_PAYMENTS_WEBHOOK_KEY를 사용하여 각 request를 검증한 다음 두 event를 처리합니다:
  • subscription이 active 상태가 되면 onSubscriptionActive가 실행됩니다 (subscription.active).
  • payment이 성공하면 onPaymentSucceeded가 실행됩니다 (payment.succeeded).
이 handlers 안에 business logic을 추가하세요:
더 많은 event를 처리하려면 onSubscriptionCancelled와 같은 handlers를 추가하세요. Next.js Adaptor에서 지원되는 모든 handlers를 확인할 수 있습니다. Dodo Payments는 localhost에 접근할 수 없습니다. local development에서는 ngrok과 같은 tunnel을 사용하여 local server를 노출하고 tunnel URL을 webhook endpoint로 사용하세요.

Deployment

Production용 Build

Vercel에 Deploy

[ Deploy with Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate) Vercel dashboard에서 네 개의 environment variables를 추가하고 DODO_PAYMENTS_RETURN_URL를 production URL로 설정하세요.

Webhook URL 업데이트

배포한 후 Dodo Payments Dashboard에 production webhook URL을 추가하고, example.com 대신 domain을 입력하세요:
각 endpoint에는 고유한 signing secret이 있습니다. 새 endpoint의 secret을 production environment의 DODO_PAYMENTS_WEBHOOK_KEY에 복사하세요.

문제 해결

node_modules와 package-lock.json를 삭제한 다음 dependencies를 다시 설치합니다:
다음과 같은 일반적인 원인을 확인하세요:
  • Dodo Payments dashboard에 product ID가 존재하지 않습니다.
  • .env의 API key 또는 DODO_PAYMENTS_ENVIRONMENT가 잘못되었습니다. test mode key는 test_mode에서만 작동합니다.
브라우저 console과 npm run dev를 실행하는 terminal에서 error를 확인하세요.
local testing에서는 ngrok을 사용하여 server를 노출하세요:
Dodo dashboard에서 ngrok HTTPS URL 뒤에 /api/webhook를 붙인 endpoint를 추가합니다. 해당 endpoint의 signing secret을 .env file의 DODO_PAYMENTS_WEBHOOK_KEY에 복사하세요.

더 알아보기

지원

boilerplate에 대한 도움이 필요하면 다음을 이용하세요:
마지막 수정일 2026년 9월 26일