Langsung ke konten utama

GitHub Repository

Lengkapi kode sumber dan panduan penyiapan

Pengaturan Cepat

1. Prasyarat

2. Instal Dependensi

3. Pengaturan Database

  1. Daftar di Neon
  2. Buat proyek baru
  3. Buka Editor SQL
  4. Salin dan tempel isi dari schema.sql
  5. Jalankan kueri
  6. Dapatkan string koneksi Anda dari Neon → Connection Details

4. Atur Variabel Lingkungan Awal

Melalui Vercel CLI:
Catatan: Kami akan mengatur DODO_PAYMENTS_WEBHOOK_KEY setelah penyebaran setelah Anda memiliki URL webhook Anda.

5. Deploy

6. Dapatkan URL Webhook Anda

URL webhook Anda adalah:

7. Daftarkan Webhook di Dasbor DodoPayments

  1. Buka DodoPayments Dashboard → Developer → Webhooks
  2. Buat endpoint webhook baru
  3. Konfigurasikan URL webhook Anda sebagai endpoint
  4. Aktifkan event langganan ini:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Salin Signing Secret

8. Atur Kunci Webhook & Redeploy

Apa yang Dilakukan

Memproses acara langganan dan menyimpannya di PostgreSQL:
  • subscription.active - Membuat/memperbarui catatan pelanggan dan langganan
  • subscription.cancelled - Menandai langganan sebagai dibatalkan
  • subscription.renewed - Memperbarui tanggal penagihan berikutnya

Fitur Utama

Verifikasi tanda tangan - Menggunakan pustaka dodopayments
Idempoten - Mencegah pemrosesan ganda dengan ID webhook
Pencatatan event - Jejak audit lengkap di tabel webhook_events
Penanganan kesalahan - Dicatat dan dapat dicoba ulang
Catatan: Implementasi ini menunjukkan penanganan tiga event langganan inti (subscription.active, subscription.cancelled, subscription.renewed) dengan bidang minimal. Anda dapat dengan mudah memperluasnya untuk mendukung jenis event dan bidang tambahan sesuai kebutuhan Anda.

Berkas Konfigurasi

Skema Database

Tabel yang dibuat:
  • customers - Email, nama, dodo_customer_id
  • subscriptions - Status, jumlah, next_billing_date, terhubung ke pelanggan
  • webhook_events - Log acara dengan webhook_id untuk idempotensi

Kode Implementasi

Cara Kerjanya

Pengelola webhook:
  1. Menonaktifkan pemrosesan body - Untuk mengakses body mentah demi verifikasi tanda tangan
  2. Memverifikasi tanda tangan - Memastikan permintaan berasal dari DodoPayments menggunakan HMAC-SHA256
  3. Memeriksa duplikat - Menggunakan ID webhook untuk mencegah pemrosesan event yang sama dua kali
  4. Mencatat event - Menyimpan webhook mentah di tabel webhook_events untuk jejak audit
  5. Memproses event - Membuat atau memperbarui pelanggan dan langganan di Neon
  6. Menangani kesalahan - Mencatat kegagalan dan menandai event sebagai belum diproses untuk dicoba ulang

Pengujian

Pengembangan lokal:
Lihat log di Dasbor Vercel:
  1. Pilih proyek Anda
  2. Pergi ke Deployments → deployment terbaru
  3. Klik FunctionsLogs
Konfigurasi di Dasbor DodoPayments:
  1. Pergi ke Developers → Webhooks
  2. Tambahkan endpoint dengan URL Fungsi Vercel Anda
  3. Aktifkan: subscription.active, subscription.cancelled, subscription.renewed

Masalah Umum

Sumber Daya

Terakhir diubah pada 9 Juni 2026