get /shops/{SHOP_ID}/customer_analytics/report
GET/shops/{SHOP_ID}/customer_analytics/reportGọi qua 360: GET https://partner.quantri360.com/v1/pancake_pos/shops/{SHOP_ID}/customer_analytics/report
Sắp mở. API này đã chạy thật qua 360 và đang được chốt giá — bạn có thể đọc tài liệu và chuẩn bị tích hợp trước.
Mô tả API
Báo cáo tổng quan khách hàng trong một lần gọi (như màn Thống kê → Khách hàng): số khách mới / cũ và chi tiêu, giới tính, nhóm tuổi, cấp độ, phân bố theo số đơn thành công, chu kỳ mua lại, kèm danh sách khách phân trang. Dùng cho báo cáo tỉ lệ khách quay lại và giá trị khách theo kỳ.
- Tiền trong các khối tổng quan là CHUỖI số (vd "2588500"), riêng
customer_age.revenue_*vàcustomer_orders.data[].order_success_amountlà số. - startDate / endDate là Unix giây tuyệt đối — kỳ “tháng 10 giờ VN” = 1790787600 → 1793465999.
- Gọi đầy đủ (không có
section) tính lại toàn bộ khối tổng quan — khi lật trang danh sách khách nên thêmsection=customer_orders. - Danh sách khách chứa tên, SĐT — chỉ lưu ở nơi có kiểm soát quyền.
Request
Địa chỉ
GET https://partner.quantri360.com/v1/pancake_pos/shops/{SHOP_ID}/customer_analytics/report
Xác thực & gian hàng
| Tên | Vị trí | Kiểu | Mẫu | Mô tả |
|---|---|---|---|---|
| Authorization | header | header | Bearer q360_live_ab12cd34_… | Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand. |
| platform_shop_id | query | string | 1234567 | SHOP_ID đã nối — có thể bỏ khi đường dẫn có /shops/{SHOP_ID}. |
Tham số request
| Tên | Vị trí | Kiểu | Bắt buộc | Mẫu | Mô tả |
|---|---|---|---|---|---|
| SHOP_ID | path | int | Có | 1234567 | Mã cửa hàng đã nối với 360. |
| startDate | query | timestamp | Không | 1790787600 | Đầu kỳ (Unix giây). Khách tạo từ mốc này là khách MỚI; không truyền thì old_customer = null. |
| endDate | query | timestamp | Không | 1793206799 | Cuối kỳ (Unix giây). |
| page | query | int | Không | 1 | Trang danh sách khách (mặc định 1). |
| pageSize | query | int | Không | 30 | Khách / trang (mặc định 10). |
| section | query | string | Không | customer_orders | Truyền customer_orders để CHỈ lấy danh sách khách (không tính lại các khối tổng quan) — dùng khi lật trang. |
| data_sort | query | string (JSON) | Không | {"asc_desc":"desc","sort_by":"order_success"} | Sắp xếp danh sách: sort_by = order_count · order_success · order_return…; asc_desc = asc | desc. |
| search | query | string | Không | 0901234567 | Tìm khách theo tên / SĐT. |
| sale_form | query | string | Không | all | all · retail (khách lẻ) · wholesale (khách buôn). |
| warehouse_id[] | query | string[] | Không | Lọc đơn theo kho. | |
| order_sources[] | query | string (JSON) | Không | {"order_sources":"-1"} | Lọc nguồn đơn — mỗi phần tử là chuỗi JSON. |
| order_tag[] | query | string[] | Không | 1 | Lọc theo thẻ đơn (no_tag = đơn không thẻ). |
| gender[] | query | string[] | Không | female | male · female · none. |
| typeCustomer[] | query | string[] | Không | online | online · offline. |
Phân trang
Danh sách khách ở data.customer_orders: tăng page (kèm section=customer_orders cho nhẹ) tới total_pages.
Ví dụ request
curl -s "https://partner.quantri360.com/v1/pancake_pos/shops/1234567/customer_analytics/report?startDate=1790787600&endDate=1793206799&page=1&pageSize=30" \ -H "Authorization: Bearer $KEY"
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.get(
"https://partner.quantri360.com/v1/pancake_pos/shops/1234567/customer_analytics/report",
params={
"startDate": 1790787600,
"endDate": 1793206799,
"page": 1,
"pageSize": 30
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=60,
)
print(r.status_code)
print(r.json())Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/pancake_pos/shops/1234567/customer_analytics/report');
for (const [k, v] of Object.entries({"startDate":1790787600,"endDate":1793206799,"page":1,"pageSize":30})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'GET',
headers: { Authorization: `Bearer ${KEY}` },
});
console.log(r.status, await r.json());PHP
<?php $key = 'q360_live_...'; // khóa API của brand $url = 'https://partner.quantri360.com/v1/pancake_pos/shops/1234567/customer_analytics/report' . '?' . http_build_query(['startDate' => 1790787600, 'endDate' => 1793206799, 'page' => 1, 'pageSize' => 30]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key]); $res = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status, "\n", $res;
Response
Tham số phản hồi (nguyên của Pancake POS)
| Tên | Kiểu | Mẫu | Mô tả |
|---|---|---|---|
| success | bool | true | |
| data | object | ||
| customer | object | {"new_customer":11,"old_customer":4} | Số khách mới / cũ trong kỳ. |
| customer_purchased | object | {"new_customer":"2588500","old_customer":"2527300"} | Chi tiêu khách mới / cũ — CHUỖI số (VND). |
| customer_gender | object | {"unknown":5,"female":10,"male":0} | |
| customer_age | object | Số khách + doanh thu theo nhóm tuổi: under_18, from_18_to_24 … over_55, havent_birthday, revenue_*, revenue_total. | |
| customer_level | object[] | Theo cấp độ: id (null = chưa có cấp), count, total_amount (chuỗi). | |
| customer_order_count | object[] | Phân bố theo số đơn thành công: order_success_quantity, customer_count, amount (chuỗi). | |
| new_customer | object | old_customer, analytic_new_customer{ count, count_1, count_2, count_tags }. | |
| customer_analytic | object[] | Chu kỳ mua lại: range (0 = mua 1 lần; 1 / 31 / 61 = chu kỳ TB 1–30 / 31–60 / 61–90 ngày…), total, from_1_to_30, from_31_to_60, from_61_to_90, under_90. | |
| customer_orders | object | Danh sách khách: data[]{ id, name, phone_number, currency, customer{ id, name, fb_id, global_id, psid }, order_count, order_success_count, order_success_amount, order_return_count }, page_number, page_size, total_entries, total_pages. |
Mẫu phản hồi
{
"success": true,
"data": {
"customer": {
"new_customer": 11,
"old_customer": 4
},
"customer_purchased": {
"new_customer": "2588500",
"old_customer": "2527300"
},
"customer_gender": {
"unknown": 5,
"female": 10,
"male": 0
},
"customer_level": [
{
"count": 15,
"id": null,
"total_amount": "5115800"
}
],
"customer_order_count": [
{
"amount": "0",
"customer_count": 7,
"order_success_quantity": 0
},
{
"amount": "2728500",
"customer_count": 8,
"order_success_quantity": 1
}
],
"new_customer": {
"old_customer": 4,
"analytic_new_customer": {
"count": 11,
"count_1": 11,
"count_2": 0,
"count_tags": 0
}
},
"customer_analytic": [
{
"range": 0,
"total": 4344,
"from_1_to_30": 3,
"from_31_to_60": 2,
"from_61_to_90": 3,
"under_90": 4336
}
],
"customer_orders": {
"page_number": 1,
"page_size": 1,
"total_entries": 15,
"total_pages": 15,
"data": [
{
"id": "…",
"name": "Khách hàng A",
"phone_number": "0901234567",
"currency": "VND",
"order_count": 1,
"order_success_count": 1,
"order_success_amount": 295000,
"order_return_count": 0
}
]
}
}
}
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Khách hàng ở trang nền tảng
- Tạo API key (tick kênh Pancake POS)
- Gọi theo ví dụ ở trên