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

Use this API to update the address of a shop. — API Shopee

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

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

Cập nhật thông tin địa chỉ gian hàng theo address_id; không đổi được region, có thể giữ hoặc xóa thông tin vị trí.

  • Gọi qua /v1/shopee/api/v2/logistics/update_address 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. Thay đổi thông tin địa chỉ gian hàng.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả.
  • address_id lấy từ get_address_list; region không đổi được. geo_info là CHUỖI JSON: bỏ trường để giữ, gửi "" hoặc {} để xóa.

Request

Địa chỉ

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

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ả
address_idbodyint64Có100001Mã địa chỉ lấy từ get_address_list.
regionbodystringKhôngVNKhu vực của địa chỉ; không cho phép đổi region.
statebodystringKhôngTỉnh mẫuTỉnh / bang.
citybodystringKhôngThành phố mẫuThành phố.
districtbodystringKhôngQuận mẫuQuận / huyện.
townbodystringKhôngPhường mẫuPhường / xã.
addressbodystringKhôngĐịa chỉ minh họaĐịa chỉ chi tiết.
zipcodebodystringKhông100000Mã bưu chính.
namebodystringKhôngNgười nhận mẫuTên người nhận tại địa chỉ.
phonebodystringKhông0900000000Số điện thoại liên hệ người nhận.
geo_infobodystringKhông{"formattedAddress":"Địa chỉ minh họa","region":{"latitude":21.0,"longitude":105.0}}CHUỖI JSON chứa thông tin vị trí: formattedAddress (string), region (object gồm latitude, longitude dạng float), user_verified và user_adjusted (boolean), đều tùy chọn. Muốn giữ thì bỏ trường; gửi "" hoặc {} là xóa.

Ví dụ request

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/logistics/update_address" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":100001,"name":"Người nhận mẫu","address":"Địa chỉ minh họa"}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/logistics/update_address",
    params={},
    json={
        "address_id": 100001,
        "name": "Người nhận mẫu",
        "address": "Địa chỉ minh họa"
    },
    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/update_address');
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({"address_id":100001,"name":"Người nhận mẫu","address":"Địa chỉ minh họa"}),
});
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/update_address' . '?' . 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, '{"address_id":100001,"name":"Người nhận mẫu","address":"Địa chỉ minh họa"}');
$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 / message trước khi dùng kết quả; kiểm lỗi riêng từng phần tử nếu phản hồi có danh sách.

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.

Mẫu phản hồi

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

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

Bấm để xem
MãÝ nghĩa
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
NOT_ALLOW_TO_EDIT_ADDRESS_REGIONKhông được đổi region của địa chỉ.
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