Installation
Cài đặt packagedodopayments bằng package manager của bạn:
Bắt đầu nhanh
Tạo client, sau đó tạo checkout session:bearerToken, client sẽ đọc biến môi trường DODO_PAYMENTS_API_KEY. Nếu bạn bỏ qua environment, client sẽ kết nối đến live mode. Test mode API key chỉ hoạt động với environment: 'test_mode'.
Tính năng cốt lõi
TypeScript First
Định nghĩa kiểu cho mọi request parameter và response field, hiển thị ngay trong editor của bạn.
Auto-Pagination
Các list method sẽ tự động tải trang tiếp theo khi bạn lặp qua chúng bằng
for await...of.Error Handling
Một typed error class cho từng HTTP error status, kèm status, headers và response body.
Smart Retries
Mặc định retry hai lần, với exponential backoff, đối với connection error và retryable status code.
Cấu hình
Biến môi trường
Lưu API key trong một biến môi trường:.env
Nếu base URL được thiết lập và bạn đồng thời truyền
environment, constructor sẽ throw lỗi “Ambiguous URL”. Để sử dụng environment trong trường hợp đó, hãy truyền baseURL: null.
Để xác minh webhook, truyền raw request body và headers vào client.webhooks.unwrap(rawBody, { headers }). Phương thức này kiểm tra signature bằng webhook key của bạn và trả về event đã được parse. client.webhooks.unsafeUnwrap(rawBody) parse body mà không xác minh, vì vậy chỉ sử dụng phương thức này để testing. Xem Webhooks.
Cấu hình timeout
Theo mặc định, request sẽ timeout sau 1 phút. Thiết lậptimeout, tính bằng milliseconds, trên client hoặc cho một request đơn lẻ:
APIConnectionTimeoutError. Request bị timeout sẽ được retry, vì vậy một call có thể mất nhiều thời gian hơn timeout trước khi thất bại.
Cấu hình retry
Thiết lậpmaxRetries trên client hoặc cho một request đơn lẻ:
DodoPayments.APIError. Mỗi error có các property status, headers và error (response body). Kiểm tra một class cụ thể bằng instanceof, chẳng hạn err instanceof DodoPayments.RateLimitError:
Các thao tác phổ biến
Các ví dụ trong phần này sử dụngclient từ Bắt đầu nhanh.
Tạo Checkout Session
Tạo checkout session, sau đó redirect customer đếncheckout_url được trả về:
checkout_url chỉ hoạt động một lần và hết hạn sau 24 giờ. Để xem mọi session option, hãy xem Checkout Sessions.
Quản lý Customer
Tạo customer với email address và name, sau đó retrieve bằng ID:Xử lý Subscription
Tạo subscription, charge một on-demand subscription và đọc usage history của subscription.billing chỉ yêu cầu country, một mã quốc gia ISO gồm hai chữ cái. customer nhận { customer_id } để gắn customer hiện có hoặc { email, name? } để tạo customer mới. charge dành cho on-demand subscriptions, còn product_price được tính theo đơn vị nhỏ nhất của currency. retrieveUsageHistory trả về một paginated list mà bạn có thể lặp qua như mô tả trong Auto-Pagination.Usage-Based Billing
Ingest Usage Event
Gửi usage event cho một customer:event_id là idempotency key, vì vậy hãy cung cấp cho mỗi event một giá trị duy nhất. Nếu cùng một event_id xuất hiện hai lần trong một request, toàn bộ request sẽ bị từ chối. Nếu một event_id đã được ingest, event mới sẽ bị bỏ qua. Một request chấp nhận tối đa 1.000 event. timestamp mặc định là thời gian hiện tại và sẽ bị từ chối nếu sớm hơn hiện tại quá 1 giờ hoặc muộn hơn hiện tại quá 5 phút.Retrieve Usage Event
Retrieve một event đơn lẻ bằngevent_id hoặc liệt kê event được lọc theo customer, event name và time range:
usageEvents.list cũng chấp nhận meter_id và trả về một paginated list.
Cấu hình proxy
Để gửi request thông qua proxy, truyền proxy setting của runtime vàofetchOptions.
Node.js (Sử dụng Undici)
Truyền một undiciProxyAgent làm dispatcher:
Bun
Thiết lập optionproxy:
Deno
Tạo HTTP client vớiDeno.createHttpClient và truyền nó làm client:
Logging
Thiết lập log level bằng client optionlogLevel hoặc biến môi trường DODO_PAYMENTS_LOG. Client option sẽ ghi đè biến môi trường.
'debug': Debug message, info, warning và error.'info': Info message, warning và error.'warn': Warning và error. Đây là mặc định.'error': Chỉ error.'off': Không logging.
console. Để sử dụng pino, winston hoặc logging library khác, hãy truyền logger của bạn làm option logger; logLevel vẫn kiểm soát message nào được gửi đến logger. Log message chỉ dùng cho debugging và format của chúng có thể thay đổi giữa các release.
Migration từ Node.js SDK
Nếu bạn sử dụng Node.js SDK cũ, hãy làm theo migration guide để nâng cấp. SDK hiện tại sử dụng APIfetch tích hợp sẵn thay cho node-fetch, yêu cầu Node.js 20, TypeScript 4.9 và Jest 28 trở lên, đồng thời bao gồm migration tool cập nhật phần lớn code của bạn.
View Migration Guide
Tìm hiểu cách migrate từ Node.js SDK sang TypeScript SDK
Auto-Pagination
Các list method trả về paginated result. Lặp qua bằngfor await...of để lấy item từ mọi page. SDK sẽ request page tiếp theo khi cần:
page.items và gọi hasNextPage() cùng getNextPage():
page_size vào list method, chẳng hạn client.payments.list({ page_size: 50 }).
Yêu cầu
SDK hỗ trợ TypeScript 4.9 trở lên và các runtime sau:- Web browser (Chrome, Firefox, Safari, Edge và các browser khác được cập nhật mới nhất)
- Node.js 20 LTS trở lên, với các version (non-EOL)
- Deno 1.28.0 trở lên
- Bun 1.0 trở lên
- Cloudflare Workers
- Vercel Edge Runtime
- Jest 28 trở lên với environment
"node"(environment"jsdom"không được hỗ trợ) - Nitro 2.6 trở lên
Tài nguyên
GitHub Repository
Mã nguồn, các release và danh sách method đầy đủ.
API Reference
Mọi endpoint, parameter và response.
Discord Community
Đặt câu hỏi và trao đổi với các developer khác.
Report Issues
Báo cáo bug hoặc yêu cầu feature.
Hỗ trợ
Để được hỗ trợ về TypeScript SDK:- Discord: Tham gia community server để nhận hỗ trợ theo thời gian thực.
- Email: Liên hệ support@dodopayments.com.
- GitHub: Mở issue trên repository.