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

Use this API to upload shipping proof (Only for TW and BR returns with is_seller_arrange = true) — API Shopee

v2.returns.upload_shipping_proof · 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.returns.upload_shipping_proof

POST/api/v2/returns/upload_shipping_proofGọi qua 360: POST https://partner.quantri360.com/v1/shopee/api/v2/returns/upload_shipping_proof
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Ỉ ĐÀI LOAN VÀ BRAZIL: nộp bằng chứng gửi hàng do người bán tự sắp xếp. Không áp dụng shop VN.

  • Gọi qua /v1/shopee/api/v2/returns/upload_shipping_proof 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. Ghi nhận bằng chứng gửi hàng chiều hoàn.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả.
  • Thị trường áp dụng: Đài Loan và Brazil, yêu cầu có is_seller_arrange=true. Không áp dụng shop VN. Đây là bằng chứng gửi hàng, không phải bằng chứng khiếu nại.
  • Điều kiện tracking_number / image_id_list lấy từ get_shipping_carrier; tối đa 3 ảnh, tracking_number dài 5–30 ký tự không có ký tự đặc biệt.
  • image_id lấy từ media/upload_image với business=2 và scene=1.

Request

Địa chỉ

POST https://partner.quantri360.com/v1/shopee/api/v2/returns/upload_shipping_proof

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ả
return_snbodystringCó2611040DEMORT1Mã yêu cầu trả hàng / hoàn tiền.
reverse_logistics_carrier_idbodyint64Có123Mã đơn vị vận chuyển chiều hoàn không tích hợp do người bán dùng.
reverse_logistics_carrier_namebodystringKhôngTên đơn vị vận chuyển chiều hoàn không tích hợp.
tracking_numberbodystringKhôngDEMO123456Mã vận đơn, bắt buộc khi get_shipping_carrier trả is_tracking_number_required=true; 5–30 ký tự, không có ký tự đặc biệt.
image_id_listbodyobject[]KhôngDanh sách tối đa 3 ảnh; bắt buộc khi get_shipping_carrier trả is_shipping_image_file_mandatory=true.
image_id_list[].image_idbodystringKhôngdemo-imageMã ảnh bằng chứng gửi hàng.
remarksbodystringKhôngGhi chú tùy chọn.

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/returns/upload_shipping_proof" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"return_sn":"2611040DEMORT1","reverse_logistics_carrier_id":123,"tracking_number":"DEMO123456","image_id_list":[{"image_id":"demo-image"}]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/returns/upload_shipping_proof",
    params={},
    json={
        "return_sn": "2611040DEMORT1",
        "reverse_logistics_carrier_id": 123,
        "tracking_number": "DEMO123456",
        "image_id_list": [
            {
                "image_id": "demo-image"
            }
        ]
    },
    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/returns/upload_shipping_proof');
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({"return_sn":"2611040DEMORT1","reverse_logistics_carrier_id":123,"tracking_number":"DEMO123456","image_id_list":[{"image_id":"demo-image"}]}),
});
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/returns/upload_shipping_proof' . '?' . 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, '{"return_sn":"2611040DEMORT1","reverse_logistics_carrier_id":123,"tracking_number":"DEMO123456","image_id_list":[{"image_id":"demo-image"}]}');
$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)

Phản hồi minh họa thành công; kiểm error trước khi dùng kết quả. response là null.

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.
responseobjectKết quả xử lý; null khi thành công.

Mẫu phản hồi

{
  "request_id": "demo-request",
  "error": "",
  "message": "",
  "response": null
}

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

Bấm để xem
MãÝ nghĩa
returns.error_blank_tracking_noMã vận đơn không được để trống.
returns.exceed_shipping_proofBằng chứng gửi hàng đã được nộp.
returns.error_filenumberChỉ được gửi tối đa 3 ảnh.
returns.error_tracking_no_lengthMã vận đơn phải dài 5–30 ký tự.
returns.invalid_carrier_idMã đơn vị vận chuyển chiều hoàn không hợp lệ.
returns.invalid_image_idMã ảnh không hợp lệ.
returns.invalid_tracking_noMã vận đơn không hợp lệ.
returns.missing_carrier_nameThiếu tên đơn vị vận chuyển chiều hoàn.
returns.missing_imageThiếu ảnh bằng chứng gửi hàng.
returns.new_seller_arrange_flow_disabledLuồng người bán tự sắp xếp vận chuyển mới chưa được bật.
returns.error_tracking_no_alphanumericMã vận đơn không được chứa ký tự đặc biệt.
returns.return_not_foundKhông tìm thấy yêu cầu trả.
returns.missing_return_snThiếu return_sn.
returns.missing_carrier_idThiếu mã đơn vị vận chuyển chiều hoàn.
returns.missing_tracking_noThiếu mã vận đơn.
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_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
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