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

Tạo phiếu gửi hàng — API Shopee

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

POST/api/v2/logistics/create_shipping_documentGọi qua 360: POST https://partner.quantri360.com/v1/shopee/api/v2/logistics/create_shipping_document
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

Bước tạo PHIẾU GỬI HÀNG (vận đơn in) cho tối đa 50 đơn đã xác nhận gửi — Shopee dựng file ở nền; hỏi trạng thái bằng get_shipping_document_result rồi tải bằng download_shipping_document.

  • Là API GHI — thay đổi dữ liệu thật trên Shopee; key cần quyền ghi. Gọi bằng POST, body JSON.
  • Đơn phải đã xác nhận gửi (PROCESSED) và có mã vận đơn. Luồng in phiếu: get_shipping_document_parameter → create_shipping_document → get_shipping_document_result tới READY → download_shipping_document (FILE PDF).
  • Kết quả theo từng đơn: kiểm fail_error của từng phần tử dù error rỗng.
  • 360 đã chạy thật luồng này trên gian hàng thử (một đơn, phiếu NORMAL_AIR_WAYBILL, tải được PDF).

Request

Địa chỉ

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

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ả
order_listbodyobject[]Có[{"order_sn":"261029ABCDE0W4","tracking_number":"SPXVN060000000005"}]1–50 đơn.
order_list[].order_snbodystringCó261029ABCDE0W4Mã đơn.
order_list[].package_numberbodystringKhôngMã gói khi đơn tách nhiều gói; không có thì bỏ trường, không gửi chuỗi rỗng.
order_list[].tracking_numberbodystringKhôngSPXVN060000000005Mã vận đơn (get_tracking_number) — cần trừ kênh cho in trước khi sắp xếp giao.
order_list[].shipping_document_typebodystringKhôngNORMAL_AIR_WAYBILLNORMAL_AIR_WAYBILL (A5/A6 thường) · THERMAL_AIR_WAYBILL (giấy nhiệt) · NORMAL_JOB_AIR_WAYBILL · THERMAL_JOB_AIR_WAYBILL · THERMAL_UNPACKAGED_LABEL. Chọn theo get_shipping_document_parameter.

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/logistics/create_shipping_document" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"order_list":[{"order_sn":"261029ABCDE0W4","tracking_number":"SPXVN060000000005","shipping_document_type":"NORMAL_AIR_WAYBILL"}]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/logistics/create_shipping_document",
    params={},
    json={
        "order_list": [
            {
                "order_sn": "261029ABCDE0W4",
                "tracking_number": "SPXVN060000000005",
                "shipping_document_type": "NORMAL_AIR_WAYBILL"
            }
        ]
    },
    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/create_shipping_document');
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({"order_list":[{"order_sn":"261029ABCDE0W4","tracking_number":"SPXVN060000000005","shipping_document_type":"NORMAL_AIR_WAYBILL"}]}),
});
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/create_shipping_document' . '?' . 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, '{"order_list":[{"order_sn":"261029ABCDE0W4","tracking_number":"SPXVN060000000005","shipping_document_type":"NORMAL_AIR_WAYBILL"}]}');
$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)

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.
warningobject[]nullĐơn / gói cần lưu ý (order_sn, package_number); null = không có.
responseobject
result_listobject[]Kết quả từng đơn.
order_snstring261029ABCDE0W4
package_numberstring
fail_errorstringLỗi riêng đơn (vd `logistics.order_not_exist`).
fail_messagestring

Mẫu phản hồi

{
  "error": "",
  "message": "",
  "response": {
    "result_list": [
      {
        "order_sn": "261029ABCDE0W4"
      }
    ]
  },
  "warning": null,
  "request_id": "80e9644be9c077be…"
}

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

Bấm để xem
MãÝ nghĩa
logistics.error_paramTham số vận chuyển không hợp lệ (vd đơn đang được phân bổ ĐVVC, mã gói trùng) — xem `message`.
logistics.order_status_errorTrạng thái đơn chưa cho in phiếu.
common.batch_api_all_failedMọi phần tử trong lô đều lỗi — xem result_list / fail_list.
error_not_foundKhông tìm thấy đơn / gói / yêu cầu theo mã đã gửi.
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
error_permissionGian hàng không có quyền xem dữ liệu này (vd yêu cầu trả / đơn không thuộc gian hàng).
error_serverLỗi hệ thống Shopee — thử lại sau ít phút.
logistics.shipping_document_type_invalidLoại phiếu không hợp lệ — kiểm tra shipping_document_type.
logistics.error_booking_orderĐơn đã ghép với đặt chỗ — không cần xác nhận gửi từ phía người bán.
logistics.package_can_not_printKiện chưa in được lúc này.
logistics.package_number_not_foundKhông tìm thấy package_number.
logistics.package_number_not_existĐơn đã tách nhiều gói — phải gửi kèm package_number.
logistics.tracking_number_invalidMã vận đơn không hợp lệ.
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.
logistics.can_not_print_combine_orderĐơn thuộc kiện gộp — in phiếu trên Kênh Người Bán.
logistics.can_not_print_jit_orderKênh vận chuyển này chỉ in phiếu 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_configLỗi cấu hình phía Shopee — thử lại sau.
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