来自 Shopee 官方资料快照 ·
- 当前资料结构化阅读页
- 固定快照已留存,可追溯
- 官方原文可核对
资料正文
§1 创建商品
当您获取到商品基础数据后,就可以开始创建商品。
§2 1. 上传媒体文件
商品的图片和视频,都需要预先存储在Shopee的媒体资料库中。所以您需要先调用mediaspace相关的接口上传。
§3 1.1 上传图片
1.1 上传图片
接口:v2.media_space.upload_image
每个商品都必须有商品图片,另外我们也支持商品描述中添加图片。其中商品图片文件需满足下列要求:
- 图片大小:最大2MB。
- 图片格式:JPG, JPEG, PNG。
请注意
- v2.media_space.upload_image接口我们只支持图片文件流上传,不支持url的方式上传图片。当图片上传成功后,您将会获得各个地区可访问的Shopee图片url和一个唯一的image_id,我们建议您访问所在地区的Shopee图片url。创建商品和更新商品的图片信息都需要使用image_id。
- 如果您上传是商品图片,请求参数scene应为normal;如果您上传的是商品描述图片,请求参数scene应为desc,因为商品图片我们会处理成正方形图片,描述图片我们将不会处理。
§4 1.2 上传视频
1.2 上传视频
商品视频是可选的,我们支持下列要求的视频文件:
- 视频大小:最大30MB
- 视频时长:10s~60s
- 视频格式:mp4
- 视频像素要求:像素宽高不超过1280px * 1280px
如果您的视频文件超过4M,您需要将视频文件进行分片,例如一个10MB的视频,您需要分成4M,4M,2M一共三个分片,因为每个分片不能大于4M。
上传商品视频一共分为四个步骤
-
第一步:调用v2.media_space.init_video_upload接口。创建视频上传任务,获取上传凭证video_upload_id。请注意,不管您的视频是否有分片,file_md5需要上传的是完整视频文件的md5值,file_size需要上传的是完整视频文件的视频大小。
-
第二步:调用v2.media_space.upload_video_part接口。上传视频分片,part_seq参数表示分片序列号,第一个分片part_seq=0,第二个分片part_seq=1,以此类推。part_content参数表示分片文件。请将所有的分片都上传完成。
-
第三步:调用v2.media_space.complete_video_upload接口。视频转码,当您调用这个接口时,Shopee将会对您上传的所有视频分片文件进行转码。part_seq_list参数需要您上传所有分片的序列号,例如您上传了2个分片,则part_seq_list为[0,1]。upload_cost将上传您通过 upload_video_part api 上传视频文件所用的时间,以毫秒为单位, 用于视频上传性能跟踪目的。
-
第四步:调用v2.media_space.get_video_upload_result接口。获取视频转码结果。因为视频转码需要一定的时间,您可以通过轮询v2.media_space.get_video_upload_result接口或者订阅Video upload push获取结果。只有当返回的status为SUCCEEDED时,您才能获取到各个市场可访问的Shopee视频url和视频封面图url,且此时的video_upload_id才可以用作创建或者更新商品提交的视频信息。
上传图片和视频后,您就可以调用v2.product.add_item接口创建商品,下面我们将讲解调用v2.product.add_item接口中需要注意的参数字段。
§5 2. 上传类目和类目属性
#§6 2.1 上传类目
2.1 上传类目
商品必须上传类目(category_id)。您只能选择类目树中最后一级的类目ID进行上传商品,否则接口将会返回Invaild category id的报错。
§7 2.2 上传属性
2.2 上传属性
商品必须上传必填的属性(attribute)。您可以通过文章《商品创建准备》了解到各种属性类型。下面我们将讲解各种属性类型在v2.product.add_item接口中如何上传。
上传“input_type”: 1 (SINGLE_DROP_DOWN)的属性,您只能上传一个“value_id”,且此“value_id” 只能是该属性在“v2.product.get_attribute_tree” API 所返回的属性清单中的值。
范例1
"attribute_list": [
{
"attribute_id": 100036,
"attribute_value_list": [
{
"value_id": 678
}
]
}
]
上传“input_type”: 4 (MULTI_DROP_DOWN)的属性,您可以上传多个“value_id”,且这些“value_id” 只能是该属性在“v2.product.get_attribute_tree” API 所返回的属性清单中的值。
范例2
"attribute_list": [
{
"attribute_id": 100036,
"attribute_value_list": [
{
"value_id": 678
},
{
"value_id": 679
}
]
}
]
上传“input_type”: 3 (FREE_TEXT_FILED)的属性,您只能上传一个“value_id”,且您可以自行填写属性值,因此您需上传“value_id”: 0及“original_value_name” 是您自定义的值。
范例3
"attribute_list": [
{
"attribute_id": 100061,
"attribute_value_list": [
{
"value_id": 0,
"original_value_name": "customized name"
}
]
}
]
i) 如果是“input_type”: 3 (FREE_TEXT_FILED)的属性,且需要填写单位,您则需要上传“value_unit”。
(即为"input_type": 3 & "format_type": 2 (FORMAT_QUANTITATIVE_WITH_UNIT) )
范例4
"attribute_list": [
{
"attribute_id": 100061,
"attribute_value_list": [
{
"value_id": 0,
"original_value_name": "12",
"value_unit": "g"
}
]
}
]
ii) 如果是“input_type”: 3 (FREE_TEXT_FILED)的属性,且需要填写日期类型,您则需要在"original_value_name" 参数上传时间戳。 (即为"input_type": 3 & "input_validation_type": 4 )
范例5
"attribute_list": [
{
"attribute_id": 100061,
"attribute_value_list": [
{
"value_id": 0,
"original_value_name": "1634526913"
}
]
}
]
]
针对“input_type”: 2 (SINGLE_COMBO_BOX)的属性,您只能上传一个“value_id”,此“value_id” 只能是该属性在“v2.product.get_attribute_tree” API 所返回的属性清单中的值(请参考范例1)或自定义数值(请参考范例3)。如果您还需填写单位,请参考范例4。如果需要填写日期类型,请参考范例5。
针对“input_type”: 5 (MULTI_COMBO_BOX)类型的属性,您可上传多个“value_id”,您可选择该属性在“v2.product.get_attribute_tree” API 所返回的属性清单中的值,或是您自行定义的值。
范例6
"attribute_list": [
{
"attribute_id": 100061,
"attribute_value_list": [
{
"value_id": 0,
"original_value_name": "customized name"
},
{
"value_id": 678
}
]
}
]
如果您还需要填写单位,请参考范例4。如您需要填写日期类型,请参考范例5。
总结:
-
任何类型的属性皆需要上传“value_id”。当上传自定义的值时,”value_id”: 0 且“original_value_name” 则为必填项目。
-
不论value 的资料型态为何,”original_value_name” 字段必须以字串型态上传。
-
当"format_type": 2且上传自定义数值时,您也必须上传"value_unit" 字段,而该单位需从“v2.product.get_attribute_tree” API 中的"attribute_unit_list"中选取
§8 3. 上传商品描述
*请注意,目前我们支持白名单卖家可以使用带图文的商品描述(extended_description),如何使用详细参考FAQ。
§9 4. 上传商品价格
除了SG/MY/BR/MX/PL/AR的市场,我们支持卖家上传两位小数的价格(original_price),其他市场,只支持整数,如果卖家填写了小数,我们将会做四舍五入的处理。
§10 5. 上传商品库存
如果卖家没有库存仓库(目前只有白名单用户使用)则无需上传location_id字段。
§11 6. 上传商品发货渠道和运费
根据渠道如何计算运费,我们将渠道分为几种类型,您可以通过v2.logistics.get_channel_list接口获取fee_type,类型包括
- SIZE_SELECTION:运费根据尺寸ID计算。
- SIZE_INPUT:运费根据商品具体的商品尺寸计算,选择该类型渠道,商品需要上传长宽高的尺寸信息。
- FIXED_DEFAULT_PRICE:固定运费。
- CUSTOM_PRICE:运费可由卖家自定义。
卖家可以为商品选择多个渠道,其中
i) enabled=true 表示该商品打开此渠道,买家可选择。
ii) is_free=true 表示卖家承担运费,即产品包邮,买家无需承担运费,所有的渠道类型都支持设置包邮。
1)如果卖家选用了SIZE_SELECTION的渠道,调用v2.product.add_item接口必须上传size_id字段。size_id请通过v2.logistics.get_channel_list获取。
样例1:
"logistic_info":[
{
"sizeid":1,
"enabled":true,
"is_free":false,
"logistic_id":80101
}]
2)如果卖家选用了SIZE_INPUT的渠道,必须上传产品的重量和尺寸字段。
样例2:
"weight": 1,
"dimension":{
"package_height":11,
"package_length":11,
"package_width":11
},
"logistic_info":[
{
"enabled":true,
"is_free":false,
"logistic_id":80101
}]
3)如果卖家选用了CUSTOM_PRICE的渠道,必须上传运费字段。
样例3:
"logistic_info":[
{
"shipping_fee":23.12,
"enabled":true,
"is_free":false,
"logistic_id":80103
}]
"logistic_info":[
{
"enabled":true,
"logistic_id":80103
}]
§12 7. 创建变体
当您创建商品成功之后,v2.product.add_item 将会返回item_id,这是商品的唯一标识。如果您还需要定义规格,创建多个选项变体,例如商品的颜色尺寸,可以调用v2.product.init_tier_variation接口,调用成功后,我们会为每个变体创建一个model_id,作为变体的唯一标识。
场景一:商品有尺寸的规格,尺寸包含XS、S和M。我们称这种商品是1-tier variation。
您可以通过tier_index和每个option的位置做匹配,例子中,tier_index 和变体的对应关系是
| tier_index | size | price | stock | sku |
| tier_index[0] | XS | 100 | 10 | sku1 |
| tier_index[1] | S | 200 | 20 | sku2 |
| tier_index[2] | M | 300 | 30 | sku3 |
v2.product.init_tier_variation请求参数如下:
{
"item_id": 800188562,
"tier_variation": [
{
"name": "size",
"option_list": [
{
"option": "XS",
"image": {"image_id":"82becb4830bd2ee90ad6acf8a9dc26d7"}
},
{
"option": "S",
"image": {"image_id":"72becb4830bd2ee90ad6acf879dc26d7"}
},
{
"option": "M",
"image": {"image_id":"92becb4830bd2ee90ad6acf8a9dc26d7"}
}
]
}
],
"model": [
{
"tier_index": [0],
"original_price": 100,
"model_sku": "sku1",
"normal_stock": 10
},
{
"tier_index": [1],
"original_price": 200,
"model_sku": "sku1",
"normal_stock": 20
},
{
"tier_index": [2],
"original_price": 300,
"model_sku": "sku3",
"normal_stock": 30
}
]
}
场景二:商品有颜色和尺寸的规格,颜色包括红色和蓝色,尺寸包含XL和L。我们称这种商品是2-tier variation。
| tier_index | color | size | price | stock | sku |
| tier_index[0,0] | Red | XL | 100 | 10 | sku1 |
| tier_index[0,1] | Red | L | 200 | 20 | sku2 |
| tier_index[1,0] | Blue | XL | 300 | 30 | sku3 |
| tier_index[1,1] | Blue | L | 400 | 40 | sku4 |
v2.product.init_tier_variation请求参数如下:
{
"item_id": 100917481,
"tier_variation": [
{
"name": "color",
"option_list": [
{
"image": {"image_id": "82becb4830bd2ee90ad6acf8a9dc26d7"},
"option": "Red"
},
{
"image": {"image_id": "72becb4830bd2ee90ad6acf879dc26d7"},
"option": "Blue"
}
]
},
{
"name": "size",
"option_list": [
{
"option": "XL"
},
{
"option": "L"
}
]
}
],
"model": [
{
"tier_index": [0,0],
"original_price": 100,
"normal_stock": 10,
"global_model_sku": "sku1"
},
{
"tier_index": [0,1],
"original_price": 200,
"normal_stock": 20,
"global_model_sku": "sku2"
},
{
"tier_index": [1,0],
"original_price": 300,
"normal_stock": 30,
"global_model_sku": "sku3"
},
{
"tier_index": [1,1],
"original_price": 400,
"normal_stock": 40,
"global_model_sku": "sku4"
}
]
}
请注意:
1.您定义的option,我们会按顺序显示Shopee商城端,Shopee目前只支持最多两层规格。
2.您可以为每个变体定义一张图片,但是对于两层规格的商品,您只能定义第一层option,也就是例子中的尺寸定义图片,无法为第二层颜色定义图片。如果您一旦决定要定义,则所有的option都需要定义图片。图片必须通过v2.media_space.upload_image API先上传获取到image id。
3.请注意您定义的tier_index必须从0开始定义且不能溢出,否则会报错。
*4.建议您创建商品后间隔5秒后创建变体,因为我们底层创建商品数据可能存在延迟。
5.创建成功后您可以调用v2.product.get_model_list接口获取到每个tier_index对应的model id。
