Skip to main content

Ikhtisar

Boilerplate minimal Astro adalah aplikasi awal dengan Dodo Payments yang sudah terhubung. Tambahkan kunci API dan ID produk Anda, lalu Anda mendapatkan halaman harga yang membuka checkout, endpoint webhook untuk event pembayaran, dan tautan ke Customer Portal.
Boilerplate ini menggunakan Astro 5 dengan TypeScript, Tailwind CSS 4, dan adaptor @dodopayments/astro. Untuk menambahkan rute API yang sama ke aplikasi yang sudah ada, lihat Astro Adaptor.

Fitur

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

Prasyarat

Sebelum memulai, Anda memerlukan:
  • Versi Node.js LTS, yang diperlukan oleh Astro 5.
  • Akun Dodo Payments, untuk membuat kunci API dan secret penandatanganan webhook 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. Kunci mode pengujian hanya berfungsi dengan DODO_PAYMENTS_ENVIRONMENT=test_mode, dan pembayaran mode pengujian tidak memindahkan uang sungguhan.
4

Configure Environment Variables

Salin file contoh untuk membuat file .env di direktori root:
Tetapkan nilainya ke kredensial Dodo Payments Anda:
.env.example menetapkan DODO_PAYMENTS_RETURN_URL ke port 3000. Ubah ke 4321, yaitu port yang digunakan server pengembangan Astro, agar checkout mengarahkan pelanggan kembali ke aplikasi Anda.Rute API membaca variabel berikut:
  • DODO_PAYMENTS_API_KEY mengautentikasi rute checkout dan Customer Portal.
  • DODO_PAYMENTS_WEBHOOK_KEY memverifikasi signature webhook.
  • DODO_PAYMENTS_RETURN_URL adalah tempat checkout mengarahkan pelanggan setelah pembayaran.
  • DODO_PAYMENTS_ENVIRONMENT adalah test_mode atau live_mode.
Jangan commit file .env ke version control. .gitignore di repositori sudah mengecualikannya.
5

Add Your Products

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

Run the Development Server

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

Struktur Proyek

Rute API checkout, Customer Portal, dan webhook berada di bawah src/pages/api/:

Penyesuaian

Perbarui Informasi Produk

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

Isi Otomatis Data Pelanggan

Skrip checkout di src/components/ProductCard.astro mengirimkan nama dan email hardcode pada setiap permintaan checkout. Ganti dengan detail pengguna yang telah login:

Perbarui Customer Portal

Tautan Customer Portal di src/components/Header.astro membuka /api/customer-portal dengan ID pelanggan hardcode. Ganti dengan ID pelanggan dari sistem autentikasi atau database Anda:
Untuk mendapatkan ID pelanggan untuk pengujian, selesaikan pembelian pengujian, lalu salin ID pelanggan dari Customers di dashboard.

Event Webhook

Handler di src/pages/api/webhook.ts memverifikasi setiap permintaan dengan DODO_PAYMENTS_WEBHOOK_KEY, lalu menangani dua event:
  • onSubscriptionActive berjalan saat langganan menjadi aktif (subscription.active).
  • onSubscriptionCancelled berjalan saat langganan dibatalkan (subscription.cancelled).
Tambahkan logika bisnis Anda di dalam handler ini:
Untuk menangani lebih banyak event, tambahkan handler-nya, seperti onPaymentSucceeded. Astro Adaptor mencantumkan semua handler yang didukung. Dodo Payments tidak dapat menjangkau localhost. Untuk pengembangan lokal, gunakan tunnel seperti ngrok untuk mengekspos server lokal Anda, dan gunakan URL tunnel sebagai endpoint webhook.

Deployment

Astro membangun halaman sebagai output statis, dan setiap rute API menetapkan export const prerender = false agar dirender sesuai permintaan. Rute sesuai permintaan memerlukan adaptor Astro untuk platform deployment Anda: Untuk platform lain, lihat panduan deployment Astro. Di platform hosting Anda, tambahkan keempat variabel environment dan tetapkan DODO_PAYMENTS_RETURN_URL ke URL produksi Anda.

Perbarui URL Webhook

Setelah melakukan deployment, tambahkan URL webhook produksi Anda di Dodo Payments Dashboard:
Setiap endpoint memiliki secret penandatanganan sendiri. Tetapkan DODO_PAYMENTS_WEBHOOK_KEY di environment produksi Anda ke secret penandatanganan endpoint ini.

Pemecahan Masalah

Hapus node_modules dan package-lock.json, lalu instal ulang dependensi:
Periksa penyebab umum berikut:
  • ID produk tidak ada di dashboard Dodo Payments Anda.
  • Kunci API atau DODO_PAYMENTS_ENVIRONMENT di .env salah. Kunci mode pengujian hanya berfungsi dengan test_mode.
Cari error di konsol browser dan terminal yang menjalankan npm run dev.
Untuk pengujian lokal, gunakan ngrok untuk mengekspos server Anda:
Di dashboard Dodo, tambahkan endpoint dengan URL HTTPS ngrok yang diikuti /api/webhook. Salin secret penandatanganan endpoint tersebut ke DODO_PAYMENTS_WEBHOOK_KEY di file .env Anda.
Rute API dirender sesuai permintaan, dan repositori ini tidak menyertakan adaptor deployment. Instal adaptor Astro untuk platform Anda sebelum melakukan build untuk produksi.Lihat panduan deployment Astro untuk detailnya.

Pelajari Lebih Lanjut

Dukungan

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