VI | EN
Nhắn Messenger
Dành cho developer

Get order conversation messages — API Pancake POS

get /shops/{SHOP_ID}/orders/{ORDER_ID}/messages · gọi qua Quantri360 bằng một API key cho chính tài khoản / tài sản bạn đã kết nối và ủy quyền — 360 lo việc ký request và làm mới phiên đăng nhập bạn đã cấp.

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=25 trả 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ênVị tríKiểuMẫuMô tả
AuthorizationheaderheaderBearer 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_idquerystring1234567SHOP_ID đã nối — có thể bỏ khi đường dẫn có /shops/{SHOP_ID}.

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
SHOP_IDpathintCó1234567Mã cửa hàng đã nối với 360.
ORDER_IDpathstringCó9721Mã đơn.
current_countqueryintKhông25Số 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[]querystring[]KhôngidChỉ 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ênKiểuMẫuMô tả
successbooltrue
dataobject[]Tin nhắn, mỗi lần sắp từ CŨ đến MỚI.
idstringm_AbCdEf…Mã tin.
typestringINBOX`INBOX` (tin nhắn) · `COMMENT` (bình luận).
message / original_messagestringDạ em gửi chị đơn ạNội dung đã dựng / văn bản gốc.
fromobjectNgười gửi: id (trùng page_id → trang gửi), name, admin_name (nhân viên), uid.
inserted_atstring2026-10-28T10:41:49.913092Thời điểm gửi — giờ UTC.
conversation_id / page_idstring
attachmentsobject[][]Tệp đính kèm.
has_phoneboolfalseTin 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

  1. Đăng ký tài khoản Partner
  2. Mở loại dữ liệu thuộc nhóm Đơn hàng ở trang nền tảng
  3. Tạo API key (tick kênh Pancake POS)
  4. Gọi theo ví dụ ở trên