get /shops/{SHOP_ID}/orders/{ORDER_ID}/messages
GET/shops/{SHOP_ID}/orders/{ORDER_ID}/messagesGọi qua 360: GET https://partner.quantri360.com/v1/pancake_pos/shops/{SHOP_ID}/orders/{ORDER_ID}/messages
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
Tin nhắn Facebook / Instagram của hội thoại gắn với đơn hàng (hội thoại sinh ra đơn). Dùng để xem lại khách đã chốt gì, đối chiếu khi khiếu nại, hoặc chấm chất lượng tư vấn theo đơn mà không cần nối riêng Pancake Chat.
- Đơn hợp lệ nhưng không gắn hội thoại →
{"success":true,"data":[]}. - Thử thật: lần 1 trả 25 tin mới nhất,
current_count=25trả 29 tin cũ hơn (trần 30). - Phân biệt tin của trang và của khách bằng
from.id= page_id. - Phản hồi chứa nội dung chat và có thể có SĐT khách — 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}/orders/{ORDER_ID}/messages
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. |
| ORDER_ID | path | string | Có | 9721 | Mã đơn. |
| current_count | query | int | Không | 25 | Số tin đã tải (độ lệch). Bỏ / 0 = tối đa 25 tin MỚI nhất; lần sau truyền tổng số tin đã nhận (25, rồi 25 + số tin lần 2…) để lấy tối đa 30 tin cũ hơn. |
| fields[] | query | string[] | Không | id | Chỉ trả các trường này cho mỗi tin (lặp tham số: fields[]=id&fields[]=message&fields[]=inserted_at). |
Phân trang
Lần 1 current_count = 0 → ≤ 25 tin; các lần sau current_count = tổng đã nhận → ≤ 30 tin cũ hơn; trả mảng rỗng là hết.
Ví dụ request
curl -s "https://partner.quantri360.com/v1/pancake_pos/shops/1234567/orders/9721/messages?current_count=0&fields[]=%5B%22id%22%2C%22type%22%2C%22message%22%2C%22from%22%2C%22inserted_at%22%5D" \ -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/orders/9721/messages",
params={
"current_count": 0,
"fields[]": [
"id",
"type",
"message",
"from",
"inserted_at"
]
},
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/orders/9721/messages');
for (const [k, v] of Object.entries({"current_count":0,"fields[]":["id","type","message","from","inserted_at"]})) 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/orders/9721/messages' . '?' . http_build_query(['current_count' => 0, 'fields[]' => '["id","type","message","from","inserted_at"]']); $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[] | Tin nhắn, mỗi lần sắp từ CŨ đến MỚI. | |
| id | string | m_AbCdEf… | Mã tin. |
| type | string | INBOX | `INBOX` (tin nhắn) · `COMMENT` (bình luận). |
| message / original_message | string | Dạ em gửi chị đơn ạ | Nội dung đã dựng / văn bản gốc. |
| from | object | Người gửi: id (trùng page_id → trang gửi), name, admin_name (nhân viên), uid. | |
| inserted_at | string | 2026-10-28T10:41:49.913092 | Thời điểm gửi — giờ UTC. |
| conversation_id / page_id | string | ||
| attachments | object[] | [] | Tệp đính kèm. |
| has_phone | bool | false | Tin có SĐT. |
| … | Còn: seen, is_hidden, is_removed, parent_id, phone_info, rich_message, message_tags… |
Mẫu phản hồi
{
"success": true,
"data": [
{
"id": "m_7VB4IZ…",
"type": "INBOX",
"message": "Mẫu này còn size M không shop",
"from": {
"id": "7712345678901234",
"name": "Khách hàng A"
},
"inserted_at": "2026-10-25T06:36:27.314000"
},
{
"id": "m_GhIjKl…",
"type": "INBOX",
"message": "Dạ em lên đơn cho chị rồi ạ",
"from": {
"id": "107896751234567",
"name": "Shop ABC",
"admin_name": "Nhân viên B"
},
"inserted_at": "2026-10-28T10:41:49.913092"
}
]
}
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Đơn hàng ở trang nền tảng
- Tạo API key (tick kênh Pancake POS)
- Gọi theo ví dụ ở trên