Tutorial ini menyediakan contoh kode implementasi untuk aplikasi Node.js/Express. Anda dapat memodifikasi kode ini sesuai kebutuhan kerangka kerja spesifik Anda (Next.js, React, Vue, dll.) dan menyesuaikan antarmuka pengguna sesuai kebutuhan aplikasi Anda.
- Membuat produk langganan dengan penetapan harga berdasarkan kursi
- Mengatur add-on untuk kursi tambahan
- Menghasilkan tautan pembayaran dengan jumlah add-on kustom
- Menangani sesi checkout dengan jumlah kursi dinamis
Apa yang Kita Bangun
Mari kita buat model penetapan harga berdasarkan kursi:- Rencana Dasar: $49/bulan untuk hingga 5 anggota tim
- Add-on Kursi: $2/bulan per kursi tambahan
- Tautan Pembayaran: Checkout dinamis dengan jumlah kursi kustom
Sebelum kita mulai, pastikan Anda sudah memiliki:
- Akun Dodo Payments
- Pemahaman dasar tentang TypeScript/Node.js
Langkah 1: Buat Add-On Kursi Anda
Sekarang kita perlu membuat add-on yang mewakili kursi tambahan. Add-on ini akan dilampirkan pada langganan dasar kita dan memungkinkan pelanggan untuk membeli kursi tambahan.
Navigate to Add-Ons
- Di dashboard Dodo Payments Anda, tetaplah di bagian Products
- Klik tab Add-Ons
- Klik Create Add-On
Enter add-on details
Isi nilai-nilai berikut untuk add-on kursi kami:Nama Add-On:
Additional Team SeatDeskripsi: Add extra team members to your workspace with full access to all featuresHarga: Masukkan → 2.00Mata Uang: Harus sesuai dengan mata uang langganan dasar AndaKategori Pajak: Pilih kategori yang sesuai untuk produk Anda.Langkah 2: Buat Produk Langganan Dasar Anda
Kita akan mulai dengan membuat produk langganan dasar yang mencakup 5 anggota tim. Ini akan menjadi dasar dari model penetapan harga berdasarkan kursi kita.
Navigate to Products
- Masuk ke dashboard Dodo Payments Anda
- Klik Products di bilah sisi kiri
- Klik tombol Create Product
- Pilih Subscription sebagai tipe produk
Langkah 3: Hubungkan Add-On ke Langganan
Sekarang kita perlu mengaitkan add-on kursi kita dengan langganan dasar agar pelanggan dapat membeli kursi tambahan selama checkout.Attach the seat add-on

- Gulir ke bawah ke bagian Add-Ons
- Klik Tambahkan Add-Ons
- Dari dropdown, pilih add-on kursi Anda
- Konfirmasi bahwa itu muncul dalam konfigurasi langganan Anda
Save subscription changes
- Tinjau pengaturan langganan lengkap Anda:
- Paket dasar: $49/bulan untuk 5 kursi
- Add-on: $2/bulan untuk setiap kursi tambahan
- Uji coba gratis: 14 hari
- Klik Save Changes
Harga berbasis kursi dikonfigurasi! Pelanggan sekarang dapat membeli paket dasar Anda dan menambahkan kursi tambahan sesuai kebutuhan.
Langkah 4: Hasilkan Tautan Pembayaran dengan Jumlah Add-On Kustom
Sekarang mari kita buat aplikasi Express.js yang menghasilkan tautan pembayaran dengan jumlah add-on kustom. Di sinilah kekuatan nyata dari penetapan harga berdasarkan kursi muncul - Anda dapat secara dinamis membuat sesi checkout dengan jumlah kursi tambahan yang diinginkan.Set up your project
Buat proyek Node.js baru dan pasang dependensi yang dibutuhkan:Buat file
tsconfig.json:Add a simple web interface
Buat file
public/index.html untuk pengujian yang lebih mudah:Antarmuka web dibuat! Anda sekarang memiliki UI sederhana untuk menguji jumlah kursi yang berbeda.
Langkah 5: Uji Implementasi Anda
Mari kita uji implementasi penetapan harga berdasarkan kursi kita untuk memastikan semuanya berfungsi dengan benar.Start your server
- Pastikan Anda memiliki file
.envdengan kunci API yang benar - Perbarui ID produk dan add-on di kode Anda dengan nilai aktual dari dashboard Dodo Payments Anda
- Jalankan server Anda:
Server Anda harus mulai dengan sukses dan menampilkan “Server running on http://localhost:3000”
Test the web interface

- Buka peramban Anda dan pergi ke
http://localhost:3000 - Anda akan melihat antarmuka demo harga berbasis kursi
- Coba berbagai jumlah kursi (0, 3, 10, dll.)
- Klik “Generate Checkout Link” untuk setiap jumlah
- Verifikasi bahwa URL checkout dihasilkan dengan benar
Test a checkout session
- Hasilkan tautan checkout dengan 3 kursi tambahan
- Klik URL checkout untuk membuka checkout Dodo Payments
- Verifikasi bahwa checkout menampilkan:
- Paket dasar: $49/bulan
- Kursi tambahan: 3 × 2 dolar = $6/bulan
- Selesaikan pembelian uji coba
Checkout harus menampilkan rincian harga yang benar dan memungkinkan Anda menyelesaikan pembelian.
Listen for webhooks and update your DB
Untuk menjaga basis data Anda tetap sinkron dengan perubahan langganan dan kursi, Anda perlu mendengarkan event webhook dari Dodo Payments. Webhook memberi tahu backend Anda saat pelanggan menyelesaikan checkout, memperbarui langganan mereka, atau mengubah jumlah kursi.Ikuti panduan webhook resmi Dodo Payments untuk instruksi langkah demi langkah tentang cara mengatur endpoint webhook dan menangani peristiwa:
Dodo Payments Webhooks Documentation
Pelajari cara menerima dan memproses event webhook dengan aman untuk manajemen langganan dan kursi.
Pemecahan Masalah
Masalah umum dan solusinya:Checkout creation failing
Checkout creation failing
Kemungkinan penyebab:
- ID produk atau ID add-on tidak valid
- Kunci API tidak memiliki izin yang cukup
- Add-on tidak terhubung dengan benar ke langganan
- Masalah konektivitas jaringan
- Verifikasi bahwa ID produk dan add-on ada di dashboard Dodo Payments Anda
- Periksa bahwa add-on terlampir dengan benar ke langganan
- Pastikan kunci API memiliki izin untuk membuat sesi checkout
- Uji konektivitas API dengan permintaan GET sederhana
Selamat! Anda Telah Menerapkan Penetapan Harga Berdasarkan Kursi
Anda telah berhasil membuat sistem penetapan harga berdasarkan kursi dengan Dodo Payments! Berikut adalah apa yang telah Anda capai:Base Subscription
Membuat produk langganan dengan 5 kursi termasuk seharga $49/bulan
Seat Add-ons
Mengonfigurasi add-on untuk kursi tambahan seharga $2/bulan per kursi
Checkout
Membangun API yang menghasilkan sesi checkout dengan jumlah kursi kustom
Web Interface
Membuat antarmuka web sederhana untuk menguji berbagai jumlah kursi
Contoh ini hanya menunjukkan implementasi minimal dari harga berbasis kursi. Untuk penggunaan produksi, sebaiknya tambahkan penanganan kesalahan yang kuat, otentikasi, validasi data, langkah-langkah keamanan, dan sesuaikan logika agar sesuai dengan kebutuhan aplikasi Anda.