v2.add_on_deal.update_add_on_deal
POST/api/v2/add_on_deal/update_add_on_dealVia 360: POST https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal
Write endpoint — changes data on Shopee. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description
Sửa thời gian, tên và điều kiện mua của chương trình mua kèm hiện có.
- Gọi qua /v1/shopee/api/v2/add_on_deal/update_add_on_deal 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 Khuyến mãi. Thay đổi cấu hình ưu đãi hoặc giá khuyến mãi người mua thấy.
- HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả.
- Đọc trạng thái hiện tại bằng get_add_on_deal trước khi gọi.
- Tối đa 1000 chương trình; thời gian không quá 6 tháng, bắt đầu sau hiện tại ít nhất 1 giờ, kết thúc sau bắt đầu ít nhất 1 giờ. Giảm giá mua kèm không gửi purchase_min_spend/per_gift_num; quà tặng theo chi tiêu không gửi promotion_purchase_limit.
- Không sửa chương trình hết hạn hoặc chương trình do quản trị tạo; chương trình đang diễn ra có trường bị khóa, kiểm message. Chỉ lùi thời điểm bắt đầu chương trình sắp diễn ra và rút ngắn kết thúc.
Request
Endpoint
POST https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal
Authentication & shop
| Name | In | Type | Sample | Description |
|---|---|---|---|---|
| Authorization | header | header | Bearer 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_id | query | string | 100001 | Gian 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. |
Request parameters
| Name | In | Type | Required | Sample | Description |
|---|---|---|---|---|---|
| add_on_deal_id | body | int64 | Yes | 100003 | Mã chương trình mua kèm. Giá trị >=1. |
| start_time | body | int | No | 1794009600 | Thời điểm bắt đầu, Unix giây; sau thời điểm hiện tại ít nhất 1 giờ. |
| end_time | body | int | No | 1794182400 | Thời điểm kết thúc, Unix giây; phải sau thời điểm bắt đầu. |
| purchase_min_spend | body | float | No | 100000 | Chi tiêu tối thiểu để nhận quà; chỉ dùng cho quà tặng theo mức chi tiêu. |
| per_gift_num | body | int | No | 1 | Số quà người mua có thể nhận. |
| promotion_purchase_limit | body | int | No | 2 | Số sản phẩm mua kèm tối đa một khách được mua trong mỗi đơn. |
| sub_item_priority | body | int64[] | No | [100011] | Thứ tự ưu tiên sản phẩm mua kèm. |
| add_on_deal_name | body | string | No | Ưu đãi minh họa | Tên chương trình mua kèm. |
Request examples
curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"add_on_deal_id":100003,"add_on_deal_name":"Mua kèm 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/add_on_deal/update_add_on_deal",
params={},
json={
"add_on_deal_id": 100003,
"add_on_deal_name": "Mua kèm 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/add_on_deal/update_add_on_deal');
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({"add_on_deal_id":100003,"add_on_deal_name":"Mua kèm 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/add_on_deal/update_add_on_deal' . '?' . 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, '{"add_on_deal_id":100003,"add_on_deal_name":"Mua kèm minh họa"}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;Response
Response fields (as returned by Shopee)
Phản hồi minh họa thành công; đọc error/message trước khi dùng kết quả. response có thể kèm source và sub_item_priority; đọc các trường này khi có.
| Name | Type | Sample | Description |
|---|---|---|---|
| request_id | string | d52ca43b277a4f9292fb8be658bfd33d | Mã request của Shopee để tra lỗi. |
| error | string | Mã lỗi Shopee; rỗng = thành công. | |
| message | string | Mô tả lỗi. | |
| response | object | Kết quả xử lý. | |
| start_time | int | 1794009600 | Thời điểm bắt đầu, Unix giây; sau thời điểm hiện tại ít nhất 1 giờ. |
| end_time | int | 1794182400 | Thời điểm kết thúc, Unix giây; phải sau thời điểm bắt đầu. |
| promotion_type | int | 0 | Loại mua kèm: 0 = giảm giá mua kèm, 1 = quà tặng khi đạt chi tiêu tối thiểu. |
| purchase_min_spend | float | 100000 | Chi tiêu tối thiểu để nhận quà; chỉ dùng cho quà tặng theo mức chi tiêu. |
| add_on_deal_id | int64 | 100003 | Mã chương trình mua kèm. |
| per_gift_num | int | 1 | Số quà người mua có thể nhận. |
| promotion_purchase_limit | int | 2 | Số sản phẩm mua kèm tối đa một khách được mua trong mỗi đơn. |
| add_on_deal_name | string | Ưu đãi minh họa | Tên chương trình mua kèm. |
Response sample
{
"request_id": "demo-request",
"error": "",
"message": "",
"response": {
"start_time": 1794009600,
"end_time": 1794182400,
"promotion_type": 0,
"purchase_min_spend": 100000,
"add_on_deal_id": 100003,
"per_gift_num": 1,
"promotion_purchase_limit": 2,
"add_on_deal_name": "Ưu đãi minh họa"
}
}
Shopee error codes (30)
Show
| Code | Meaning |
|---|---|
| add_on.add_on_deal_error_unknown | Không sửa chương trình mua kèm do quản trị tạo. |
| add_on.add_on_item_delete_error | Chương trình phải có ít nhất một sản phẩm mua kèm. |
| add_on.add_on_edit_error | Tham số, giá hoặc thời điểm chỉnh sửa mua kèm không hợp lệ; xem `message`. |
| add_on.add_on_deal_time_error | Thời gian chương trình không quá 6 tháng. |
| add_on.add_on_deal_end_time_error | Kết thúc phải sau bắt đầu ít nhất 1 giờ. |
| add_on.add_on_deal_expired | Không sửa chương trình mua kèm đã hết hạn. |
| add_on.add_on_delete_error | Chỉ xóa chương trình mua kèm sắp diễn ra. |
| add_on.add_on_deal_name_invalid | Tên chương trình mua kèm không quá 25 ký tự. |
| add_on.add_on_deal_not_exists | Chương trình mua kèm không tồn tại. |
| add_on.add_on_update_error | Không được sửa trường được nêu trong message khi chương trình đang diễn ra. |
| add_on.add_on_page_no_error | page_no phải từ 1 đến 1000. |
| add_on.add_on_page_size_error | Kích thước trang phải từ 1 đến 100. |
| add_on.add_on_deal_set_error | Số quà hoặc giới hạn mua ngoài khoảng cho phép; xem `message`. |
| add_on.add_on_status_error | Trạng thái: 0 = tất cả, 1 = đang diễn ra, 2 = sắp diễn ra, 3 = hết hạn. |
| add_on.add_on_set_error | Thiếu purchase_min_spend. |
| bundle.bundle_deal_item_under_block_categories | Ngành hàng bị cấm khuyến mãi theo quy định thị trường. |
| bundle.bundle_deal_multi_tier_invalid_discount_value_per_item | Mức cao hơn phải có số tiền giảm mỗi sản phẩm lớn hơn (discount_value/min_amount). |
| bundle.bundle_deal_rule_type_value_error | Giá trị quy tắc không hợp lệ. |
| bundle.bundle_deal_max_span_beyond | Thời gian chương trình không quá 6 tháng. |
| follow_prize.end_time_max_limit | Kết thúc không được quá 6 tháng sau bắt đầu. |
| error_data | Dữ 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_param | Tham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào. |
| error_server | Lỗi hệ thống Shopee — thử lại sau ít phút. |
| error_shop | Gian hàng không hợp lệ — kiểm tra platform_shop_id. |
| voucher_oversize_list | Chỉ thêm tối đa 1000 sản phẩm. |
| 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_limit | Chạ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_limit | Gọ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_banned | Gian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa. |
| error_kyc_auth | Gian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán. |
Get started
- Sign up for Partner
- Enable a data type of the Khuyến mãi (Marketing) group on the platform page
- Create an API key (tick the Shopee channel)
- Call it as in the examples above