@dodopayments/nuxt menyediakan tiga handler rute server untuk aplikasi Nuxt Anda. checkoutHandler mengembalikan URL checkout, customerPortalHandler mengarahkan pelanggan ke Customer Portal, dan Webhooks memverifikasi event webhook serta meneruskannya ke kode Anda.
Checkout API Route
Buat URL checkout dari server route Nuxt.
Customer Portal API Route
Biarkan pelanggan mengelola subscription dan detail mereka dari server route Nuxt.
Webhooks API Route
Terima dan verifikasi event webhook Dodo Payments di Nuxt.
Ringkasan
Modul ini mendaftarkan handler-nya sebagai auto-import server Nuxt, sehingga rute server Anda dapat memanggil
checkoutHandler, customerPortalHandler, dan Webhooks tanpa pernyataan import. Setiap rute membaca kredensial Anda dari runtimeConfig. Nuxt hanya mengekspos runtimeConfig.public ke browser, sehingga API key dan webhook secret tetap berada di server.Instalasi
1
Install the Nuxt Module
Jalankan perintah ini di root proyek Anda:Modul ini mencantumkan Nuxt 3 (3.13.1 atau yang lebih baru) dan
zod 3.25 atau yang lebih baru sebagai peer dependency.2
Register the Module in nuxt.config.ts
Tambahkan Atur environment variable ini, misalnya dalam file
@dodopayments/nuxt ke array modules, lalu petakan kredensial Anda ke runtimeConfig:nuxt.config.ts
.env di root proyek Anda:Server Nuxt yang telah di-build tidak membaca file
.env Anda. Saat runtime, Nuxt hanya menimpa nilai runtimeConfig dari variabel yang sesuai dengan path-nya, seperti NUXT_PRIVATE_RETURN_URL untuk private.returnUrl. Karena itu, atur variabel ini di environment hosting Anda juga.Contoh Handler Rute API
Contoh-contoh ini membuat rute server di direktori
server/routes/api/. Nuxt menentukan rute setiap file berdasarkan nama dan akhiran method-nya, sehingga checkout.get.ts menangani GET /api/checkout.- Checkout API Route
- Customer Portal API Route
- Webhook API Route
Gunakan handler ini untuk menambahkan checkout Dodo Payments ke aplikasi Nuxt Anda. Rute GET menyediakan checkout statis. Rute POST menyediakan checkout session, atau checkout dinamis saat Anda mengatur
type: "dynamic".checkout.post.ts menyediakan satu alur POST. Gunakan contoh checkout dinamis atau contoh checkout session:Handler Rute Checkout
Handler checkout mendukung ketiga cara menerima pembayaran dengan Dodo Payments:- Static Payment Links: URL yang dapat dibagikan untuk mengumpulkan pembayaran tanpa kode.
- Dynamic Payment Links: Link pembayaran yang Anda buat dengan detail khusus. Link ini menggunakan endpoint yang sudah deprecated.
- Checkout Sessions: Checkout hosted dengan keranjang produk, detail pelanggan, dan opsi kustomisasi. Ini adalah alur yang direkomendasikan.
checkoutHandler menerima opsi berikut:
Static Checkout (GET)
Static Checkout (GET)
Query Parameters yang Didukung
string
wajib
Identifier produk, misalnya
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
default:"1"
Jumlah produk.
string
Nama lengkap pelanggan. Diabaikan jika
firstName atau lastName diberikan.string
Nama depan pelanggan.
string
Nama belakang pelanggan.
string
Alamat email pelanggan.
string
Negara pelanggan, sebagai kode ISO 3166-1 alpha-2.
string
Baris alamat pelanggan.
string
Kota pelanggan.
string
Negara bagian atau provinsi pelanggan.
string
ZIP atau kode pos pelanggan.
boolean
Atur ke
true untuk menonaktifkan field nama lengkap.boolean
Atur ke
true untuk menonaktifkan field nama depan.boolean
Atur ke
true untuk menonaktifkan field nama belakang.boolean
Atur ke
true untuk menonaktifkan field email.boolean
Atur ke
true untuk menonaktifkan field negara.boolean
Atur ke
true untuk menonaktifkan field baris alamat.boolean
Atur ke
true untuk menonaktifkan field kota.boolean
Atur ke
true untuk menonaktifkan field negara bagian.boolean
Atur ke
true untuk menonaktifkan field kode ZIP.string
Mata uang pembayaran, misalnya
USD.boolean
default:"true"
Tampilkan atau sembunyikan pemilih mata uang.
number
Menetapkan jumlah yang dibebankan, dalam unit utama mata uang, misalnya
12.5 untuk $12.50. Hanya berfungsi dengan produk Pay What You Want dan diabaikan jika nilainya di bawah harga minimum produk.boolean
default:"true"
Tampilkan atau sembunyikan bagian diskon.
string
Query parameter apa pun yang diawali
metadata_ akan diteruskan sebagai metadata.returnUrl dari konfigurasinya ke link sebagai redirect_url.Format Respons
Checkout statis mengembalikan respons JSON dengan URL checkout. Dalam test mode, URL menggunakantest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Kirim parameter sebagai body JSON dalam request POST.
- Mendukung pembayaran satu kali dan berulang.
billingdancustomerwajib diisi.- Untuk setiap field body yang didukung, lihat:
Format Respons
Checkout dinamis mengembalikan respons JSON dengan URL checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout sessions membuat checkout hosted untuk pembelian satu kali dan langganan, dengan kontrol penuh atas kustomisasi.
product_cart adalah satu-satunya field wajib. Jika body tidak memiliki return_url, handler menggunakan returnUrl dari konfigurasinya.Untuk detail selengkapnya dan setiap field yang didukung, lihat Panduan Integrasi Checkout Sessions.Session yang dibuat dengan payment_method_id tidak mengembalikan URL checkout, sehingga handler merespons dengan 400. Untuk menagih payment method yang tersimpan, buat session menggunakan SDK.Format Respons
Checkout sessions mengembalikan respons JSON dengan URL checkout:Handler Rute Customer Portal
Handler rute Customer Portal membuat Customer Portal session untuk pelanggan yang Anda berikan dan mengarahkan browser ke session tersebut.Query Parameters
string
wajib
Customer ID untuk portal session, misalnya
?customer_id=cus_123.boolean
Jika diatur ke
true, Dodo Payments juga mengirim link portal melalui email kepada pelanggan.Handler Rute Webhook
Handler rute webhook memverifikasi setiap request sebelum menjalankan kode Anda:- Method: Hanya request POST yang didukung. Method lain mengembalikan 405.
- Signature Verification: Memverifikasi raw request body serta header
webhook-id,webhook-timestamp, danwebhook-signaturedenganwebhookKey, mengikuti spesifikasi Standard Webhooks. Mengembalikan 401 jika verifikasi gagal. - Payload Validation: Memvalidasi payload dengan Zod. Mengembalikan 400 untuk payload yang tidak valid.
- Error Handling:
- 401: Signature tidak valid
- 400: Payload tidak valid
- 500: Error internal selama verifikasi
- Event Routing: Memanggil
onPayloaduntuk setiap event, kemudian handler untuk tipe event tersebut, dan mengembalikan 200.