@dodopayments/sveltekit cung cấp cho ứng dụng SvelteKit của bạn ba route handler. Checkout trả về các URL checkout, CustomerPortal đưa khách hàng đến Customer Portal, còn Webhooks xác minh các webhook event và chuyển chúng đến code của bạn.
Checkout Handler
Tạo các URL checkout từ ứng dụng SvelteKit của bạn.
Customer Portal
Cho phép khách hàng quản lý subscription và thông tin của họ.
Webhooks
Nhận và xác minh các webhook event của Dodo Payments.
Cài đặt
1
Install the Package
Chạy command này trong thư mục gốc của project:Package này liệt kê SvelteKit 2 (
@sveltejs/kit 2.20.3 trở lên) và zod 3.25 trở lên dưới dạng peer dependencies.2
Set Up Environment Variables
Tạo một file Tạo API key trong Developer → API Keys. Thêm webhook endpoint trong Developer → Webhooks và sao chép signing secret của endpoint đó vào
.env trong thư mục gốc của project:DODO_PAYMENTS_WEBHOOK_KEY. DODO_PAYMENTS_RETURN_URL là nơi khách hàng được chuyển đến sau checkout. Nếu bạn không truyền environment, các handler sẽ sử dụng live_mode.Ví dụ về Route Handler
Các ví dụ là các endpoint
+server.ts của SvelteKit nằm dưới src/routes/api/. Chúng import thông tin xác thực từ $env/static/private, nơi SvelteKit giữ tách biệt khỏi client-side code.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Sử dụng handler này để thêm checkout của Dodo Payments vào ứng dụng SvelteKit của bạn.
Checkout trả về một handler GET cho static checkout và một handler POST cho checkout session, hoặc cho dynamic checkout khi bạn đặt type: "dynamic". Export GET từ một handler được tạo bằng type: "static" hoặc không có type, vì handler GET của handler session hoặc dynamic sẽ trả về 400.POST đến từ một handler được tạo bằng type: "dynamic". Với type: "session", như trong route ví dụ, hãy gửi yêu cầu checkout session.Checkout Route Handler
Checkout handler hỗ trợ cả ba cách nhận thanh toán bằng Dodo Payments:- Static Payment Links: Các URL có thể chia sẻ để thu thanh toán mà không cần code.
- Dynamic Payment Links: Các payment link được tạo với thông tin tùy chỉnh. Chúng sử dụng các endpoint đã deprecated.
- Checkout Sessions: Checkout được host với giỏ sản phẩm, thông tin khách hàng và các tùy chọn tùy chỉnh. Đây là flow được khuyến nghị.
Checkout nhận các tùy chọn sau:
Static Checkout (GET)
Static Checkout (GET)
Query Parameters được hỗ trợ
string
bắt buộc
Mã định danh sản phẩm, ví dụ
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
mặc định:"1"
Số lượng sản phẩm.
string
Họ tên đầy đủ của khách hàng. Bị bỏ qua nếu
firstName hoặc lastName được cung cấp.string
Tên của khách hàng.
string
Họ của khách hàng.
string
Địa chỉ email của khách hàng.
string
Quốc gia của khách hàng, dưới dạng mã ISO 3166-1 alpha-2.
string
Dòng địa chỉ của khách hàng.
string
Thành phố của khách hàng.
string
Bang hoặc tỉnh của khách hàng.
string
ZIP hoặc mã bưu chính của khách hàng.
boolean
Đặt thành
true để tắt trường họ tên đầy đủ.boolean
Đặt thành
true để tắt trường tên.boolean
Đặt thành
true để tắt trường họ.boolean
Đặt thành
true để tắt trường email.boolean
Đặt thành
true để tắt trường quốc gia.boolean
Đặt thành
true để tắt trường dòng địa chỉ.boolean
Đặt thành
true để tắt trường thành phố.boolean
Đặt thành
true để tắt trường bang.boolean
Đặt thành
true để tắt trường mã ZIP.string
Đơn vị tiền tệ thanh toán, ví dụ
USD.boolean
mặc định:"true"
Hiển thị hoặc ẩn currency selector.
number
Cố định số tiền được tính, theo đơn vị tiền tệ chính, ví dụ
12.5 cho $12.50. Chỉ hoạt động với sản phẩm Pay What You Want và bị bỏ qua nếu thấp hơn giá tối thiểu của sản phẩm.boolean
mặc định:"true"
Hiển thị hoặc ẩn phần discounts.
string
Mọi query parameter bắt đầu bằng
metadata_ đều được truyền dưới dạng metadata.returnUrl từ config của handler vào link dưới dạng redirect_url.Định dạng Response
Static checkout trả về một JSON response chứa checkout URL. Ở test mode, URL sử dụngtest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Gửi các parameter dưới dạng JSON body trong một POST request.
- Hỗ trợ cả thanh toán một lần và thanh toán định kỳ.
billingvàcustomerlà bắt buộc.- Để xem mọi body field được hỗ trợ, hãy xem:
Định dạng Response
Dynamic checkout trả về một JSON response chứa checkout URL:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout session tạo một checkout được host cho các giao dịch mua một lần và subscription, với toàn quyền kiểm soát tùy chỉnh.
product_cart là field bắt buộc duy nhất. Nếu body không có return_url, handler sẽ sử dụng returnUrl từ config.Để biết thêm chi tiết và mọi field được hỗ trợ, hãy xem Checkout Sessions Integration Guide.Một session được tạo bằng payment_method_id không trả về checkout URL, vì vậy handler sẽ phản hồi 400. Để tính phí vào payment method đã lưu, hãy tạo session bằng SDK.Định dạng Response
Checkout session trả về một JSON response chứa checkout URL:Customer Portal Route Handler
Customer Portal route handler tạo một Customer Portal session cho khách hàng bạn truyền vào và chuyển hướng browser đến đó bằng response 302.Query Parameters
string
bắt buộc
Customer ID cho portal session, ví dụ
?customer_id=cus_123.boolean
Nếu đặt thành
true, Dodo Payments cũng gửi email portal link cho khách hàng.Webhook Route Handler
Webhook route handler xác minh từng request trước khi chạy code của bạn:- Method: Chỉ hỗ trợ POST request. Các method khác trả về 405.
- Signature Verification: Xác minh raw request body và các header
webhook-id,webhook-timestampvàwebhook-signaturebằngwebhookKey, theo đặc tả Standard Webhooks. Trả về 401 nếu xác minh thất bại. - Payload Validation: Xác thực payload bằng Zod. Trả về 400 nếu payload không hợp lệ.
- Error Handling:
- 401: Signature không hợp lệ
- 400: Payload không hợp lệ
- 500: Lỗi nội bộ trong quá trình xác minh
- Event Routing: Gọi
onPayloadcho mọi event, sau đó gọi handler tương ứng với type của event và trả về 200.