Skip to main content
API Gateway Blueprint gửi một usage event đến Dodo Payments cho mỗi lệnh gọi API mà dịch vụ của bạn xử lý, còn meter Count chuyển các event đó thành khoản phí cho từng lệnh gọi đối với mỗi khách hàng. Sử dụng nó để theo dõi mức sử dụng endpoint API, hỗ trợ giới hạn tốc độ và tính phí theo mức sử dụng API. Gói này có trong gói npm @dodopayments/ingestion-blueprints dưới dạng trackAPICall(), gửi một event cho mỗi lệnh gọi, và createBatch(), xếp hàng các event khi số lượng request lớn.

Trường hợp sử dụng

API Gateway Blueprint phù hợp với các tình huống sau:

API-as-a-Service

Theo dõi số lệnh gọi của từng khách hàng trên một nền tảng API và tính phí theo số lượng lệnh gọi.

Rate Limiting

Ghi lại số lượng lệnh gọi của từng khách hàng để hỗ trợ giới hạn tốc độ dựa trên mức sử dụng. Blueprint ghi lại mức sử dụng nhưng không thực thi giới hạn.

Performance Monitoring

Ghi lại thời gian phản hồi và status code cùng mỗi event, để tỷ lệ lỗi nằm cạnh dữ liệu tính phí.

Multi-Tenant SaaS

Tính phí khách hàng theo mức tiêu thụ API trên các endpoint khác nhau.
Mỗi event cần có Dodo Payments customer ID của khách hàng mà bạn tính phí; ID này bắt đầu bằng cus_. Lưu ID này cùng bản ghi người dùng khi tạo customer và truyền ID đó dưới dạng customerId.

Bắt đầu nhanh

Để theo dõi các lệnh gọi API, hãy cài đặt gói, tạo một meter và gửi một event cho mỗi lệnh gọi.
1

Install the SDK

Cài đặt gói Dodo Payments Ingestion Blueprints:
2

Get Your API Keys

Tạo Dodo Payments API key trong Developer → API Keys trên Dodo Payments dashboard, rồi lưu key đó vào environment variable DODO_PAYMENTS_API_KEY. Sử dụng test mode key trong quá trình xây dựng. Test mode key chỉ hoạt động với test_mode.
3

Create a Meter

Trong Dodo Payments dashboard, đi đến Products → Meters và nhấp vào Create Meter. Thiết lập các trường sau:
  • Meter Name: tên mô tả, chẳng hạn như API Calls.
  • Event Name: api_call hoặc tên do bạn chọn. Tên này phải khớp chính xác với eventName trong code của bạn (phân biệt chữ hoa chữ thường).
  • Aggregation Type: Count, để tính phí theo số lượng lệnh gọi.
  • Measurement Unit: đơn vị hiển thị trên hóa đơn, chẳng hạn như calls.
Để chỉ đếm một số lệnh gọi, hãy bật Enable Event Filtering và thêm điều kiện trên các metadata key như endpoint, method hoặc status_code.
4

Track API Calls

Tạo một instance Ingestion bằng API key và event name của bạn, sau đó chọn một pattern: một event cho mỗi lệnh gọi, một batch cho lưu lượng lớn hoặc Express.js middleware theo dõi mọi request. Trong middleware, req.user đến từ authentication middleware của bạn và id phải là Dodo Payments customer ID. Các request không có người dùng đã đăng nhập sẽ được gửi với customer ID anonymous, ID này không khớp với customer nào.

Cấu hình

Cấu hình Ingestion

Truyền các tùy chọn sau vào new Ingestion():
string
bắt buộc
Dodo Payments API key của bạn từ dashboard.
string
Chế độ môi trường: test_mode hoặc live_mode. Mặc định là test_mode. Dodo Payments SDK mặc định sử dụng live_mode, vì vậy hãy đặt rõ ràng live_mode trong production.
string
bắt buộc
Event name khớp với Event Name của meter (phân biệt chữ hoa chữ thường). Mọi event mà instance này gửi đều sử dụng event name đó.

Tùy chọn theo dõi lệnh gọi API

Truyền các tùy chọn sau vào trackAPICall() và batch.add():
string
bắt buộc
Dodo Payments customer ID dùng để tính phí cho lệnh gọi, ví dụ cus_123.
object
Metadata tùy chọn về lệnh gọi API, chẳng hạn như endpoint, method, status code và thời gian phản hồi. Mỗi giá trị phải là string, number hoặc boolean. API từ chối các object lồng nhau, array và giá trị null.

Cấu hình batch

createBatch(ingestion, options) xếp các event trong bộ nhớ và trả về một object có ba method: add() xếp một event vào hàng đợi, flush() gửi các event đang chờ, còn cleanup() gửi chúng và dừng timer. Một lần flush gửi một ingest request cho mỗi event theo cách song song.
number
Số lượng event đang chờ trong hàng đợi để kích hoạt flush ngay lập tức. Mặc định: 100.
number
Số mili giây cần chờ sau add() gần nhất trước khi batch được flush. Mỗi add() sẽ khởi động lại timer. Mặc định: 5000 (5 giây).

Thực tiễn tốt nhất

Sử dụng Batching cho Lưu lượng Cao: Đối với các ứng dụng có lưu lượng truy cập cao, hãy sử dụng createBatch(). batch.add() trả về ngay lập tức, vì vậy việc tracking không làm tăng độ trễ cho request handler của bạn.
Một batch lưu các event trong bộ nhớ cho đến khi được flush và không retry các event gửi thất bại. Automatic flush ghi lại lỗi bằng console.error. Lệnh gọi đến flush() hoặc cleanup() sẽ throw lỗi đó.
Dọn dẹp batch khi shutdown: Gọi batch.cleanup() khi ứng dụng shutdown để các event đang chờ được flush thay vì bị mất.
Lần sửa đổi cuối 28 tháng 9, 2026