Skip to main content
Komponen @dodopayments/convex menambahkan Dodo Payments ke backend Convex Anda. Komponen ini menyediakan fungsi checkout yang membuat sesi checkout, fungsi customerPortal yang membuka Customer Portal untuk pengguna yang sudah masuk, dan createDodoWebhookHandler, yang memverifikasi webhook dalam Convex HTTP action. Komponen ini memerlukan Convex 1.26 atau versi lebih baru.

Checkout Function

Buat sesi checkout dari Convex actions.

Customer Portal

Biarkan pelanggan mengelola langganan dan detail mereka.

Webhooks

Terima dan proses event webhook Dodo Payments.

Instalasi

1

Install the Package

Jalankan perintah ini di root proyek Anda:
2

Add Component to Convex Config

Tambahkan komponen Dodo Payments ke konfigurasi Convex Anda:
Setelah mengedit convex.config.ts, jalankan npx convex dev sekali untuk menghasilkan type.
3

Set Up Environment Variables

Atur environment variables di dashboard Convex Anda pada Settings → Environment Variables. Untuk membuka dashboard, jalankan:
Tambahkan environment variables berikut:
  • DODO_PAYMENTS_API_KEY: API key Dodo Payments Anda, dari Developer → API Keys di dashboard Dodo Payments.
  • DODO_PAYMENTS_ENVIRONMENT: test_mode atau live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET: webhook secret Anda, dari Developer → Webhooks. Diperlukan untuk penanganan webhook. Webhook handler membaca nama variable yang persis ini.
Simpan secret sebagai environment variables Convex. Fungsi backend Convex tidak membaca file .env. Jangan pernah commit secret ke version control.

Contoh Penyiapan Komponen

1

Create Internal Query

Buat internal query yang mencari pelanggan di database Anda berdasarkan auth ID. Fungsi identify pada langkah berikutnya menggunakannya untuk mendapatkan Dodo Payments customer ID milik pengguna yang sudah masuk untuk customer portal.
Komponen ini tidak mendefinisikan schema. Sebelum menggunakan query ini, definisikan tabel customers dengan index by_auth_id di convex/schema.ts, atau ubah query agar sesuai dengan schema yang sudah ada.
2

Configure DodoPayments Component

Buat client. identify memetakan pengguna Convex yang sudah masuk ke Dodo Payments customer ID. Fungsi ini mengembalikan null jika tidak ada pengguna yang masuk atau tidak ada pelanggan yang cocok.
Selanjutnya, tambahkan fungsi yang Anda perlukan:
Gunakan fungsi ini untuk menambahkan checkout Dodo Payments ke aplikasi Convex Anda. Fungsi ini membuat sesi checkout dari field yang diterima oleh checkout payload validator komponen.

Checkout Function

Komponen Convex membuat sesi checkout, yaitu checkout flow yang direkomendasikan untuk semua pembayaran. Sesi berisi cart produk, detail pelanggan, dan opsi checkout.

Penggunaan

Panggil checkout dari Convex action, dengan field sesi checkout di payload:
checkout tidak memanggil identify. Untuk menautkan pelanggan yang sudah ada, teruskan customer: { customer_id } dalam payload. Untuk detail selengkapnya dan daftar lengkap field yang didukung, lihat Checkout Sessions. Sesi yang dibuat dengan payment_method_id tidak mengembalikan URL checkout, sehingga checkout akan melempar error untuk sesi tersebut.

Format Respons

Fungsi checkout mengembalikan objek dengan URL checkout:

Customer Portal Function

Fungsi customer portal mengembalikan URL Customer Portal untuk pengguna yang sudah masuk.

Penggunaan

Fungsi ini mengembalikan objek dengan field portal_url.

Parameter

boolean
default:"false"
Jika diatur ke true, Dodo Payments juga mengirim email berisi tautan portal kepada pelanggan.
customerPortal mendapatkan pelanggan dari fungsi identify dalam penyiapan DodoPayments Anda, yang harus mengembalikan dodoCustomerId milik pelanggan. Jika identify mengembalikan null, customerPortal akan melempar error User is not authenticated..

Webhook Handler

createDodoWebhookHandler memverifikasi setiap request sebelum menjalankan kode Anda:
  • Method: Daftarkan route dengan method: "POST". Request dengan method lain tidak akan mencapai handler.
  • Signature Verification: Memverifikasi signature Standard Webhooks dengan environment variable DODO_PAYMENTS_WEBHOOK_SECRET. Mengembalikan 400 jika verifikasi gagal.
  • Payload Validation: Divalidasi dengan Zod. Mengembalikan 400 untuk payload yang tidak valid.
  • Error Handling:
    • 400: Signature tidak valid, payload tidak valid, atau error yang dilempar oleh salah satu handler Anda
    • 200: Semua handler selesai
    • Jika DODO_PAYMENTS_WEBHOOK_SECRET belum diatur, handler akan melempar error dan request gagal.
  • Event Routing: Memanggil onPayload untuk setiap event, lalu handler untuk type event tersebut.

Webhook Event Handler yang Didukung

Setiap handler menerima Convex ActionCtx dan payload terverifikasi untuk type event-nya:

Penggunaan Frontend

Panggil checkout dan portal actions dari komponen React Anda dengan hook useAction dari convex/react.

Prompt untuk LLM

Salin prompt ini ke AI coding assistant Anda untuk menambahkan komponen ke proyek Anda. Untuk memberikan docs dan skills Dodo Payments kepada agent Anda, instal Agent Plugin.
Terakhir diubah pada 26 September 2026