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

For CB orders that fulfilled by 3PF, support 3PF Warehouse Vendors to update the tpf_tracking_status when 3PF warehouse receive the order and complete the outbound of the package — API Shopee

v2.logistics.batch_update_tpf_warehouse_tracking_status · 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.

v2.logistics.batch_update_tpf_warehouse_tracking_status

POST/api/v2/logistics/batch_update_tpf_warehouse_tracking_statusGọi qua 360: POST https://partner.quantri360.com/v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status
Endpoint ghi — thay đổi dữ liệu trên Shopee. Key phải được tạo với tick "Cho phép gọi API ghi", nếu không sẽ nhận 403 write_not_allowed. Mỗi lần gọi được ghi nhật ký.
Mô tả API

CHỈ ĐƠN XUYÊN BIÊN GIỚI (kho 3PF): cập nhật theo lô trạng thái kho của kiện. Không áp dụng shop nội địa VN.

  • Gọi qua /v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status với Authorization: Bearer <key>; dùng platform_shop_id khi có nhiều shop. 360 tự gắn partner_id, shop_id, sign và access_token.
  • API GHI: thay đổi dữ liệu thật trên Shopee; cần key có quyền ghi (can_write) và gói mở module Đơn hàng. Đổi trạng thái kho 3PF của các kiện.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả. Kiểm từng phần tử trong fail_list / result_list / fail_error.
  • Thị trường áp dụng: đơn xuyên biên giới do kho 3PF xử lý. Không áp dụng shop nội địa VN. tpf_tracking_status: 3pf_warehouse_order_created · 3pf_warehouse_outbound_done.

Request

Địa chỉ

POST https://partner.quantri360.com/v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status

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_idquerystring100001Gian hàng (lấy ở GET /v1/platforms → shops[].platform_shop_id). BẮT BUỘC khi brand có > 1 gian hàng trên nền tảng; 360 bỏ tham số này trước khi chuyển tiếp.

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
tpf_namebodystringCóKho mẫuTên đơn vị kho 3PF, không chỉ dùng số hoặc viết tắt quá mức; ưu tiên tên tiếng Anh, phiên âm đầy đủ, tên tiếng Trung hoặc tên chính thức dễ nhận biết.
tpf_tracking_statusbodystringCó3pf_warehouse_order_created3pf_warehouse_order_created · 3pf_warehouse_outbound_done (chữ thường).
package_listbodyobject[]Có[{"order_sn": "2611040DEMO001", "package_number": "OFG000000000000001", "update_time": 1793779200}]Danh sách kiện.
package_list[].order_snbodystringCó2611040DEMO001Mã đơn hàng.
package_list[].package_numberbodystringKhôngOFG000000000000001Mã kiện; không có thì bỏ trường, không gửi chuỗi rỗng.
package_list[].update_timebodyint64Có1793779200Mốc thời gian trạng thái 3PF, từ lúc tạo đơn đến lúc đơn vị vận chuyển lấy hàng.

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"tpf_name":"Kho mẫu","tpf_tracking_status":"3pf_warehouse_order_created","package_list":[{"order_sn":"2611040DEMO001","package_number":"OFG000000000000001","update_time":1793779200}]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status",
    params={},
    json={
        "tpf_name": "Kho mẫu",
        "tpf_tracking_status": "3pf_warehouse_order_created",
        "package_list": [
            {
                "order_sn": "2611040DEMO001",
                "package_number": "OFG000000000000001",
                "update_time": 1793779200
            }
        ]
    },
    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/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status');
for (const [k, v] of Object.entries({})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
  method: 'POST',
  headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"tpf_name":"Kho mẫu","tpf_tracking_status":"3pf_warehouse_order_created","package_list":[{"order_sn":"2611040DEMO001","package_number":"OFG000000000000001","update_time":1793779200}]}),
});
console.log(r.status, await r.json());
PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/shopee/api/v2/logistics/batch_update_tpf_warehouse_tracking_status' . '?' . http_build_query([]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"tpf_name":"Kho mẫu","tpf_tracking_status":"3pf_warehouse_order_created","package_list":[{"order_sn":"2611040DEMO001","package_number":"OFG000000000000001","update_time":1793779200}]}');
$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 Shopee)

Kiểm error và lỗi từng phần tử trong success_list / fail_list. response có thể là object hoặc mảng; xử lý được cả hai dạng.

TênKiểuMẫuMô tả
request_idstringd52ca43b277a4f9292fb8be658bfd33dMã request của Shopee để tra lỗi.
errorstringMã lỗi Shopee; rỗng = thành công.
messagestringMô tả lỗi.
responseobjectThông tin kết quả.
success_listobject[]Danh sách cập nhật thành công.
order_snstring2611040DEMO001Mã đơn hàng.
package_numberstringOFG000000000000001Mã kiện; không có thì bỏ trường, không gửi chuỗi rỗng.
fail_listobject[]Danh sách thất bại; kiểm lỗi của từng phần tử.
order_snstring2611040DEMO001Mã đơn hàng.
package_numberstringOFG000000000000001Mã kiện; không có thì bỏ trường, không gửi chuỗi rỗng.
fail_errorstringMã lỗi riêng phần tử.
fail_messagestringChi tiết lỗi riêng phần tử.

Mẫu phản hồi

{
  "request_id": "demo-request",
  "error": "",
  "message": "",
  "response": [
    {
      "success_list": [
        {
          "order_sn": "2611040DEMO001",
          "package_number": "OFG000000000000001"
        }
      ],
      "fail_list": [
        {
          "order_sn": "2611040DEMO001",
          "package_number": "OFG000000000000001",
          "fail_error": "common.error_server",
          "fail_message": "Không xử lý được phần tử minh họa."
        }
      ]
    }
  ]
}

Mã lỗi của Shopee (10)

Bấm để xem
MãÝ nghĩa
logistics.invalid_address_versionĐịa chỉ theo địa giới cũ không còn được hỗ trợ — cập nhật địa chỉ gian hàng trên Kênh Người Bán.
error_dataDữ liệu không tồn tại hoặc không hợp lệ cho thao tác (vd mã không có, loại yêu cầu không cho phép).
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
error_serverLỗi hệ thống Shopee — thử lại sau ít phút.
error_shopGian hàng không hợp lệ — kiểm tra platform_shop_id.
error_authỦy quyền gian hàng cho 360 đã hết hạn hoặc bị thu hồi (360 đã tự làm mới token một lần) — chủ gian hàng kết nối lại Shopee trong Partner.
error_limitChạm hạn mức gọi Shopee trong ngày của kết nối — 360 trả kèm thời điểm thử lại; giảm tần suất gọi.
error_rate_limitGọi quá nhanh — chờ vài giây rồi gọi lại (360 cũng giới hạn theo key: 429 + Retry-After).
shop_bannedGian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa.
error_kyc_authGian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán.

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 Shopee)
  4. Gọi theo ví dụ ở trên