Chuẩn bị tạo sản phẩm
Trước khi tạo sản phẩm, bạn cần lấy thông tin về danh mục, thuộc tính, thương hiệu, số ngày giao hàng, liệu danh mục có hỗ trợ bảng size hay không và các thông tin khác qua API để chuẩn bị cho việc tạo sản phẩm.
1. Danh mục
Mỗi sản phẩm phải có một danh mục duy nhất. Vui lòng lấy dữ liệu danh mục Shopee qua API v2.product.get_category. Mỗi nút danh mục có một category_id duy nhất.
1.1 Dữ liệu danh mục toàn cầu
Dữ liệu cây danh mục của Shopee áp dụng cho tất cả các thị trường, nhưng theo chính sách địa phương của từng thị trường, một số danh mục được chúng tôi đặt là bị cấm trên thị trường đó. Nghĩa là, khi bạn gọi API v2.product.get_category với shop Malaysia, bạn có thể lấy danh mục A, nhưng qua shop Singapore, bạn không thể lấy được. Chính sách bán hàng xuyên biên giới và nội địa cũng khác nhau, do đó dữ liệu danh mục cũng sẽ khác nhau. Đối với các loại người bán khác nhau, dữ liệu danh mục được hỗ trợ cũng có một số khác biệt nhỏ.
Vì vậy, để lấy dữ liệu danh mục chính xác nhất, bạn nên lấy theo shop_id.
1.2 Cây danh mục
API v2.product.get_category trả về tất cả danh mục khả dụng cho shop.
parent_category_id=0 nghĩa là đây là danh mục cấp 1, ngược lại sẽ trả về parent category id của danh mục này.
has_children=false nghĩa là danh mục cấp cuối cùng, ngược lại nghĩa là danh mục này có danh mục con. Lưu ý rằng chỉ category_id có has_children=false mới có thể dùng để tạo hoặc cập nhật sản phẩm.
Ví dụ, nếu đường dẫn cây danh mục là Danh mục cấp 1 → Danh mục cấp 2 → Danh mục cấp 3, API sẽ trả về:
"category_list": [
\{
"display\_category\_name": "Level 1 category",
"has\_children":true,
"category\_id": 105899,
"original\_category\_name": "Level 1 category",
"parent\_category\_id": 0
\},
\{
"display\_category\_name": "Level 2 category",
"has\_children": true,
"category\_id":109889,
"original\_category\_name": "Level 2 category",
"parent\_category\_id":105899
\},
\{
"display\_category\_name": "Level 3 category",
"has\_children":false,
"category\_id":107839,
"original\_category\_name": "Level 3 category",
"parent\_category\_id":109889
\}
]
1.3 Danh mục đề xuất
Để giúp người bán nhanh chóng tìm danh mục phù hợp cho sản phẩm, bạn cũng có thể gọi API v2.product.category_recommend. API sẽ trả về danh sách các danh mục được đề xuất dựa trên tên sản phẩm và hình ảnh sản phẩm.
2. Thuộc tính
Mỗi danh mục sản phẩm có dữ liệu thuộc tính khác nhau. API "v2.product.get_attribute_tree" sẽ trả về dữ liệu thuộc tính cho "category_id" đã cho. Lưu ý rằng chỉ danh mục cấp cuối mới có thể lấy dữ liệu thuộc tính. Danh mục cấp cuối được định nghĩa là danh mục có giá trị trường "has_children" trong phần "category_list" trả về qua API "v2.product.get_category" là false.
2.1 Thuộc tính bắt buộc và tùy chọn
Khi tạo hoặc cập nhật sản phẩm, tất cả thuộc tính bắt buộc phải được tải lên, trong khi thuộc tính tùy chọn có thể tùy ý cung cấp. Trong kết quả trả về của API "v2.product.get_attribute_tree", "is_mandatory": true cho biết thuộc tính bắt buộc, "is_mandatory": false cho biết thuộc tính tùy chọn.
2.2 Loại thuộc tính
Chúng tôi phân loại loại thuộc tính dựa trên các yếu tố như thuộc tính có hỗ trợ chọn nhiều giá trị hay không, có cho phép nhập tùy chỉnh hay không, và giá trị thuộc tính được cung cấp hay không. Bạn có thể kiểm tra trường "input_type" trong kết quả trả về của API "v2.product.get_attribute_tree".
| input_type | Kiểu | Định nghĩa | Mô tả | Cho phép giá trị tùy chỉnh | Giá trị thuộc tính được cung cấp |
| 1 | int | SINGLE_DROP_DOWN | Dropdown chọn một; Người bán chỉ có thể chọn một tùy chọn từ danh sách giá trị thuộc tính ("attribute_value_list") mà API trả về để tải lên. | Không | Có |
| 2 | int | SINGLE_COMBO_BOX | Dropdown chọn một + trường nhập văn bản; Người bán có thể chọn một tùy chọn từ danh sách hoặc nhập giá trị tùy chỉnh. | Có | Có |
| 3 | int | FREE_TEXT_FILED | Trường nhập văn bản; Người bán có thể nhập giá trị tùy chỉnh. | Có | Không |
| 4 | int | MULTI_DROP_DOWN | Dropdown chọn nhiều; Người bán có thể chọn nhiều tùy chọn từ danh sách giá trị thuộc tính ("attribute_value_list") mà API trả về. | Không | Có |
| 5 | int | MULTI_COMBO_BOX | Dropdown chọn nhiều + trường nhập văn bản; Người bán có thể chọn nhiều tùy chọn hoặc nhập giá trị tùy chỉnh. | Có | Có |
*Hình dưới đây là ví dụ với "input_type": 2 (SINGLE_COMBO_BOX). Người bán có thể chọn giá trị từ danh sách thuộc tính (Elliptical Trainers) hoặc nhập giá trị tùy chỉnh bằng cách nhấp nút 'Add a new item'.


Lưu ý:
- Đối với thuộc tính sản phẩm hỗ trợ chọn nhiều giá trị, bạn có thể lấy số lượng giá trị thuộc tính tối đa có thể tải lên qua tham số "max_value_count".
- Bạn có thể lấy danh sách giá trị thuộc tính mà Shopee cung cấp để tải lên qua tham số "attribute_value_list".
2.3 Kiểu dữ liệu của giá trị thuộc tính
Giá trị thuộc tính có kiểu dữ liệu được định nghĩa sẵn và bạn cần tải lên giá trị thuộc tính theo đúng kiểu dữ liệu yêu cầu. Bạn có thể lấy kiểu dữ liệu của giá trị thuộc tính qua trường "input_validation_type" trong kết quả trả về của API "v2.product.get_attribute_tree".
| input_validation_type | Kiểu | Mô tả | Ghi chú |
| 0 | int | VALIDATOR_NO_VALIDATE_TYPE | |
| 1 | int | VALIDATOR_INT_TYPE | |
| 2 | int | VALIDATOR_STRING_TYPE | |
| 3 | int | VALIDATOR_FLOAT_TYPE | |
| 4 | int | VALIDATOR_DATE_TYPE, gồm hai định dạng: - DD/MM/YYYYY, ví dụ: 31/06/2021 - MM/YYYYY, ví dụ: 06/2021 | Khi thêm hoặc chỉnh sửa sản phẩm, với thuộc tính kiểu ngày, hãy nhập giá trị theo định dạng Unix timestamp. Tuy nhiên khi truy vấn giá trị thuộc tính sản phẩm, "original_value_name" sẽ trả về giá trị ở định dạng ngày dễ đọc. |
Lưu ý:
- Đối với thuộc tính kiểu ngày, có hai định dạng: THÁNG/NĂM (06/2021) và NGÀY/THÁNG/NĂM (31/06/2021). Bạn có thể kiểm tra trường "date_format_type" trong kết quả trả về của API "v2.product.get_attribute_tree".
- Khi tạo hoặc cập nhật sản phẩm, bạn cần tải lên giá trị thuộc tính dưới dạng Unix timestamp trong trường "original_value_name". Tuy nhiên khi truy vấn thông tin sản phẩm, trường "original_value_name" trong kết quả trả về của API "v2.product.get_item_base_info" sẽ trả về ngày ở định dạng như 06/2021 hoặc 31/06/2021.
2.4 Đơn vị giá trị thuộc tính
Ví dụ, đối với thuộc tính chiều dài, chúng tôi cung cấp cho người bán các tùy chọn đơn vị như "cm" và "m". Do đó, bạn cần biết thuộc tính nào yêu cầu đơn vị và các đơn vị nào khả dụng. Bạn có thể gọi API "v2.product.get_attribute_tree" để lấy thông tin này.
Khi tham số trả về "format_type": 2 (FORMAT_QUANTITATIVE_WITH_UNIT), nghĩa là giá trị thuộc tính yêu cầu đơn vị và tham số "attribute_unit_list" sẽ trả về các đơn vị khả dụng. Khi "format_type": 1 (FORMAT_NORMAL), nghĩa là giá trị thuộc tính không yêu cầu đơn vị.
*Trong danh sách giá trị thuộc tính do Shopee cung cấp, chúng tôi hiển thị giá trị và đơn vị riêng biệt. Cụ thể, trường "name" trong "attribute_value_list" trả về giá trị thuộc tính (ví dụ: 5kg), còn trường "value_unit" trả về đơn vị của giá trị thuộc tính (ví dụ: kg).
2.5 Thuộc tính cha và thương hiệu cha
Ví dụ, đối với thuộc tính "Weight Type", các giá trị khả dụng là "Body Weights" và "Barbells". Thuộc tính "Body Weights Type" được liên kết với giá trị "Body Weights". Do đó, khi người bán chọn "Body Weights" cho thuộc tính "Weight Type", thuộc tính "Body Weights Type" sẽ được hiển thị và chúng tôi khuyến nghị người bán điền giá trị tương ứng.
*Chọn giá trị "Barbells" sẽ không hiển thị thuộc tính Body Weights Type

*Chọn giá trị "Body Weights" sẽ hiển thị thuộc tính Body Weights Type

Phản hồi một phần của API "v2.product.get_attribute_tree"
Json
{
"attribute_id": 100643,
"mandatory": false,
"name": "Weight Type",
"attribute_value_list": [
{
"value_id": 3300,
"name": "Barbells",
"multi_lang": [
{
"language": "zh-Hant",
"value": "槓鈴"
}
]
},
{
"value_id": 3341,
"name": "Body Weights",
"child_attribute_list": [
{
"attribute_id": 100602,
"mandatory": false,
"name": "Body Weights Type",
"attribute_value_list": [
{
"value_id": 3164,
"name": "Ankle",
"multi_lang": [
{
"language": "zh-Hant",
"value": "腳踝"
}
]
}
],
"attribute_info": {
"input_type": 5,
"input_validation_type": 2,
"format_type": 1,
"max_value_count": 5,
"is_oem": false,
"support_search_value": false
},
"multi_lang": [
{
"language": "zh-Hant",
"value": "重訓輔助配件類型"
}
]
}
],
"multi_lang": [
{
"language": "zh-Hant",
"value": "穿戴負重器材"
}
]
}
],
"attribute_info": {
"input_type": 2,
"input_validation_type": 2,
"format_type": 1,
"is_oem": false,
"support_search_value": false
},
"multi_lang": [
{
"language": "zh-Hant",
"value": "重訓器材種類"
}
]
}
Trong ví dụ này, "Weight Type" là thuộc tính cha và "Body Weights Type" là thuộc tính con. Để tải lên thuộc tính con, bạn phải tải lên cả thuộc tính cha liên quan.
2.6 Thuộc tính đề xuất
Để giúp người bán nhanh chóng tìm các thuộc tính được đề xuất cho sản phẩm, bạn có thể gọi API v2.product.get_recommend_attribute. Người bán có thể tải lên tên sản phẩm và hình ảnh sản phẩm, API sẽ trả về danh sách các thuộc tính được đề xuất. Lưu ý rằng API này có thể không trả về các thuộc tính bắt buộc.
3. Thương hiệu
Bạn có thể tải lên thông tin thương hiệu cho sản phẩm, nhưng chúng tôi yêu cầu một số danh mục nhất định phải điền thông tin thương hiệu và mỗi danh mục hỗ trợ danh sách thương hiệu khác nhau. Vì vậy hãy gọi API v2.product.get_brand_list để lấy danh sách thương hiệu được hỗ trợ cho một danh mục (chỉ có thể yêu cầu với danh mục cấp cuối).
is_mandatory: true nghĩa là danh mục này bắt buộc phải điền thông tin thương hiệu.
* Nếu danh sách thương hiệu do Shopee cung cấp không có thương hiệu bạn cần, bạn có thể gửi đơn đăng ký thương hiệu lên Shopee. Vui lòng gọi API v2.product.register_brand và tham khảo FAQ về quy trình QC.
*Nếu sản phẩm của bạn không có thương hiệu đã đăng ký, Shopee cung cấp danh sách thương hiệu bao gồm tùy chọn No Brand (brand_id: 0), bạn có thể chọn tùy chọn này để tải lên.
status: 1 là danh sách thương hiệu do Shopee cung cấp; status: 2 là danh sách thương hiệu đang chờ duyệt sau khi bạn gửi đơn đăng ký.
4. Số ngày giao hàng
Chúng tôi có yêu cầu về số ngày giao hàng cho các danh mục và loại người bán khác nhau. Người bán cần hoàn thành đơn hàng trong số ngày giao hàng quy định. Đối với một số danh mục cụ thể, chúng tôi hỗ trợ bạn đặt hàng hóa là hàng đặt trước, thời gian giao hàng sẽ dài hơn. Bạn có thể lấy thông tin ngày giao hàng qua API v2.product.get_item_limit.
Nếu days_to_ship_limit min_limit và max_limit trả về giá trị -1, nghĩa là danh mục không hỗ trợ đặt trước. Khi giá trị trả về lớn hơn 0, danh mục này có thể điền số ngày đặt trước trong phạm vi đó. Nếu danh mục không hỗ trợ đặt trước, tham số non_pre_order_days_to_ship sẽ trả về số ngày giao hàng mà Shopee đặt cho danh mục này.
5. Bảng size
Đối với một số danh mục, chúng tôi hỗ trợ người bán tải lên một hình ảnh bảng size cho sản phẩm. Bạn có thể dùng API v2.product.support_size_chart để kiểm tra liệu danh mục (danh mục cấp cuối) có hỗ trợ bảng size hay không.
*Lưu ý rằng chúng tôi đang triển khai bảng size dạng bảng và hiện chỉ một số người bán trong danh sách whitelist có thể thêm qua Seller Center; Open API chưa hỗ trợ trả về các danh mục hỗ trợ bảng size dạng bảng và tải lên. Vì vậy người bán trong danh sách whitelist hãy bỏ qua kết quả từ API v2.product.support_size_chart.
6. Giới hạn sản phẩm
Chúng tôi có một số giới hạn nhất định đối với thông tin sản phẩm, chẳng hạn như độ dài ký tự cho phép trong tên sản phẩm, phạm vi giá sản phẩm, v.v. Chúng tôi có các giới hạn khác nhau cho các thị trường và loại người bán khác nhau. Bạn có thể lấy giới hạn chúng tôi đặt ra qua API v2.product.get_item_limit.
7. Logistics sản phẩm
Bạn có thể lấy logistics_channel_id qua API v2.logistics.get_channel_list. Bạn chỉ có thể chọn kênh có enabled=true và mask_channel_id=0 cho sản phẩm.