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:
- Kunci API: Buat kunci di Dashboard → Developer → API Keys.
- Kunci Webhook: Tambahkan endpoint di Dashboard → Developer → Webhooks, lalu salin secret penandatanganannya. URL endpoint harus bersifat publik dan menggunakan HTTPS. Untuk menerima event di mesin Anda, lihat Webhook Events.
4
Configure Environment Variables
Salin file contoh untuk membuat file Tetapkan nilainya ke kredensial Dodo Payments Anda:
.env di direktori root:.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_KEYmengautentikasi rute checkout dan Customer Portal.DODO_PAYMENTS_WEBHOOK_KEYmemverifikasi signature webhook.DODO_PAYMENTS_RETURN_URLadalah tempat checkout mengarahkan pelanggan setelah pembayaran.DODO_PAYMENTS_ENVIRONMENTadalahtest_modeataulive_mode.
5
Add Your Products
Ganti produk contoh di Halaman harga menampilkan
src/lib/products.ts dengan produk Anda sendiri. Tetapkan setiap product_id ke ID produk di bawah Products pada dashboard Anda: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
Struktur Proyek
Rute API checkout, Customer Portal, dan webhook berada di bawahsrc/pages/api/:
Penyesuaian
Perbarui Informasi Produk
Editsrc/lib/products.ts untuk mengubah:
- ID produk, dari Products di dashboard Dodo Payments Anda
- Harga
- Fitur
- Deskripsi
Isi Otomatis Data Pelanggan
Skrip checkout disrc/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 disrc/components/Header.astro membuka /api/customer-portal dengan ID pelanggan hardcode. Ganti dengan ID pelanggan dari sistem autentikasi atau database Anda:
Event Webhook
Handler disrc/pages/api/webhook.ts memverifikasi setiap permintaan dengan DODO_PAYMENTS_WEBHOOK_KEY, lalu menangani dua event:
onSubscriptionActiveberjalan saat langganan menjadi aktif (subscription.active).onSubscriptionCancelledberjalan saat langganan dibatalkan (subscription.cancelled).
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 menetapkanexport 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:DODO_PAYMENTS_WEBHOOK_KEY di environment produksi Anda ke secret penandatanganan endpoint ini.
Pemecahan Masalah
Module not found or build errors
Module not found or build errors
Hapus
node_modules dan package-lock.json, lalu instal ulang dependensi:Checkout redirect fails
Checkout redirect fails
Periksa penyebab umum berikut:
- ID produk tidak ada di dashboard Dodo Payments Anda.
- Kunci API atau
DODO_PAYMENTS_ENVIRONMENTdi.envsalah. Kunci mode pengujian hanya berfungsi dengantest_mode.
npm run dev.Webhooks not receiving events
Webhooks not receiving events
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.Customer portal link doesn't work
Customer portal link doesn't work
Ganti
CUSTOMER_ID yang di-hardcode di src/components/Header.astro dengan ID pelanggan di dashboard Dodo Payments Anda.Dalam produksi, dapatkan ID pelanggan dari sistem autentikasi dan database Anda.Build fails with adapter error
Build fails with adapter error
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
- Dokumentasi Dodo Payments
- Dokumentasi Checkout Sessions
- Dokumentasi Webhooks
- Astro Adaptor: opsi untuk handler
Checkout,CustomerPortal, danWebhooks - Dokumentasi Astro
Dukungan
Untuk mendapatkan bantuan terkait boilerplate:- Ajukan pertanyaan di komunitas Discord.
- Laporkan masalah dan ikuti pembaruan di repositori GitHub.
- Kirim email ke tim dukungan.