Langsung ke konten utama

GitHub Repository

Kode sumber lengkap dan panduan pemasangan
Lihat paket awal lengkap untuk Supabase
Paket awal langganan minimal yang dibangun dengan Next.js, Supabase, dan Dodo Payments. Boilerplate ini membantu Anda dengan cepat menyiapkan SaaS berbasis langganan dengan otentikasi, pembayaran, dan webhook.
Dodo Payments Supabase Subscription Starter

Pengaturan Cepat

1. Prasyarat

2. Autentikasi & Tautkan

Dapatkan referensi proyek Anda dari Supabase Dashboard → Pengaturan Proyek

3. Pengaturan Database

  1. Buka Supabase Dashboard
  2. Buka Editor SQL
  3. Buat kueri baru
  4. Salin dan tempel seluruh isi schema.sql
  5. Jalankan kueri

4. Atur Rahasia Awal

Supabase secara otomatis menyediakan SUPABASE_URL dan SUPABASE_SERVICE_ROLE_KEY saat runtime.
Catatan: Kami akan mengatur DODO_PAYMENTS_WEBHOOK_KEY setelah penerapan setelah Anda memiliki URL webhook Anda.

5. Terapkan

Fungsi sudah disiapkan di functions/webhook/index.ts - cukup terapkan:

6. Dapatkan URL Webhook Anda

URL webhook Anda adalah:

7. Daftarkan Webhook di DodoPayments Dashboard

  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 & Terapkan Ulang

Apa yang Dilakukan

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

Fitur Utama

Signature verification - Menggunakan pustaka dodopayments
Idempotency - Mencegah pemrosesan ganda dengan ID webhook
Event logging - Jejak audit lengkap di tabel webhook_events
Error handling - 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

Fungsi Edge berbasis Deno:
  1. Memverifikasi tanda tangan - Menggunakan pustaka dodopayments untuk verifikasi HMAC-SHA256
  2. Memeriksa idempoten - Mengecek ID webhook untuk mencegah pemrosesan duplikat
  3. Mencatat event - Menyimpan data mentah webhook di tabel webhook_events
  4. Memproses pembaruan - Membuat atau memperbarui pelanggan dan langganan melalui klien Supabase
  5. Menangani kesalahan - Mencatat kegagalan dan menandai event untuk dicoba ulang

Pengujian

Pengembangan lokal:
Flag --no-verify-jwt diperlukan karena webhook tidak menyertakan token JWT. Keamanan disediakan oleh verifikasi tanda tangan webhook.
Lihat log:
Atau di Supabase Dashboard → Edge Functions → webhook → tab Logs Konfigurasi di DodoPayments Dashboard:
  1. Pergi ke Pengembang → Webhook
  2. Tambahkan endpoint dengan URL Supabase Anda
  3. Aktifkan: subscription.active, subscription.cancelled, subscription.renewed

Masalah Umum

Sumber Daya

Terakhir diubah pada 22 Mei 2026