Skip to content

API Reference

Tài liệu API của Pancake POS SDK. SDK cung cấp các module sau để tương tác với Pancake POS API.

Core Modules

Orders

Quản lý đơn hàng và quy trình bán hàng:

  • Tạo và cập nhật đơn hàng
  • Xử lý trạng thái đơn hàng
  • In và xác nhận đơn hàng
  • Tính toán khuyến mãi

Products

Quản lý sản phẩm và danh mục:

  • CRUD sản phẩm và biến thể
  • Quản lý danh mục
  • Cập nhật tồn kho
  • Kiểm tra lịch sử tồn kho

Customers

Quản lý thông tin khách hàng:

  • Thông tin cơ bản khách hàng
  • Quản lý địa chỉ giao hàng
  • Lịch sử mua hàng
  • Tích điểm thưởng

Business Operations

Warehouses

Quản lý kho hàng và tồn kho:

  • Quản lý nhiều kho
  • Chuyển kho
  • Kiểm kho
  • Báo cáo tồn kho

Payments

Xử lý thanh toán đa kênh:

  • Tích hợp cổng thanh toán
  • Xử lý giao dịch
  • Quản lý hoàn tiền
  • Thanh toán trả góp

Reports

Báo cáo và phân tích dữ liệu:

  • Báo cáo doanh số
  • Báo cáo kho hàng
  • Phân tích khách hàng
  • Phân tích marketing

Loyalty

Chương trình khách hàng thân thiết:

  • Thiết lập chương trình tích điểm
  • Quản lý hạng thành viên
  • Tích/đổi điểm thưởng
  • Phân tích hiệu quả

Tích Hợp API

Xác Thực

Tất cả các request đều yêu cầu API key và Shop ID:

typescript
const client = new PancakeClient('your-api-key', 'your-shop-id');

API key được sử dụng để xác thực quyền truy cập API, trong khi Shop ID xác định cửa hàng đang thao tác.

Error Handling

SDK sử dụng Promise và throwing errors để xử lý lỗi:

typescript
try {
  const result = await client.someResource.someMethod();
} catch (error) {
  if (error.status === 404) {
    // Xử lý lỗi không tìm thấy resource
  } else if (error.status === 401) {
    // Xử lý lỗi xác thực
  } else {
    // Xử lý các lỗi khác
  }
}

Pagination

Các API trả về danh sách đều hỗ trợ phân trang:

typescript
const { data, metadata } = await client.products.list({
  page_size: 20,   // Số items trên một trang
  page_number: 1   // Số trang (1-based)
});

Filtering & Sorting

Nhiều API hỗ trợ lọc và sắp xếp kết quả:

typescript
const { data } = await client.orders.list({
  status: 'pending',
  from_date: '2025-01-01',
  to_date: '2025-12-31',
  sort: '-created_at'  // Sắp xếp giảm dần theo ngày tạo
});

Rate Limiting

API có giới hạn số lượng request trong một khoảng thời gian. SDK tự động xử lý rate limiting bằng cách:

  • Theo dõi số lượng request
  • Trì hoãn request khi cần thiết
  • Thử lại request khi bị từ chối

Best Practices

  1. Sử dụng TypeScript

    • SDK được viết bằng TypeScript
    • Cung cấp type definitions đầy đủ
    • Giúp phát hiện lỗi sớm
  2. Xử Lý Lỗi

    • Luôn sử dụng try/catch
    • Kiểm tra loại lỗi cụ thể
    • Log lỗi để debug
  3. Tối Ưu Hiệu Năng

    • Sử dụng phân trang cho danh sách dài
    • Cache dữ liệu phù hợp
    • Chỉ lấy các trường cần thiết
  4. Bảo Mật

    • Không hard-code API key
    • Sử dụng biến môi trường
    • Kiểm tra dữ liệu đầu vào

Hỗ Trợ

Nếu bạn cần hỗ trợ: