Langsung ke konten utama

Ikhtisar

Better Auth Adapter untuk Dodo Payments menyediakan:
  • Pembuatan pelanggan otomatis saat mendaftar
  • Sesi Checkout (disarankan) dengan pemetaan slug produk
  • Portal pelanggan mandiri
  • Endpoint pengumpulan dan pelaporan penggunaan untuk penagihan berbasis penggunaan
  • Pemrosesan acara webhook waktu nyata dengan verifikasi tanda tangan
  • Dukungan penuh TypeScript
Anda memerlukan akun Dodo Payments dan kunci API untuk menggunakan integrasi ini.

Prasyarat

  • Node.js 20+
  • Akses ke Dasbor Dodo Payments Anda
  • Proyek yang sudah ada menggunakan better-auth

Instalasi

1

Install dependencies

Jalankan perintah berikut di direktori root proyek Anda:
Semua paket yang diperlukan kini telah terpasang.

Pengaturan

1

Configure environment variables

Tambahkan ini ke file .env Anda:
Jangan pernah meng-commit kunci API atau rahasia apa pun ke kontrol versi.
2

Set up server-side integration

Buat atau perbarui src/lib/auth.ts:
Atur environment ke live_mode untuk produksi.
3

Set up client-side integration

Buat atau perbarui src/lib/auth-client.ts:

Contoh Penggunaan

Utamakan authClient.dodopayments.checkoutSession untuk integrasi baru. Metode lama checkout tidak lagi disarankan dan dipertahankan hanya untuk kompatibilitas mundur.

Membuat Sesi Checkout (Disarankan)

Tidak seperti metode checkout lama, checkoutSession tidak memerlukan informasi penagihan di awal karena akan diambil dari pengguna di halaman pembayaran. Anda masih dapat menimpanya dengan melewatkan kunci billing dalam argumen.
Mirip dengan metode checkout lama, checkoutSession mengambil email dan nama pelanggan dari sesi better-auth mereka, namun, Anda dapat menimpanya dengan melewatkan objek customer dengan email dan nama.
Anda dapat melewatkan opsi yang sama dalam argumen sebagai body request untuk Create Checkout Session endpoint.
URL pengembalian diambil dari successUrl yang dikonfigurasi dalam plugin server. Anda tidak perlu memasukkan return_url dalam payload klien.

Legacy Checkout (Kadaluwarsa)

Metode authClient.dodopayments.checkout sudah kadaluwarsa. Gunakan checkoutSession untuk implementasi baru.

Mengakses Customer Portal

Mendaftarkan Data Pelanggan

Melacak Penggunaan Terukur

Aktifkan plugin usage() di server untuk menangkap acara terukur dan memungkinkan pelanggan memeriksa penagihan berbasis penggunaan mereka.
  • authClient.dodopayments.usage.ingest menerima acara untuk pengguna yang sudah masuk dan terverifikasi emailnya.
  • authClient.dodopayments.usage.meters.list mencantumkan penggunaan terbaru untuk meter yang terikat dengan langganan pelanggan tersebut.
Tanda waktu yang lebih lama dari satu jam atau lebih dari lima menit ke depan akan ditolak ketika memasukkan penggunaan.
Jika Anda mengabaikan meter_id saat mendaftarkan meter penggunaan, semua meter yang terikat dengan langganan pelanggan akan ditampilkan.

Webhooks

Plugin webhooks memproses acara pembayaran real-time dari Dodo Payments dengan verifikasi tanda tangan yang aman. Endpoint default adalah /api/auth/dodopayments/webhooks.
1

Generate and set webhook secret

Hasilkan rahasia webhook untuk URL endpoint Anda (misalnya, https://<your-domain>/api/auth/dodopayments/webhooks) di Dashboard Dodo Payments dan atur di file .env Anda:
2

Handle webhook events

Contoh handler:

Penangan Acara Webhook yang Didukung

Referensi Konfigurasi

  • client (wajib): Instansi klien DodoPayments
  • createCustomerOnSignUp (opsional): Buat pelanggan secara otomatis saat pengguna mendaftar
  • use (wajib): Array plugin untuk diaktifkan (checkout, portal, usage, webhooks)
  • getCustomerParams (opsional): Fungsi yang menerima BetterAuth User dan mengembalikan bidang tambahan untuk dilampirkan pada pelanggan DodoPayments saat pembuatan dan pembaruan (misalnya, metadata, phone_number)
  • products: Array produk atau fungsi async yang mengembalikan produk - successUrl: URL untuk diarahkan setelah pembayaran berhasil - authenticatedUsersOnly: Memerlukan autentikasi pengguna (default: false)

Pemecahan Masalah & Tips

  • Kunci API Tidak Valid: Periksa kembali DODO_PAYMENTS_API_KEY Anda di .env. - Ketidakcocokan tanda tangan Webhook: Pastikan rahasia webhook cocok dengan yang diatur di Dashboard Dodo Payments. - Pelanggan tidak dibuat: Pastikan createCustomerOnSignUp diatur ke true.
  • Gunakan variabel lingkungan untuk semua rahasia dan kunci. - Uji dalam test_mode sebelum beralih ke live_mode. - Catat acara webhook untuk debugging dan audit.

Prompt untuk LLMs

Terakhir diubah pada 9 Juli 2026