Fecify-商品-更新(全量更新)
接口信息
- 接口地址:
{your-site-url}/api/skill/product/update - 基础 URL:
{your-site-url}需替换为你自己的独立站 URL 地址,如https://your-domain.com/apimanager666 - 请求方式:
POST - Content-Type:
application/json - 说明: 全量更新商品信息。先通过 商品-详情 获取商品全部数据,修改后再提交。从详情获取到的数据都需要加入到更新请求中。
认证
请求头中需要携带 skill-access-token:
| Header | 值 |
|---|---|
skill-access-token |
{your-skill-access-token} (请替换为你自己的 token) |
请求参数
顶层字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
product |
Object | 是 | 产品主体数据 |
productattr_info |
Array | 否 | 商品附加属性信息。使用前需先判断插件是否存在,详见下文说明 |
images |
Array | 是 | 产品图片列表 |
videos |
Array | 否 | 产品视频列表 |
addition_group_id |
int | 否 | 商品自定义属性组 ID |
variantremark_id |
String | 否 | 变体备注 ID |
groupbuy_id |
String | 否 | 组合购买 ID |
collection_ids |
Array | 否 | 产品对应专辑 ID 数组(多对多) |
label_ids |
Array | 否 | 角标 ID 数组 |
options |
Array | 条件 | 产品规格定义。product.type=1(单规格)时选填,product.type=2(多规格)时必填 |
variants |
Array | 是 | 产品变体。单规格产品数组只有一个子项 |
glasses |
Object | 否 | 眼镜类商品属性 |
mergeimages |
Array | 否 | 合并图片列表 |
tags |
Array | 否 | 商品标签数组 |
payafteruse |
Number | 否 | 先用后付:1 先用后付商品,2 普通商品 |
groupbuy_id 字段说明
groupbuy_id是商品搭配组合购买的组合 ID,使用前需要:
- 商品搭配组合购买 ID,通过 商品组合购买-下拉条列表 进行获取
- 对于该值,需要先调用 商品组合购买-下拉条列表 接口,然后在该接口返回的参数
groups中,选择一个子项的id,作为groupbuy_id的值- 商品搭配组合购买是插件功能,使用前需要先判断插件是否存在:通过 获取店铺基本信息 返回的字段
addons,查看prodattr是否在addons数组中存在,如果存在则说明店铺存在插件:商品搭配组合购买
addition_group_id 字段说明
addition_group_id是自定义属性 ID,对应自定义属性插件。该字段是商品自定义属性 id 字段,需要先查看插件:商品自定义属性,店铺是否存在这个插件,并且,插件状态是否为开启。该字段赋值条件:
店铺存在插件:商品自定义属性
店铺是否存在插件:商品自定义属性,是插件功能,因此,使用前需要先判断商品自定义属性插件:additionattr,是否存在插件:additionattr,可以通过 api:获取店铺基本信息 返回的字段:addons,查看:additionattr 是否在 addons 数组中存在,如果存在则说明店铺存在插件:商品自定义属性
- 通过 api:商品自定义属性-下拉条列表,得到商品自定义属性下拉条列表,进行选择。因此,下拉条内容不为空,则可以选择商品自定义属性 id 的值,作为商品全量更新 api:
addition_group_id的值
collection_ids 字段说明
collection_ids是商品专辑 ID 数组,可通过 商品专辑-列表 获取商品专辑 ID。
google_product_category 字段说明
google_product_category是商品对应在 google category 的 ID,通过 商品-google categorys 获取数据。
product 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
Number | 是 | 商品 ID,从 商品-详情 获取 |
spu |
String | 否 | 产品 SPU |
title |
String | 是 | 产品标题 |
sub_title |
String | 否 | 产品副标题 |
body_html |
String | 是 | 产品描述(HTML) |
handle |
String | 否 | 商品 URL handle,不填写则用 title 自动生成 |
status |
Number | 否 | 产品状态:1 上架,2 下架,默认上架 |
type |
Number | 是 | 产品规格类型:1 单规格,2 多规格 |
vendor |
String | 否 | 产品厂家/品牌名称 |
virtual_sales_count |
Number | 否 | 产品虚拟销量 |
is_tax |
Number | 否 | 是否收税:1 收税,2 不收税 |
variant_need_image |
Number | 否 | 规格是否需要图片:1 需要,2 不需要,默认 1 |
variant_show_image |
Number | 否 | 前台规格显示方式:1 显示文字,2 显示图片,3 使用插件默认 |
variant_need_note |
Number | 否 | 变体是否需要备注:1 需要,2 不需要 |
inventory_police |
Number | 否 | 是否跟踪库存:1 跟踪,2 不跟踪,默认 1 |
inventory_police_type |
Number | 否 | 库存策略:1 库存为0允许购买,2 库存为0禁止购买,3 库存为0自动下架,默认 1 |
meta_is_edit |
Number | 否 | SEO 是否独立编辑:1 非独立,2 独立 |
meta_title |
String | 否 | SEO 标题(meta title) |
meta_keywords |
String | 否 | SEO 关键字(meta keywords) |
meta_description |
String | 否 | SEO 描述(meta description) |
feed_title |
String | 否 | Feed 自定义 title |
feed_description |
String / Null | 否 | Feed 自定义 description |
translate_type |
Number | 否 | 翻译类型:1 强制翻译,2 只翻译多语言为空部分,3 不翻译 |
source_type |
Number / String | 否 | 来源类型:1 代表 1688 |
template_type |
String | 否 | 模版装修的 template key |
google_product_category |
Number | 否 | Google 商品分类 ID |
google_product_type_id |
String | 否 | Google 产品类型 |
description_json |
Object | 否 | JSON 描述内容(模板装修数据) |
description_json_status |
Number | 否 | 是否使用 JSON 描述:1 开启,2 关闭 |
params_json |
Array | 否 | 参数 JSON 内容 |
params_json_status |
Number | 否 | 是否使用 JSON 参数:1 开启,2 关闭 |
short_description_json |
Array[Object] | 选填 | 商品列表描述,简短描述(JSON 格式数组,支持多语言)。每项含 text(默认文本)和 lang_params(多语言翻译对象) |
collection_ids |
Array | 否 | 产品对应专辑 ID 数组 |
label_ids |
Array | 否 | 角标 ID 数组 |
variant_show_image 说明
variant_show_image该字段对应的是插件:商品规格图片,本来该字段是通过:商品规格图片-保存配置 的字段:default_show进行,如果某个商品,不想通过统一配置,想要单独配置,那么就可以设置这个字段。|
variant_show_image| Number | 否 | 前台规格显示方式:1显示文字,2显示图片,3使用插件默认 |默认的值为:
3,一般都是使用 3,也就是,使用插件默认配置,该值代表的意思是,以 api:商品规格图片-保存配置 的字段:default_show,这个字段为准。对于值 1 和 2,代表自定义值,譬如某个商品的规格全部使用文字,那么就可以在这里自定义某个商品的规格的显示方式。
short_description_json 结构说明
每项格式:
{
"text": "默认文本",
"lang_params": {
"text": {
"cn": "中文翻译"
}
}
}
short_description_json 插件判断说明
short_description_json(商品列表描述)是插件:商品列表描述对应的字段。该字段进行编辑后,通过 api:商品列表描述-获取配置,来查看 status 是否开启,如果开启,则前台商城,商品详情页,将会显示商品的列表属性。商品列表属性,是为了将商品的简要描述,在商品详情页更好地展示。简单来说,商品列表属性就是在前台商城的商品详情页,展示的一列商品属性文字——一行一段文字,多行显示。
使用前需要同时满足以下 2 个条件:
- 店铺存在插件:商品列表描述。这是插件功能,使用前需要先判断商品列表描述插件:prodlistattr 是否存在。可以通过 api:获取店铺基本信息 返回的字段:addons,查看:prodlistattr 是否在 addons 数组中存在,如果存在则说明店铺存在插件:商品列表描述
- 插件状态开启。通过 api:商品列表描述-获取配置 获取状态值 status 为 1 开启,则代表插件状态开启
template_type 说明
template_type是模版装修的 template key。取值方式:
- 通过 得到模版layout布局列表,传递 get 参数
page_type=product,即可获得 Template Types 列表- 从返回数据中的
template_types中选择一个值,作为template_type的值- 一般来说,该值留空即可,除非用户进行指定
- 如果用户提交了值,那么该值必须在该 API 返回的数据
template_types中存在;如果不存在,则留空即可
productattr_info 字段详表
productattr_info是商品附加属性(插件prodattr)提供的数据。使用前需要:
- 通过 获取店铺基本信息 获取
addons字段,检查prodattr是否在addons数组中存在- 如果存在,则通过 商品附加属性-所有属性以及子项列表 获取所有属性及其子项
- 根据业务需要选择属性和子项,构建
productattr_info数组
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
attr_id |
Number | 是 | 属性 ID |
item_ids |
Array | 是 | 属性值 ID 数组 |
id |
String | 否 | 记录 ID,更新已有属性时传入,新增为空字符串 |
images 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
src |
String | 是 | 产品图片路径 |
alt |
String | 否 | 图片 alt 文本 |
position |
Number | 是 | 图片排序位置,从 1 开始依次递增。position=1 的将作为主图 |
id |
Number | 否 | 图片 ID,更新已有图片时传入,新增可不传 |
product_id |
Number | 否 | 产品 ID |
width |
Number | 否 | 图片宽度(像素) |
height |
Number | 否 | 图片高度(像素) |
ratio |
String | 否 | 宽高比 |
key |
Float | 否 | 前端唯一标识 key |
videos 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
src |
String | 是 | 视频 URL 路径 |
alt |
String | 否 | 视频 alt 文本 |
position |
Number | 是 | 视频排序位置 |
id |
Number | 否 | 视频 ID,更新已有视频时传入,新增可不传 |
product_id |
Number | 否 | 产品 ID |
videos 插件判断说明
videos是商品视频字段,需要先查看插件:商品视频,店铺是否存在这个插件,并且,插件状态是否为开启。该字段赋值条件:这 2 个条件必须同时成立
options 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
String | 是 | 规格名称,如 Color、Size |
position |
Number | 是 | 规格排序,只能用 1、2、3 中的一个,且每个 option 的 position 不可重复 |
items |
Array | 是 | 规格子项数组,如 ["White", "Black"] |
id |
Number | 否 | Option ID,更新已有规格时传入,新增可不传 |
product_id |
Number | 否 | 产品 ID |
shop_id |
Number | 否 | 店铺 ID |
variants 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
price |
Float | 是 | 售卖价格 |
qty |
Number | 是 | 变体库存,默认 0 |
weight |
String | 是 | 变体重量 |
weight_unit |
String | 是 | 重量单位:g(克)、kg(千克)、lb(磅)、oz(盎司) |
option1 |
String | 否 | 规格值 1,其值必须存在于 options 中 position=1 所在行的 items 数组中 |
option2 |
String | 否 | 规格值 2,其值必须存在于 options 中 position=2 所在行的 items 数组中 |
option3 |
String | 否 | 规格值 3,其值必须存在于 options 中 position=3 所在行的 items 数组中 |
cost_price |
Float | 否 | 成本价格 |
compare_at_price |
Float | 否 | 划线价格 |
wholesale_price |
Array | 否 | 批发价格。每项含 qty(批发个数)和 price(批发单价) |
sku |
String | 条件 | 产品 SKU,根据店铺配置决定必填唯一/选填唯一/选填非唯一 |
barcode |
String | 否 | 条形码 |
image |
String | 否 | 变体图片路径。此图片必须存在于 images 数组中,否则无法保存 |
gram |
Number | 否 | 重量(克) |
note |
String | 否 | 变体备注 |
buy_min_count |
Number | 否 | 最小起购数量。这是商品最低购买的个数,需要插件:cartlimit(商品加购限制)存在且状态开启才生效,详见下方「buy_min_count 插件判断说明」 |
customervip |
Array | 否 | VIP 会员价格。每项含 customervip_id(VIP等级ID)和 price(VIP价格) |
id |
Number | 否 | 变体 ID,更新已有变体时传入,新增可不传 |
product_id |
Number | 否 | 产品 ID |
shop_id |
Number | 否 | 店铺 ID |
image_id |
Number | 否 | 变体图片 ID,关联 images 表中的记录 |
images |
Array | 否 | 变体图片列表 |
variants 子项 image(变体图片)必填说明
variants子项的image字段(变体图片路径)是否必填,由product的variant_need_image字段决定:
- 当
product.variant_need_image值为1,则variants子项的字段:image(变体图片路径),必填,而且:注意:此图片必须存在于images数组中,否则无法保存- 当
product.variant_need_image值不为1,则variants子项的字段:image,不需要填写
variants 子项 images(商品规格多图)说明
商品规格多图,对应的是
variants的子项的images字段。variants字段是商品的规格字段,它的子项的images字段,保存的就是规格多图。这个字段是商品规格多图,需要先判断插件:商品规格多图,店铺是否存在这个插件,并且,插件状态是否为开启。
该字段赋值条件:这 2 个条件必须同时成立
- 店铺存在插件:商品规格多图
插件状态开启
店铺是否存在插件:商品规格多图,是插件功能,因此,使用前需要先判断商品规格多图插件:variantmutilimage,是否存在插件:variantmutilimage。可以通过 api:获取店铺基本信息 返回的字段:addons,查看:variantmutilimage 是否在 addons 数组中存在,如果存在则说明店铺存在插件:商品规格多图
- 通过 api:商品规格多图-获取配置,得到状态 status 为 1 开启,则代表插件状态开启
variants 子项 images 示例(即规格多图):
"images": [
{
"id": "",
"product_id": 7143,
"variant_id": 50400,
"position": 1,
"src": "https://sc04.alicdn.com/kf/Hd4e2987843a8423ebe6dfced71a6128df.jpg",
"width": "",
"height": "",
"ratio": "0.00"
},
{
"id": "",
"product_id": 7143,
"variant_id": 50400,
"position": 2,
"src": "https://sc04.alicdn.com/kf/H8e2257c0fcf34dec8240ba8e647e710bP.jpg",
"width": "",
"height": "",
"ratio": "0.00"
}
]
images 说明:
- images 的子项的 src 字段,是图片的路径,对于值,可以是 http 开头的完整 url,也可以是只有 path 的图片路径(通过图片基础 url 拼接得到完整图片 url)
- images 的子项的 src 字段,是图片的路径,必须在 post 的参数:images 中存在,
post 参数 images指的是最外层的商品所有图片的字段 images
images 子项说明:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
string | 子项 id |
product_id |
string/int | 商品 id |
variant_id |
string/int | 规格变体 id |
position |
int | 图片位置,用于前台商城,商品详情页,图片的排序 |
src |
string | 图片的路径,可以是 http 开头的完整 url,也可以是只有 path 的图片路径(通过图片基础 url 拼接得到完整图片 url),该子项必须在最外层的 post 参数 images 中存在 |
ratio |
string | 图片宽高比 |
wholesale_price 插件判断说明
wholesale_price(商品批发价格)是商品批发价格插件提供的数据。注意:商品设置了批发价格数据后,店铺必须存在插件:商品批发价格,并且插件状态已开启,前台商品详情页才会显示商品的批发价格,顾客购买多个才会享受批发价格。使用前需要同时满足以下 2 个条件:
- 店铺存在插件:商品批发价格。这是插件功能,使用前需要先判断商品批发价格插件:wholesale_price 是否存在。可以通过 api:获取店铺基本信息 返回的字段:addons,查看:wholesale_price 是否在 addons 数组中存在,如果存在则说明店铺存在插件:商品批发价格
- 插件状态开启。通过 api:商品批发价格-获取配置 获取状态值,判断插件是否开启
buy_min_count 插件判断说明
variants子项的buy_min_count(最小起购数量),是商品最低购买的个数。需要插件:cartlimit(商品加购限制)存在,并且插件状态为开启状态,前台商城,商品购买个数限制才会生效。使用前需要同时满足以下 2 个条件:
- 店铺存在插件:商品加购限制。这是插件功能,使用前需要先判断商品加购限制插件:cartlimit 是否存在。可以通过 api:获取店铺基本信息 返回的字段:addons,查看:cartlimit 是否在 addons 数组中存在,如果存在则说明店铺存在插件:商品加购限制
- 插件状态开启。通过 api:商品加购限制-获取配置 返回的 status,状态为开启状态,前台商城,商品购买个数限制才会生效
如果店铺不存在插件:cartlimit,或者状态不开启,则前台商城,商品购买个数限制不会生效。
tags 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
String | 否 | Tag ID(新增时传空字符串 "",已有 tag 传实际 ID) |
title |
String | 是 | Tag 标题 |
值格式为:
[
{
"title": "beginner",
"id": 199
},
{
"title": "baby closthes",
"id": 53
},
{
"title": "4343",
"id": ""
}
]
对于 tags 的值:
- 可以从 tag 列表中进行选择:商品Tag-列表,这种方式可以填写
id和title - 也可以直接填写 tags 的值,只填写
title,id为空。保存商品的时候,会通过 tag title 去查询 tag:如果找到则直接返回 tag id,找不到则会创建 tag,然后返回 tag id
glasses 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
button_type |
Number | 否 | 按钮类型 |
distance_min |
String | 否 | 最小距离 |
distance_max |
String | 否 | 最大距离 |
sex |
Object | 否 | 适用性别。含 value(默认值)和 language(多语言对象,如 {"cn":"性别"}) |
lens_type |
Object | 否 | 镜片类型。含 value(默认值)和 language(多语言对象,如 {"cn":"风格"}) |
material |
Object | 否 | 材质。含 value(默认值)和 language(多语言对象,如 {"cn":"材质"}) |
mergeimages 字段详表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
src |
String | 是 | 图片路径 |
position |
Number | 是 | 图片位置排序 |
alt |
String | 否 | 图片 alt 文字 |
id |
Number | 否 | 记录 ID,更新已有图片时传入,新增可不传 |
product_id |
Number | 否 | 产品 ID |
width |
Number | 否 | 图片宽度(像素) |
height |
Number | 否 | 图片高度(像素) |
ratio |
String | 否 | 宽高比 |
请求示例
cURL
curl --location --request POST '{your-site-url}/api/skill/product/update' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"product": {
"source_type": "",
"spu": "7218746753195",
"title": "先用后付,测试:Morden Lighting Nordic Fabric Shade Black White Floor Lamp",
"sub_title": "",
"body_html": "<!-- HTML 模板装修内容 -->",
"status": 1,
"is_tax": 1,
"virtual_sales_count": 54,
"type": 2,
"vendor": "Lighting Made",
"variant_need_note": "1",
"variant_need_image": 1,
"variant_show_image": 3,
"inventory_police": 1,
"inventory_police_type": 1,
"meta_is_edit": 2,
"meta_title": "Morden Lighting Nordic Fabric Shade Black White Floor Lamp",
"meta_keywords": "Morden Lighting Nordic",
"meta_description": "Introducing the Morden Lighting Nordic Fabric Shade Black White Floor Lamp! This sleek and stylish floor lamp is perfect for any modern home. The sleek black and white design is perfect for any room in your house, and the fabric shade provides a warm and inviting glow. The height of 160cm makes it perfect for any corner in your room, and the stand width of 30cm ensures that it will fit perfectly in any space.",
"feed_description": null,
"feed_title": "",
"handle": "morden-lighting-big-nordic-fabric-shade-black-or-white-floor-lamp-em7v0pso",
"translate_type": 3,
"google_product_category": 111,
"google_product_type_id": "light",
"description_json": {},
"description_json_status": 1,
"params_json": [],
"params_json_status": 2,
"short_description_json": [
{
"text": "Morden Lighting Nordic Fabric Shade Black White Floor Lamp",
"lang_params": {
"text": {
"cn": "摩登照明北欧布艺灯罩黑白落地灯"
}
}
},
{
"text": "Nordic Fabric Shade Black White Floor Lamp",
"lang_params": {
"text": {
"cn": "北欧风格黑白布艺灯罩落地灯"
}
}
},
{
"text": "This sleek and stylish floor lamp is perfect for any modern home",
"lang_params": {
"text": {
"cn": "这款时尚且造型优美的落地灯非常适合任何现代风格的家居"
}
}
}
],
"label_ids": [],
"collection_ids": [],
"template_type": "",
"id": 4646
},
"productattr_info": [
{"id": "", "attr_id": 31, "item_ids": [63, 56]},
{"id": "", "attr_id": 29, "item_ids": [52, 53]},
{"id": "", "attr_id": 35, "item_ids": [60]},
{"id": "", "attr_id": 33, "item_ids": [61]},
{"id": "", "attr_id": 32, "item_ids": [57]},
{"id": "", "attr_id": 28, "item_ids": [62]}
],
"images": [
{
"id": 30335,
"product_id": 4646,
"position": 1,
"src": "/product/15/image/2026/02/08/90526227fa14ac859b88ada1058092d8.jpg",
"alt": "",
"width": 800,
"height": 800,
"ratio": "1.00"
},
{
"id": 30336,
"product_id": 4646,
"position": 2,
"src": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"alt": "",
"width": 750,
"height": 845,
"ratio": "0.89"
},
{
"id": 30337,
"product_id": 4646,
"position": 3,
"src": "/product/15/image/2026/02/08/66a079e058435607e41c97ae7fd45c40.jpg",
"alt": "",
"width": 750,
"height": 453,
"ratio": "1.66"
},
{
"id": 30338,
"product_id": 4646,
"position": 4,
"src": "/product/15/image/2026/02/08/ca8fd9c91436c98254e8d2525fe01ba4.jpg",
"alt": "",
"width": 750,
"height": 564,
"ratio": "1.33"
}
],
"videos": [
{
"id": 868,
"product_id": 4646,
"position": 1,
"src": "https://cloud.video.taobao.com/play/u/2206786293671/p/1/e/6/t/1/453995116363.mp4",
"alt": ""
}
],
"addition_group_id": 73,
"variantremark_id": "",
"groupbuy_id": "",
"collection_ids": [349, 345],
"label_ids": [],
"options": [
{
"id": 5153,
"shop_id": 15,
"product_id": 4646,
"name": "Color",
"position": 1,
"items": ["White", "Black"]
},
{
"id": 5189,
"shop_id": 15,
"product_id": 4646,
"name": "Size",
"position": 2,
"items": ["L", "M"]
}
],
"variants": [
{
"id": 44774,
"shop_id": 15,
"product_id": 4646,
"title": "White / L",
"price": "68.99",
"compare_at_price": "89.99",
"cost_price": "38.99",
"wholesale_price": [
{"qty": 2, "price": "58.99"},
{"qty": 5, "price": "53.99"}
],
"sku": "7218746753195-White-L-1010799",
"gram": 0,
"barcode": "",
"image_id": 30335,
"qty": 999,
"option1": "White",
"option2": "L",
"option3": "",
"weight": "2",
"weight_unit": "kg",
"note": "",
"image": "/product/15/image/2026/02/08/90526227fa14ac859b88ada1058092d8.jpg",
"customervip": [
{"customervip_id": 11, "price": 54},
{"customervip_id": 10, "price": 55},
{"customervip_id": 8, "price": 56},
{"customervip_id": 7, "price": 57}
],
"images": [
{
"id": "",
"product_id": 4646,
"variant_id": 44774,
"position": 1,
"src": "/product/15/image/2026/02/08/90526227fa14ac859b88ada1058092d8.jpg",
"width": 800,
"height": 800,
"ratio": "1.00"
},
{
"id": "",
"product_id": 4646,
"variant_id": 44774,
"position": 2,
"src": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"width": 750,
"height": 845,
"ratio": "0.89"
}
]
"buy_min_count": 1
},
{
"id": 44775,
"shop_id": 15,
"product_id": 4646,
"title": "White / M",
"price": "68.99",
"compare_at_price": "89.99",
"cost_price": "38.99",
"wholesale_price": [
{"qty": 2, "price": "58.99"},
{"qty": 5, "price": "53.99"}
],
"sku": "7218746753195-White-M-1010800",
"gram": 0,
"barcode": "",
"image_id": 30335,
"qty": 999,
"option1": "White",
"option2": "M",
"option3": "",
"weight": "2",
"weight_unit": "kg",
"note": "",
"image": "/product/15/image/2026/02/08/90526227fa14ac859b88ada1058092d8.jpg",
"customervip": [
{"customervip_id": 11, "price": 54},
{"customervip_id": 10, "price": 55},
{"customervip_id": 8, "price": 56},
{"customervip_id": 7, "price": 57}
],
"images": [
{
"id": "",
"product_id": 4646,
"variant_id": 44775,
"position": 1,
"src": "/product/15/image/2026/02/08/90526227fa14ac859b88ada1058092d8.jpg",
"width": 800,
"height": 800,
"ratio": "1.00"
},
{
"id": "",
"product_id": 4646,
"variant_id": 44774,
"position": 2,
"src": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"width": 750,
"height": 845,
"ratio": "0.89"
}
]
"buy_min_count": 1
},
{
"id": 44776,
"shop_id": 15,
"product_id": 4646,
"title": "Black / L",
"price": "68.99",
"compare_at_price": "89.99",
"cost_price": "38.99",
"wholesale_price": [
{"qty": 2, "price": "58.99"},
{"qty": 5, "price": "53.99"}
],
"sku": "7218746753195-Black-L-1010801",
"gram": 0,
"barcode": "",
"image_id": 30336,
"qty": 999,
"option1": "Black",
"option2": "L",
"option3": "",
"weight": "2",
"weight_unit": "kg",
"note": "",
"image": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"customervip": [
{"customervip_id": 11, "price": 54},
{"customervip_id": 10, "price": 55},
{"customervip_id": 8, "price": 56},
{"customervip_id": 7, "price": 57}
],
"images": [
{
"id": "",
"product_id": 4646,
"variant_id": 44776,
"position": 1,
"src": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"width": 750,
"height": 845,
"ratio": "0.89"
},
{
"id": "",
"product_id": 4646,
"variant_id": 44776,
"position": 2,
"src": "/product/15/image/2026/02/08/66a079e058435607e41c97ae7fd45c40.jpg",
"width": 750,
"height": 453,
"ratio": "1.66"
}
]
"buy_min_count": 1
},
{
"id": 44777,
"shop_id": 15,
"product_id": 4646,
"title": "Black / M",
"price": "68.99",
"compare_at_price": "89.99",
"cost_price": "38.99",
"wholesale_price": [
{"qty": 2, "price": "58.99"},
{"qty": 5, "price": "53.99"}
],
"sku": "7218746753195-Black-M-1010802",
"gram": 0,
"barcode": "",
"image_id": 30336,
"qty": 999,
"option1": "Black",
"option2": "M",
"option3": "",
"weight": "2",
"weight_unit": "kg",
"note": "",
"image": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"customervip": [
{"customervip_id": 11, "price": 54},
{"customervip_id": 10, "price": 55},
{"customervip_id": 8, "price": 56},
{"customervip_id": 7, "price": 57}
],
"images": [
{
"id": "",
"product_id": 4646,
"variant_id": 44777,
"position": 1,
"src": "/product/15/image/2026/02/08/a8a35a02b70921ca44932dac0ba334aa.jpg",
"width": 750,
"height": 845,
"ratio": "0.89"
},
{
"id": "",
"product_id": 4646,
"variant_id": 44776,
"position": 2,
"src": "/product/15/image/2026/02/08/66a079e058435607e41c97ae7fd45c40.jpg",
"width": 750,
"height": 453,
"ratio": "1.66"
}
]
"buy_min_count": 1
}
],
"glasses": {
"button_type": 1,
"distance_min": "1.00",
"distance_max": "22.00",
"sex": {
"value": "sex",
"language": {"cn": "性别"}
},
"lens_type": {
"value": "style",
"language": {"cn": "风格"}
},
"material": {
"value": "type",
"language": {"cn": "材质"}
}
},
"mergeimages": [],
"tags": [
{"id": 25, "title": "white"},
{"id": 79, "title": "black"}
],
"payafteruse": 1
}'
返回结果
code 为 200 表示调用成功;code 不为 200 表示调用失败。
成功响应
{
"code": 200,
"data": {
"product_id": 4646
},
"message": "success"
}
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
code |
Number | 状态码,200 表示成功 |
message |
String | 执行结果的文字描述 |
data.product_id |
Number | 更新后的产品 ID |
错误响应
{
"code": 100701001,
"message": "error message"
}
错误码说明
| 错误码 | 说明 |
|---|---|
100701003 |
商品 ID 为空 |
100701001 |
商品保存报错 |
注意事项
- 全量更新:更新前必须先通过 商品-详情 获取商品全部数据,在此基础上修改后再提交。从详情获取到的数据都需要包含在更新请求中。
product.id必须传入,否则可能被当作新增处理。product.type=1(单规格)时options选填,product.type=2(多规格)时options必填。images[].position必须从1开始连续递增,position=1的图片为主图。options[].position只能为1、2、3,且每个 option 的 position 不可重复。variants中的option1/2/3值必须与对应 position 的options[].items中的值匹配。- 变体的
image字段所指向的图片必须已存在于images数组中,否则无法保存。 - 更新已有数据时传入
id(图片 ID、变体 ID、Option ID 等),新增数据时可不传或传空字符串。 weight_unit支持g(克)、kg(千克)、lb(磅)、oz(盎司)四种单位。wholesale_price为变体的批发价格数组,每个元素包含qty(起批数量)和price(批发单价)。description_json为模板装修数据(Object),description_json_status=1时才生效。short_description_json每项包含text(默认文本)和lang_params.text.{语言}(多语言翻译)。- videos 插件判断:
videos是商品视频字段,赋值条件:① 通过 获取店铺基本信息 检查addons中是否包含prodvideo(店铺存在插件:商品视频);② 通过 商品视频-获取配置 得到状态status为1开启(插件状态开启)。2 个条件必须同时成立。 - variants 子项 images 插件判断:
variants子项的images字段(商品规格多图),赋值条件:① 通过 获取店铺基本信息 检查addons中是否包含variantmutilimage(店铺存在插件:商品规格多图);② 通过 商品规格多图-获取配置 得到状态status为1开启(插件状态开启)。2 个条件必须同时成立。 variants子项images中的src必须是 http 开头的完整 url,或者只有 path 的图片路径(通过图片基础 url 拼接得到完整图片 url),且该src必须存在于最外层的post 参数 images中。- wholesale_price 插件判断:
wholesale_price(商品批发价格)是插件功能,赋值条件:① 通过 获取店铺基本信息 检查addons中是否包含wholesale_price(店铺存在插件:商品批发价格);② 通过 商品批发价格-获取配置 获取状态值(插件状态开启)。2 个条件必须同时成立,前台商品详情页才会显示批发价格,购买多个才会享受批发价格。 - short_description_json 插件判断:
short_description_json(商品列表描述)是插件功能,赋值条件:① 通过 获取店铺基本信息 检查addons中是否包含prodlistattr(店铺存在插件:商品列表描述);② 通过 商品列表描述-获取配置 得到状态status为1开启(插件状态开启)。2 个条件必须同时成立,前台商品详情页才会显示商品的列表属性。 - buy_min_count 插件判断:
variants子项的buy_min_count(最小起购数量)是商品最低购买的个数,赋值条件:① 通过 获取店铺基本信息 检查addons中是否包含cartlimit(店铺存在插件:商品加购限制);② 通过 商品加购限制-获取配置 返回的 status 为开启状态(插件状态开启)。2 个条件必须同时成立,前台商城商品购买个数限制才会生效;如果店铺不存在插件:cartlimit,或者状态不开启,则前台商城商品购买个数限制不会生效。