Checkout Sessions
Tạo checkout bảo mật, được lưu trữ để xử lý các khoản thanh toán một lần và gói đăng ký.
Payment Links
Chia sẻ URL để thu tiền mà không cần viết code.
Webhooks
Lắng nghe các sự kiện thanh toán và hoàn tất đơn hàng.
API Reference
Tài liệu endpoint đầy đủ và kiểm thử trực tiếp.
Điều kiện tiên quyết
Trước khi bắt đầu, bạn cần:- Một tài khoản Dodo Payments.
- Ít nhất một sản phẩm. Tạo sản phẩm trong Products trên dashboard. Sản phẩm subscription có mức giá khác 0 phải đáp ứng mức tối thiểu cho subscription của loại tiền khách hàng thanh toán: $1.00 đối với USD. Các loại tiền khác USD, EUR và GBP cũng phải có giá trị ít nhất $1.00. Subscription $0 cũng được hỗ trợ.
- Một API key. Tạo API key trong Developer → API Keys và lưu vào biến môi trường
DODO_PAYMENTS_API_KEY. Tạo key ở test mode trong quá trình xây dựng: các ví dụ trên trang này sử dụng test mode và key ở test mode chỉ hoạt động với test mode. Xem Authentication. - SDK cho ngôn ngữ của bạn. Node.js SDK yêu cầu Node.js 20 trở lên, Python SDK yêu cầu Python 3.9 trở lên và Go SDK yêu cầu Go 1.22 trở lên. Các ví dụ cURL không cần SDK.
standardwebhooks. Cài đặt package bằng npm install standardwebhooks.
Chọn hướng tích hợp
Overlay checkout và inline checkout chỉ chạy trên trang web. Trong ứng dụng mobile native, hãy tạo checkout session trên server rồi mở
checkout_url bằng mobile checkout SDK.
Để một coding agent xây dựng tích hợp này cho bạn, hãy cài đặt Agent Plugin.
Checkout Sessions
Tạo trải nghiệm checkout an toàn được lưu trữ. Bạn tạo session trên server, sau đó chuyển hướng khách hàng đếncheckout_url được trả về.
Tạo Checkout Session
- Node.js SDK
- Python SDK
- cURL
Chuyển hướng đến Checkout
Sau khi tạo session, hãy chuyển hướng khách hàng đếncheckout_url:
Xử lý lỗi
Khi request không thành công, API trả về HTTP status code và JSON body vớicode và message. Hãy phân nhánh xử lý lỗi dựa trên code, không phải message. Để xem từng code, nguyên nhân và cách khắc phục, hãy xem Error Codes. Failed payment được báo cáo riêng: status của payment là failed, error_code cung cấp lý do và bạn nhận được một webhook payment.failed. Để quyết định có retry hay không, hãy xem Handle Payment Failures.
Payment Links
Payment link là một URL mở checkout cho một sản phẩm, giúp bạn thu payment mà không cần viết code. Query parameters điền sẵn thông tin khách hàng và điều khiển form checkout. Khi khách hàng mở link, checkout lưu các parameter vào một session và rút gọn URL thành parametersession, nhờ đó các parameter vẫn được giữ lại khi refresh trang.
Static Payment Links
Static payment link là URL bạn tạo một lần và chia sẻ nhiều lần. URL cơ sở là:integer
mặc định:"1"
Số lượng sản phẩm cần mua.
string
bắt buộc
Payment links sử dụng
redirect_url. Checkout Sessions API sử dụng return_url cho cùng mục đích.URL để chuyển hướng sau khi thanh toán. Dodo Payments thêm thông tin payment dưới dạng query parameters, chẳng hạn https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com. Nếu sản phẩm cấp license keys, một parameter license_key cũng được thêm vào, với nhiều key được phân tách bằng dấu phẩy.string
Chỉ định loại tiền thanh toán. Mặc định là loại tiền của quốc gia billing.
boolean
mặc định:"true"
Hiển thị hoặc ẩn currency selector.
boolean
mặc định:"true"
Hiển thị hoặc ẩn phần discounts. Đặt thành
false để ngăn khách hàng nhập coupon codes.number
Cố định số tiền được charge, theo đơn vị tiền tệ chính; ví dụ
12.5 tương đương $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.string
Các field metadata tùy chỉnh, chẳng hạn
metadata_orderId=123.Điền trước thông tin khách hàng
Thêm các field của khách hàng dưới dạng query parameters để đơn giản hóa checkout:string
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 (mã ISO 3166-1 alpha-2).
string
Địa chỉ đường phố.
string
Thành phố.
string
Bang hoặc tỉnh.
string
Mã bưu chính hoặc ZIP code.
Vô hiệu hóa các field của form
Để ngăn khách hàng thay đổi thông tin đã điền trước, hãy vô hiệu hóa một field bằng cách cung cấp giá trị của field đó và đặt flagdisable... tương ứng thành true:
Ví dụ Static Payment Link
Dynamic Payment Links (Đã ngừng sử dụng)
Đối với các tích hợp hiện có sử dụng dynamic payment links, hãy truyềnpayment_link: true đến Create One-Time Payment hoặc Create Subscription để tạo link. Các ví dụ bên dưới tạo one-time payment link. Đối với subscription, hãy xem Subscription Integration Guide.
- Node.js SDK
- Python SDK
- Go SDK
Webhooks
Webhooks thông báo cho server của bạn khi payment thành công hoặc thất bại, để bạn có thể xử lý đơn hàng.Tạo Webhook Endpoint
Truy cập Developer → Webhooks trong dashboard và thêm endpoint URL của bạn. Sao chép signing secret của endpoint vào biến môi trườngDODO_PAYMENTS_WEBHOOK_KEY.
Dưới đây là ví dụ sử dụng Next.js:
app/api/webhooks/dodo/route.ts
Các event cần lắng nghe
Trong flow one-time payment, tối thiểu hãy lắng nghe các event sau:
Nếu bạn bán sản phẩm có license keys, hãy xử lý thêm
license_key.created. Để xem danh sách đầy đủ các event, bao gồm event về subscription, entitlement, credit, recovery và dunning, hãy xem Webhook Event Guide.
Để xem ví dụ đầy đủ về Next.js và TypeScript, hãy xem demo repository và live deployment của repository đó.
Loại tiền và địa chỉ billing
Để charge bằng một loại tiền cụ thể, hãy truyềnbilling_currency và billing_address.country khi tạo checkout session. Nếu bỏ qua các parameter này, Adaptive Currency sẽ chọn loại tiền và quốc gia dựa trên địa chỉ IP của khách hàng, có thể không phải loại tiền bạn dự định charge.
Số tiền Pay What You Want được tính theo loại tiền cơ sở của sản phẩm, phải là USD, GBP hoặc EUR. Để thu một số tiền cố định bằng loại tiền khác, hãy sử dụng Adaptive Currency, tính giá cơ sở theo tỷ giá hối đoái hiện tại, hoặc Localized Pricing, thiết lập giá cố định cho từng loại tiền. Localized Pricing không hoạt động với Pay What You Want.
Mua lại bằng một click
Để charge một khách hàng quay lại bằng payment method đã lưu, hãy truyềnpayment_method_id cùng với confirm: true. payment_method_id chỉ được chấp nhận khi confirm là true và bạn cũng phải truyền customer_id của khách hàng hiện tại. Vì confirm là true, bạn cũng phải truyền một billing_address đầy đủ, hoặc chỉ country và zipcode khi minimal_address là true. Session charge trực tiếp vào payment method đã lưu nên không trả về checkout_url. Sử dụng webhooks để biết payment có thành công hay không.
Trang liên quan
Checkout Sessions
Hướng dẫn đầy đủ với các tùy chọn tùy chỉnh nâng cao.
Overlay Checkout
Nhúng checkout dưới dạng modal overlay trên trang của bạn.
Inline Checkout
Nhúng checkout trực tiếp vào bố cục trang của bạn.
Subscription Integration
Thiết lập billing định kỳ.
Webhook Event Guide
Danh sách đầy đủ tất cả webhook event.
API Reference
Tài liệu Checkout Sessions API.