@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_modeataulive_mode.DODO_PAYMENTS_WEBHOOK_SECRET: webhook secret Anda, dari Developer → Webhooks. Diperlukan untuk penanganan webhook. Webhook handler membaca nama variable yang persis ini.
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.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.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
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
Panggilcheckout 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
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_SECRETbelum diatur, handler akan melempar error dan request gagal.
- Event Routing: Memanggil
onPayloaduntuk setiap event, lalu handler untuk type event tersebut.
Webhook Event Handler yang Didukung
Setiap handler menerima ConvexActionCtx dan payload terverifikasi untuk type event-nya:
Penggunaan Frontend
Panggil checkout dan portal actions dari komponen React Anda dengan hookuseAction dari convex/react.