Skip to main content

Ikhtisar

Boilerplate minimal Next.js adalah aplikasi awal dengan Dodo Payments yang sudah terhubung. Tambahkan API keys dan product IDs Anda, lalu Anda mendapatkan halaman harga yang membuka checkout, endpoint webhook untuk payment events, dan tautan ke Customer Portal.
Boilerplate ini menggunakan Next.js 16 App Router dengan TypeScript, Tailwind CSS 4, dan adaptor @dodopayments/nextjs. Untuk menambahkan route handlers yang sama ke aplikasi yang sudah ada, lihat Next.js Adaptor.

Fitur

Boilerplate ini mencakup:
  • Penyiapan Cepat: Beralih dari clone ke halaman harga yang berjalan dalam sekitar lima menit.
  • Checkout: Alur checkout yang telah dikonfigurasi sebelumnya, dibangun di atas @dodopayments/nextjs.
  • Halaman Harga: Halaman harga bertema gelap yang ditata dengan Tailwind CSS.
  • Webhook Handler: Endpoint yang memverifikasi setiap webhook signature dan menjalankan kode Anda untuk event tersebut.
  • Customer Portal: Tautan header yang membuka Customer Portal, tempat pelanggan mengelola subscription mereka.
  • TypeScript: Definisi product dan handler yang memiliki type.
  • Checkout Terisi Otomatis: Meneruskan nama dan email pelanggan ke checkout, sehingga pelanggan tidak perlu mengetikkannya lagi.

Prasyarat

Sebelum memulai, Anda memerlukan:
  • Node.js 20.9 atau yang lebih baru, yang diperlukan oleh Next.js 16.
  • Akun Dodo Payments, untuk membuat API key dan webhook signing secret di dashboard.

Mulai Cepat

1

Clone the Repository

2

Install Dependencies

3

Get API Credentials

Daftar di Dodo Payments, lalu dapatkan kredensial Anda dari dashboard:
Buat keduanya saat tombol Live Mode di sidebar dalam keadaan nonaktif. Key test mode hanya berfungsi dengan DODO_PAYMENTS_ENVIRONMENT=test_mode, dan payment dalam test mode tidak memindahkan uang sungguhan.
4

Configure Environment Variables

Salin file contoh untuk membuat file .env di direktori root:
Atur nilainya ke kredensial Dodo Payments Anda:
Route handlers membaca variabel berikut:
  • DODO_PAYMENTS_API_KEY mengautentikasi checkout dan Customer Portal handlers.
  • DODO_PAYMENTS_WEBHOOK_KEY memverifikasi webhook signatures.
  • DODO_PAYMENTS_RETURN_URL adalah tempat checkout mengarahkan pelanggan setelah payment.
  • DODO_PAYMENTS_ENVIRONMENT adalah test_mode atau live_mode.
Jangan commit file .env Anda ke version control. .gitignore milik repository sudah mengecualikannya.
5

Add Your Products

Ganti sample products di src/lib/products.ts dengan milik Anda sendiri. Atur setiap product_id ke ID product di bawah Products pada dashboard Anda:
Halaman harga menampilkan name, description, price, dan features dari file ini. Checkout membebankan harga yang ditetapkan pada product di Dodo Payments, jadi pastikan price tetap sinkron dengannya.
6

Run the Development Server

Buka http://localhost:3000 untuk melihat halaman harga Anda.

Struktur Project

Checkout, Customer Portal, dan webhook route handlers berada di bawah src/app/api/:

Kustomisasi

Perbarui Informasi Product

Edit src/lib/products.ts untuk mengubah:
  • Product IDs, dari Products di dashboard Dodo Payments Anda
  • Harga
  • Fitur
  • Deskripsi

Isi Otomatis Data Pelanggan

src/app/components/ProductCard.tsx mengirimkan nama dan email hardcoded dalam setiap checkout request. Ganti dengan detail pengguna yang sedang login:

Perbarui Customer Portal

Tautan Customer Portal di src/app/components/Header.tsx membuka /api/customer-portal dengan customer ID hardcoded. Ganti dengan Dodo Payments customer ID milik pengguna yang sedang login:
Untuk mendapatkan customer ID untuk pengujian, selesaikan test purchase, lalu salin customer ID dari Customers di dashboard. Dalam production, ambil ID dari backend Anda.

Webhook Events

Handler di src/app/api/webhook/route.ts memverifikasi setiap request dengan DODO_PAYMENTS_WEBHOOK_KEY, lalu menangani dua event:
  • onSubscriptionActive berjalan saat subscription menjadi active (subscription.active).
  • onPaymentSucceeded berjalan saat payment berhasil (payment.succeeded).
Tambahkan business logic Anda di dalam handler ini:
Untuk menangani lebih banyak event, tambahkan handler-nya, seperti onSubscriptionCancelled. Next.js Adaptor mencantumkan semua handler yang didukung. Dodo Payments tidak dapat menjangkau localhost. Untuk local development, gunakan tunnel seperti ngrok untuk mengekspos server lokal Anda, dan gunakan URL tunnel tersebut sebagai webhook endpoint.

Deployment

Build untuk Production

Deploy ke Vercel

[ Deploy dengan Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate) Tambahkan keempat environment variables di dashboard Vercel, lalu atur DODO_PAYMENTS_RETURN_URL ke URL production Anda.

Perbarui Webhook URL

Setelah melakukan deployment, tambahkan production webhook URL Anda di Dodo Payments Dashboard, dengan domain Anda menggantikan example.com:
Setiap endpoint memiliki signing secret sendiri. Salin secret endpoint baru ke DODO_PAYMENTS_WEBHOOK_KEY di environment production Anda.

Pemecahan Masalah

Hapus node_modules dan package-lock.json, lalu instal ulang dependencies:
Periksa penyebab umum berikut:
  • Product ID tidak ada di dashboard Dodo Payments Anda.
  • API key atau DODO_PAYMENTS_ENVIRONMENT di .env salah. Key test mode hanya berfungsi dengan test_mode.
Cari error di browser console dan terminal yang menjalankan npm run dev.
Untuk pengujian lokal, gunakan ngrok untuk mengekspos server Anda:
Di Dodo dashboard Anda, tambahkan endpoint dengan URL HTTPS ngrok diikuti /api/webhook. Salin signing secret endpoint tersebut ke DODO_PAYMENTS_WEBHOOK_KEY di file .env Anda.

Pelajari Lebih Lanjut

Dukungan

Untuk mendapatkan bantuan terkait boilerplate:
Terakhir diubah pada 26 September 2026