Tổng quan
Boilerplate tối giản Next.js là một ứng dụng khởi đầu đã được kết nối sẵn với Dodo Payments. Thêm API keys và product IDs của bạn để có một trang định giá mở checkout, một webhook endpoint cho các sự kiện thanh toán và một liên kết đến Customer Portal.Boilerplate này sử dụng Next.js 16 App Router với TypeScript, Tailwind CSS 4 và adaptor
@dodopayments/nextjs. Để thêm các route handlers tương tự vào một ứng dụng hiện có, hãy xem Next.js Adaptor.Tính năng
Boilerplate bao gồm:- Thiết lập nhanh: Từ lúc clone đến khi có một trang định giá đang chạy trong khoảng năm phút.
- Checkout: Luồng checkout được cấu hình sẵn, xây dựng trên
@dodopayments/nextjs. - Trang định giá: Trang định giá với giao diện tối, được tạo kiểu bằng Tailwind CSS.
- Webhook Handler: Endpoint xác minh chữ ký của từng webhook và chạy code của bạn cho sự kiện đó.
- Customer Portal: Liên kết trong header mở Customer Portal, nơi khách hàng quản lý các subscription của mình.
- TypeScript: Định nghĩa product và handlers có kiểu.
- Checkout điền sẵn: Truyền tên và email của khách hàng vào checkout để khách hàng không phải nhập lại.
Điều kiện tiên quyết
Trước khi bắt đầu, bạn cần:- Node.js 20.9 trở lên, phiên bản mà Next.js 16 yêu cầu.
- Tài khoản Dodo Payments, để tạo API key và webhook signing secret trong dashboard.
Bắt đầu nhanh
1
Clone the Repository
2
Install Dependencies
3
Get API Credentials
Đăng ký tại Dodo Payments, sau đó lấy thông tin xác thực từ dashboard:
- API Key: Tạo key trong Dashboard → Developer → API Keys.
- Webhook Key: Thêm endpoint trong Dashboard → Developer → Webhooks, sau đó sao chép signing secret của endpoint. URL của endpoint phải là public và sử dụng HTTPS. Để nhận các sự kiện trên máy của bạn, hãy xem Webhook Events.
4
Configure Environment Variables
Sao chép file mẫu để tạo file Đặt các giá trị thành thông tin xác thực Dodo Payments của bạn:Các route handlers đọc những biến này:
.env trong thư mục gốc:DODO_PAYMENTS_API_KEYxác thực các checkout và Customer Portal handlers.DODO_PAYMENTS_WEBHOOK_KEYxác minh webhook signatures.DODO_PAYMENTS_RETURN_URLlà nơi checkout gửi khách hàng đến sau khi thanh toán.DODO_PAYMENTS_ENVIRONMENTlàtest_modehoặclive_mode.
5
Add Your Products
Thay thế các product mẫu trong Trang định giá hiển thị
src/lib/products.ts bằng product của bạn. Đặt mỗi product_id thành ID của một product trong Products ở dashboard:name, description, price và features từ file này. Checkout tính mức giá được đặt trên product trong Dodo Payments, vì vậy hãy giữ cho price đồng bộ với mức giá đó.6
Run the Development Server
Cấu trúc dự án
Các checkout, Customer Portal và webhook route handlers nằm trongsrc/app/api/:
Tùy chỉnh
Cập nhật thông tin product
Chỉnh sửasrc/lib/products.ts để thay đổi:
- Product IDs, lấy từ Products trong Dodo Payments dashboard
- Prices
- Features
- Descriptions
Điền sẵn dữ liệu khách hàng
src/app/components/ProductCard.tsx gửi tên và email được hardcode trong mỗi checkout request. Thay thế chúng bằng thông tin của người dùng đã đăng nhập:
Cập nhật Customer Portal
Liên kết Customer Portal trongsrc/app/components/Header.tsx mở /api/customer-portal với customer ID được hardcode. Thay thế bằng Dodo Payments customer ID của người dùng đã đăng nhập:
Webhook Events
Handler trongsrc/app/api/webhook/route.ts xác minh từng request bằng DODO_PAYMENTS_WEBHOOK_KEY, sau đó xử lý hai sự kiện:
onSubscriptionActivechạy khi một subscription trở nên active (subscription.active).onPaymentSucceededchạy khi một payment thành công (payment.succeeded).
onSubscriptionCancelled. Next.js Adaptor liệt kê mọi handler được hỗ trợ.
Dodo Payments không thể truy cập localhost. Để phát triển cục bộ, hãy sử dụng một tunnel như ngrok để expose local server của bạn và dùng tunnel URL làm webhook endpoint.
Triển khai
Build cho production
Triển khai lên Vercel
[DODO_PAYMENTS_RETURN_URL thành production URL của bạn.
Cập nhật Webhook URL
Sau khi triển khai, thêm production webhook URL trong Dodo Payments Dashboard, thayexample.com bằng domain của bạn:
DODO_PAYMENTS_WEBHOOK_KEY trong production environment.
Khắc phục sự cố
Module not found or build errors
Module not found or build errors
Xóa
node_modules và package-lock.json, sau đó cài đặt lại dependencies:Checkout redirect fails
Checkout redirect fails
Kiểm tra các nguyên nhân thường gặp sau:
- Product ID không tồn tại trong Dodo Payments dashboard.
- API key hoặc
DODO_PAYMENTS_ENVIRONMENTtrong.envkhông đúng. Key ở test mode chỉ hoạt động vớitest_mode.
npm run dev.Webhooks not receiving events
Webhooks not receiving events
Để kiểm thử cục bộ, hãy sử dụng ngrok để expose server của bạn:Trong Dodo dashboard của bạn, hãy thêm một endpoint với ngrok HTTPS URL theo sau là
/api/webhook. Sao chép signing secret của endpoint đó vào DODO_PAYMENTS_WEBHOOK_KEY trong file .env.Customer portal link doesn't work
Customer portal link doesn't work
Thay thế
CUSTOMER_ID được hardcode trong src/app/components/Header.tsx bằng ID của một khách hàng trong Dodo Payments dashboard của bạn.Trong production, hãy lấy customer ID từ hệ thống xác thực và database của bạn.Tìm hiểu thêm
- Tài liệu Dodo Payments
- Tài liệu Checkout Sessions
- Tài liệu Webhooks
- Next.js Adaptor: các tùy chọn cho các handlers
Checkout,CustomerPortalvàWebhooks
Hỗ trợ
Để được hỗ trợ về boilerplate:- Đặt câu hỏi trong cộng đồng Discord.
- Báo cáo sự cố và theo dõi cập nhật trong GitHub repository.
- Gửi email cho đội ngũ hỗ trợ.