Skip to main content

GitHub Repository

Kode sumber lengkap dan panduan pemasangan
Lihat Dodo Payments Supabase Subscription Starter — boilerplate lengkap Next.js, Supabase, dan Dodo Payments dengan autentikasi, pembayaran, dan webhook.

Pengaturan Cepat

1. Prasyarat

Anda memerlukan:
  • Akun Supabase dengan project yang telah dibuat
  • API key Dodo Payments dari Developer → API Keys di dashboard
Temukan project ref Anda di Project Settings pada dashboard Supabase.

3. Penyiapan Database

  1. Buka dashboard Supabase.
  2. Buka SQL Editor.
  3. Salin seluruh isi schema.sql dan jalankan.

4. Mengatur Secret Awal

Supabase secara otomatis menyediakan SUPABASE_URL dan SUPABASE_SERVICE_ROLE_KEY saat runtime.
Anda akan mengatur DODO_PAYMENTS_WEBHOOK_KEY setelah deployment, setelah Anda memiliki URL webhook.

5. Deploy

Function sudah disiapkan di functions/webhook/index.ts.

6. Mendapatkan URL Webhook

URL webhook Anda adalah:

7. Mendaftarkan Webhook di Dashboard DodoPayments

  1. Buka Developer → Webhooks di dashboard Dodo Payments.
  2. Klik Add endpoint.
  3. Masukkan URL webhook Anda.
  4. Pilih event berikut: subscription.active, subscription.cancelled, subscription.renewed.
  5. Klik Create endpoint dan salin signing secret.

8. Mengatur Webhook Key & Redeploy

Fungsinya

Webhook handler memproses event subscription dan menyimpannya di Supabase PostgreSQL:
  • subscription.active — Membuat atau memperbarui record customer dan subscription
  • subscription.cancelled — Menandai subscription sebagai dibatalkan
  • subscription.renewed — Memperbarui tanggal billing berikutnya

Fitur Utama

  • Signature verification — Menggunakan Dodo Payments SDK untuk memverifikasi keaslian webhook
  • Idempotency — Menggunakan header webhook-id untuk mencegah pemrosesan duplikat
  • Event logging — Menyimpan semua event di tabel webhook_events untuk audit trail
  • Error handling — Mencatat kegagalan dan menandai event untuk dicoba kembali
Contoh ini menangani tiga event subscription inti dengan field minimal. Anda dapat memperluasnya untuk mendukung jenis event dan field tambahan sesuai kebutuhan Anda.

File Konfigurasi

Database Schema

Tabel yang dibuat:
  • customers — Email, nama, dan customer ID Dodo Payments
  • subscriptions — Status, jumlah, tanggal billing berikutnya, ditautkan ke customer
  • webhook_events — Event log dengan webhook ID untuk idempotency

Kode Implementasi

Cara Kerjanya

Edge Function berbasis Deno:
  1. Memverifikasi signature — Menggunakan Dodo Payments SDK untuk verifikasi HMAC-SHA256
  2. Memeriksa duplikat — Menggunakan header webhook-id untuk mencegah pemrosesan duplikat
  3. Mencatat event — Menyimpan data webhook mentah di tabel webhook_events
  4. Memproses pembaruan — Membuat atau memperbarui customer dan subscription melalui Supabase client
  5. Menangani error — Mencatat kegagalan dan menandai event untuk dicoba kembali

Pengujian

Pengembangan lokal:
Flag --no-verify-jwt diperlukan karena webhook tidak menyertakan token JWT. Keamanan disediakan oleh signature verification webhook.
Melihat log:
Atau di dashboard Supabase pada Edge Functions → webhook → Logs. Mengonfigurasi di dashboard Dodo Payments:
  1. Buka Developer → Webhooks.
  2. Tambahkan endpoint dengan URL Supabase Anda.
  3. Pilih subscription.active, subscription.cancelled, dan subscription.renewed.

Masalah Umum

Sumber Daya

Terakhir diubah pada 26 September 2026