@dodopayments/astro menyediakan tiga handler endpoint untuk proyek Astro Anda. Checkout mengembalikan URL checkout, CustomerPortal mengarahkan pelanggan ke Customer Portal, dan Webhooks memverifikasi event webhook serta meneruskannya ke kode Anda.
Checkout Handler
Buat URL checkout dengan alur static, dynamic, dan checkout session.
Customer Portal
Biarkan pelanggan mengelola subscription dan detail mereka.
Webhooks
Terima dan proses event webhook Dodo Payments.
Instalasi
1
Install the Package
Jalankan perintah ini di root proyek Anda:Package ini mencantumkan Astro 4 atau 5, serta
zod 3.25 atau yang lebih baru, sebagai peer dependencies.2
Set Up Environment Variables
Buat file
.env di root proyek Anda. Buat API key di Developer → API Keys. Tambahkan endpoint webhook di Developer → Webhooks, lalu salin Signing secret ke DODO_PAYMENTS_WEBHOOK_KEY:DODO_PAYMENTS_RETURN_URL adalah tempat pelanggan diarahkan setelah checkout. Jika Anda tidak meneruskan environment, handler akan menggunakan live_mode. API key mode pengujian hanya berfungsi dengan test_mode.Contoh Route Handler
Contoh-contoh ini adalah endpoint server Astro di
src/pages/api/. Endpoint yang memanggil Dodo Payments harus dirender sesuai permintaan, jadi tambahkan server adapter ke proyek Astro Anda. Dalam mode output default static Astro, endpoint dirender saat build, sehingga setiap contoh mengekspor prerender = false untuk merender endpoint pada setiap request.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Gunakan handler ini untuk menambahkan checkout Dodo Payments ke aplikasi Anda. Handler
GET menyediakan checkout static. Handler POST menyediakan checkout sessions, atau checkout dynamic saat Anda menetapkan type: "dynamic". File endpoint hanya dapat mengekspor satu handler POST, sehingga contoh checkout dynamic mengasumsikan Anda menetapkan type: "dynamic".Checkout Route Handler
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: payment link 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.
Checkout menerima opsi berikut:
Handler menyediakan checkout static untuk request
GET. Untuk request POST, handler membuat payment link dynamic saat type adalah dynamic, dan checkout session dalam kasus lainnya.
Static Checkout (GET)
Static Checkout (GET)
Query Parameter 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
Alamat jalan pelanggan.
string
Kota pelanggan.
string
Negara bagian atau provinsi pelanggan.
string
Kode 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 mayor 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
Parameter query apa pun yang diawali dengan
metadata_ akan diteruskan ke checkout sebagai metadata, misalnya metadata_orderId=123.email dengan disableEmail=true. Handler menambahkan returnUrl dari konfigurasinya ke link sebagai redirect_url.Format Response
Checkout static mengembalikan response JSON dengan URL checkout. Dalam mode pengujian, URL menggunakantest.checkout.dodopayments.com:Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Kirim parameter sebagai JSON body dalam request POST.
- Mendukung pembayaran satu kali dan berulang. Handler mengambil produk, lalu membuat subscription jika produk tersebut berulang dan pembayaran satu kali jika tidak.
- Body memerlukan
billing(denganstreet,city,state,country, danzipcode) sertacustomer, ditambahproduct_idatauproduct_cart. Subscription memerlukanproduct_id. - Untuk setiap field body yang didukung, lihat:
Format Response
Checkout dynamic mengembalikan response JSON dengan payment link sebagai URL checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout sessions membuat checkout hosted untuk pembelian satu kali dan subscription, dengan kontrol penuh atas kustomisasi.
product_cart adalah satu-satunya field wajib, dan memerlukan setidaknya satu produk. Jika body tidak memiliki return_url, handler menggunakan returnUrl dari konfigurasinya.Setiap checkout_url hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam, atau setelah 15 menit jika Anda meneruskan confirm: true. Session yang dibuat dengan payment_method_id tidak mengembalikan checkout_url, sehingga handler merespons dengan 400.Untuk detail selengkapnya dan semua field yang didukung, lihat Checkout Sessions Integration Guide.Format Response
Checkout sessions mengembalikan response JSON dengan URL checkout:Customer Portal Route Handler
Route handler Customer Portal membuat session Customer Portal untuk pelanggan yang Anda berikan dan mengarahkan browser ke sana.CustomerPortal menerima opsi bearerToken dan environment yang sama seperti Checkout.
Query Parameter
string
wajib
Customer ID untuk session portal, misalnya
?customer_id=cus_123.boolean
Jika diatur ke
true, Dodo Payments juga mengirimkan link portal kepada pelanggan melalui email.customer_id tidak ada, dan 500 jika session portal tidak dapat dibuat.
Webhook Route Handler
Webhook route handler memverifikasi setiap request dengan webhook secret Anda, yang diteruskan sebagaiwebhookKey, sebelum menjalankan kode Anda:
- Method: Hanya request POST yang didukung. Method lain mengembalikan 405.
- Signature Verification: Memverifikasi header
webhook-id,webhook-timestamp, danwebhook-signaturedenganwebhookKey, sesuai 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, lalu handler untuk tipe event tersebut, dan mengembalikan 200.