1. 商品模块API
API URL
post {HTTP(S)地址}/api/{version}/sku
商品分类主数据(树查询/创建/更新/删除)见下文 商品分类,请求 URL 为 /api/{version}/sku_category。商品新增/编辑仍用 categoryName1 / categoryName2 / categoryName3 按名称挂分类。普通属性、SPU 属性见下文 普通属性、SPU属性。
1.1. 商品列表查询接口
1.1.1. SERVICE_TYPE
QUERY_SIMPLE_LIST_SKU
1.1.2. 请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| page | Y | Number | 1 | 页码,默认1 |
| pageSize | Y | Number | 50 | 每页条数.不超过200条; 默认100 |
| categoryName1 | N | String | 一级商品分类 | |
| categoryName2 | N | String | 二级商品分类 | |
| categoryName3 | N | String | 三级商品分类 | |
| updateTimeFrom | N | String | 2022-09-26 | 更新开始时间 |
| updateTimeTo | N | String | 2022-09-26 | 更新结束时间 |
| skus | N | List <String> |
["123","456"] | 商品编码 |
| titles | N | List <String> |
["商品名称"] | 商品名称 |
| skuCustomFieldValueSOList | N | List<SkuCustomFieldValueSO> | 自定义栏位搜索条件 | |
| developerUserNameList | N | List<String> |
["username"] | 开发员用户名 |
SkuCustomFieldValueSO(自定义栏位搜索)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| customFieldId | Y | Long | 3 | SERVICE_TYPE中的CUSTOMER_FIELD_QUERY接口返回的id |
| value | N | String | “张三” | 自定义栏位对应的值 STRING:字符串; SELECT:下拉框格式支持。 |
| from | N | String | "1970/01/01" | 范围查询左区间 NUMBER:数字; DATE:日期格式支持。 |
| to | N | String | "1971/01/01" | 范围查询右区间 NUMBER:数字; DATE:日期格式支持。 |
1.1.3. 返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | “DATA_INPUT_ERROR” | 错误码 |
| errorMsg | Y | String | “输入参数不对” | 业务错误信息 |
| state | Y | String | success | 请求结果 |
| total | Y | Number | 100 | 总条数 |
| result | Y | List<Sku> | 商品列表信息,详情查看下表 |
Sku(商品)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 商品SKU,最大255字符 |
| title | Y | String | “abc” | 商品名称,最大255字符 |
| barcode | N | String | 商品条码,最大255字符 | |
| type | Y | String | “SINGLE” | 商品类型 |
| isAssembly | N | Int | 0或者1 | 是否组装品 1:是 0:否 |
| picUrl | N | String | 图片地址,最大255字符 | |
| saleStatus | N | String | 销售状态,最大50字符 | |
| weight | Y | Decimal | 毛重 | |
| netWeight | Y | Decimal | 净重 | |
| weightUnit | Y | String | 重量单位 | |
| abbrTitle | N | String | 简称,最大255字符 | |
| brand | N | String | 商品品牌,最大50字符 | |
| unit | N | String | 商品单位,最大128字符 | |
| color | N | String | 颜色,最大255字符 | |
| size | N | String | 尺码,最大255字符 | |
| length | Y | Decimal | 长 | |
| width | Y | Decimal | 宽 | |
| height | Y | Decimal | 高 | |
| dimensionUnit | Y | String | 长度单位 | |
| itemPackage | N | Number | 包装数量 | |
| description | N | String | 商品描述,最大2048字符 | |
| descriptionEn | N | String | 商品描述英文,最大2048字符 | |
| functionDescription | N | String | 性能描述,最大2048字符 | |
| enable | Y | Number | 商品状态(0:禁用;1:有效) | |
| shelfLife | Y | Number | 90 | 保质期(默认单位天) |
| categoryName1 | N | String | 一级商品分类 | |
| categoryName2 | N | String | 二级商品分类 | |
| categoryName3 | N | String | 三级商品分类 | |
| singleBoxCode | N | String | 单箱条码 | |
| singleItemVolume | N | Decimal | 单品体积 | |
| cartonVolumeUnit | N | String | 体积单位 | |
| customProp1 | N | String | 自定义字段1 | |
| customProp2 | N | String | 自定义字段2 | |
| customProp3 | N | String | 自定义字段3 | |
| price | N | Decimal | 默认售价 | |
| remarkName | N | String | 备注名 | |
| singleSkuList | N | List <SubSkuDTO> |
如果是组合品,返回子品信息 | |
| parts | N | List <SubSkuDTO> |
组装品子品信息 1. sku:子品编码 2. quantity:子品数量 |
|
| skuCustomFieldValueVOList | N | SkuCustomFieldValueVO | 自定义栏位信息 | |
| packingRate | N | Number | 单箱数量 | |
| purchaseCost | N | Decimal | 采购成本 | |
| purchaseCostUnit | N | String | 采购成本币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| skuSupplierList | N | List <SkuSupplierDTO> |
供应商信息 | |
| isRelatedSingleCost | N | Boolean | 是否关联单品成本 | |
| developerUserNameList | N | List <String> |
开发员姓名 | |
| isIssueInvoice | N | Int | 是否开票 1: 是 2:否 |
|
| ncm | N | String | NCM | |
| taxGoodsName | N | String | 商品税务名称 | |
| cest | N | String | CEST | |
| placeOrigin | N | String | 原产地 |
SubSkuDTO(子品信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 商品SKU,最大255字符 |
| quantity | Y | Integer | 1 | 数量 |
SkuCustomFieldValueVO(自定义栏位信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| tableName | Y | String | SYS_ITEM | SYS_ITEM:系统商品自定义栏位; SYS_ORDER:订单自定义栏位; SYS_ODO:出库单自定义栏位; SYS_ASN:入库单自定义栏位。 |
| columType | Y | String | NUMBER | 筛选不同填入类型的自定义栏位 NUMBER:数字; DATE:日期; STRING:字符串; SELECT:下拉框。 |
| columName | Y | String | 生产日期 | 用户自己定义的栏位名称 |
| defaultValue | N | String | "1970/01/01"(无双引号) | 自定义栏位默认值 |
| candidateValue | N | String | ["1970/01/01","1970/01/02"] | 下拉框的候选值 |
| remark | N | String | 上架日期区分于出厂日期 | 备注 |
| required | N | Integer | 1 | 是否只查询必填栏位 1:true;0:false |
| isQuery | N | Integer | 1 | 是否只查询支持查询的栏位 1:true;0:false |
| isShow | N | Integer | 1 | 是否只查询支持列配置的栏位 1:true;0:false |
SkuSupplierDTO(供应商信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 供应商名称 | |
| isDefault | Y | Boolean | 是否默认供应商 | |
| purchaserList | Y | List <String> |
采购员,用户名非姓名 | |
| deliveryCycle | Y | Number | 预计交期(天) | |
| purchasePrice | N | Decimal | 采购单价,小数点后2位有效,多余部分四舍五入 | |
| purchasePriceUnit | N | String | 采购单价币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| minimumPurchaseQuantity | N | Number | 最小采购量,正整数 | |
| purchaseTaxRate | N | Decimal | 采购税率,单位:% | |
| drawbackRate | N | Decimal | 退税税率,单位:% | |
| purchaseUrl | N | String | 采购链接 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/sku' \
--form 'appId="TEST"' \
--form 'serviceType="QUERY_SIMPLE_LIST_SKU"' \
--form 'bizParam="{
\"page\":1,
\"pageSize\":1
}"' \
--form 'timestamp="1731742317"' \
--form 'sign="a9837b4485a8e427f584933267dc4ea4"'
返回示例:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"result\":[{\"cartonVolumeUnit\":\"cm3\",\"ccPriceUnit\":\"USD\",\"customsDeclarationPriceUnit\":\"USD\",\"dangerousTransportGoodsType\":\"NONE\",\"dimensionUnit\":\"cm\",\"enable\":1,\"exportTax\":0.0,\"height\":33.3,\"isDeleted\":0,\"length\":33.3,\"needQualityInspection\":false,\"netWeight\":33.0,\"picUrl\":\"https://test-logo.pomogo.co/STORE/1902244893482377216/default/ced190dda0e74aa0ba25879dffb8b9bc.png\",\"price\":0.0000,\"priceUnit\":\"USD\",\"sku\":\"3WkC2QzAnXPTsGO4vCNUgm\",\"skuCustomFieldValueVOList\":[{\"candidateValue\":[],\"columCode\":1,\"columName\":\"商品有效期\",\"columType\":\"DATE\",\"customFieldId\":17,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":17,\"isQuery\":0,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":2,\"columName\":\"商品产地\",\"columType\":\"STRING\",\"customFieldId\":16,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":16,\"isQuery\":1,\"isShow\":1,\"required\":0},{\"candidateValue\":[\"1\",\"2\",\"3\",\"123\"],\"columCode\":3,\"columName\":\"测试单选栏位\",\"columType\":\"SELECT\",\"customFieldId\":47,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":47,\"isQuery\":0,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":5,\"columName\":\"货值\",\"columType\":\"DATE\",\"customFieldId\":26,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"id\":26,\"isQuery\":0,\"isShow\":1,\"required\":0},{\"candidateValue\":[],\"columCode\":6,\"columName\":\"产品编码\",\"columType\":\"STRING\",\"customFieldId\":33,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":33,\"isQuery\":1,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":7,\"columName\":\"123\",\"columType\":\"STRING\",\"customFieldId\":40,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":40,\"isQuery\":1,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":10,\"columName\":\"地区账套\",\"columType\":\"STRING\",\"customFieldId\":27,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":27,\"isQuery\":0,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":11,\"columName\":\"单箱条码\",\"columType\":\"STRING\",\"customFieldId\":28,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":28,\"isQuery\":0,\"isShow\":0,\"required\":0},{\"candidateValue\":[],\"columCode\":12,\"columName\":\"规格型号\",\"columType\":\"STRING\",\"customFieldId\":29,\"customFieldValueVOList\":[],\"customerId\":3,\"customerIdForUser\":3,\"defaultValue\":\"\",\"id\":29,\"isQuery\":0,\"isShow\":0,\"required\":0}],\"title\":\"yhx母婴商品测试001自营 33\",\"type\":\"SINGLE\",\"weight\":33.0,\"weightUnit\":\"KG\",\"width\":33.3}],\"state\":\"success\",\"total\":3960}",
"requestId": "afac1414-8397-4657-bd57-ed2c90bdc9b7"
}
1.2. 商品新增接口
1.2.1. SERVICE_TYPE
INSERT_SKU_INFO
1.2.2. 请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 商品SKU,最大255字符 |
| title | Y | String | “abc” | 商品名称,最大255字符 |
| barcode | N | String | 商品条码,最大255字符 | |
| type | Y | String | “SINGLE” | 商品类型 |
| isAssembly | N | Int | 0或者1 | 是否组装品 1:是,需填写parts字段 0:否 |
| picUrl | N | String | 图片地址,最大255字符,建议使用picUrlList | |
| picUrlList | N | List<String> |
多张图片地址 | |
| saleStatus | N | String | 销售状态,最大50字符 | |
| weight | Y | Decimal | 毛重 | |
| netWeight | Y | Decimal | 净重 | |
| weightUnit | Y | String | 重量单位 | |
| abbrTitle | N | String | 简称,最大255字符 | |
| brand | N | String | 商品品牌,最大50字符 | |
| unit | N | String | 商品单位,最大128字符 | |
| color | N | String | 颜色,最大255字符 | |
| size | N | String | 尺码,最大255字符 | |
| length | Y | Decimal | 长 | |
| width | Y | Decimal | 宽 | |
| height | Y | Decimal | 高 | |
| dimensionUnit | Y | String | 长度单位 | |
| itemPackage | N | Number | 包装数量 | |
| description | N | String | 商品描述,最大2048字符 | |
| descriptionEn | N | String | 商品描述英文,最大2048字符 | |
| functionDescription | N | String | 性能描述,最大2048字符 | |
| enable | Y | Number | 商品状态(0:禁用;1:有效) | |
| serialEnable | N | Number | 0 | 是否启用序列号管理(0:否;1:是) |
| shelfLife | Y | Number | 90 | 保质期(默认单位天) |
| packingRate | N | Number | 装箱率,若未填写则不保存外箱尺寸、外箱毛重、外箱净重等值 | |
| cartonLength | N | Decimal | 外箱长度,装箱率填写时此字段必填 | |
| cartonWidth | N | Decimal | 外箱宽度,装箱率填写时此字段必填 | |
| cartonHeight | N | Decimal | 外箱高度,装箱率填写时此字段必填 | |
| cartonWeight | N | Decimal | 外箱毛重,装箱率填写时此字段必填 | |
| cartonNetWeight | N | Decimal | 外箱净重,装箱率填写时此字段必填 | |
| cartonDimensionUnit | N | String | 外箱尺寸单位(cm; m),装箱率填写时此字段必填 | |
| cartonWeightUnit | N | String | 外箱重量单位(KG; G),装箱率填写时此字段必填 | |
| chineseCustomsDeclarationName | N | String | 中文报关品名 | |
| englishCustomsDeclarationName | N | String | 英文报关品名 | |
| cdPriceMethod | N | String | 报关价格计算方式(RATE:按比例; CONSTANT:按固定值) | |
| cdPriceRate | N | Decimal | 报关价格比例 | |
| cdPriceMaximum | N | Decimal | 报关价格最大值 | |
| customsDeclarationPrice | N | Decimal | 报关价格 | |
| customsDeclarationPriceUnit | N | String | 报关价格单位(CNY; USD; CAD; GBP; EUR; JRY) | |
| customsCode | N | String | 海关编码 | |
| exportTax | N | Decimal | 出口税率 | |
| declaration | N | String | 申报说明 | |
| dangerousTransportGoodsType | N | String | 危险品类型(NONE, LIQUID, POWDER, CONTAIN_ELECTRIC, ELECTRIC) | |
| batteryType | N | Integer | 电池类型(0:不带电; 1:配套锂离子电池; 2:内置锂离子电池; 3:配套锂金属电池; 4:内置锂金属电池; 5:配套干电池) | |
| ccPriceMethod | N | String | 清关价格计算方式(RATE:按比例; CONSTANT:按固定值) | |
| ccPriceRate | N | Decimal | 清关价格比例 | |
| ccPriceMaximum | N | Decimal | 清关价格最大值 | |
| ccPrice | N | Decimal | 清关价格 | |
| ccPriceUnit | N | String | 清关价格币种(CNY; USD; CAD; GBP; EUR; JRY) | |
| needQualityInspection | N | Boolean | 是否需要质检 | |
| price | N | Decimal | 默认售价 | |
| priceUnit | N | String | 默认售价单位(大写三位币种代码) | |
| asin | N | String | ASIN | |
| customProp1 | N | String | 自定义属性1 | |
| customProp2 | N | String | 自定义属性2 | |
| customProp3 | N | String | 自定义属性3 | |
| categoryName1 | N | String | 一级商品分类 | |
| categoryName2 | N | String | 二级商品分类 | |
| categoryName3 | N | String | 三级商品分类 | |
| remarkName | N | String | 备注名 | |
| singleSkuList | N | List <SubSkuDTO> |
子品信息 | |
| parts | N | List <SubSkuDTO> |
组装品子品信息,需填写信息 1. sku:子品编码 2. quantity:子品数量 |
|
| singleBoxCode | N | String | 单箱条码 | |
| singleItemVolume | N | Decimal | 单品体积 | |
| skuCustomFieldValueVOList | N | List <SkuCustomFieldValueVO> |
自定义栏位信息 | |
| purchaseCost | N | Decimal | 采购成本 | |
| purchaseCostUnit | N | String | 采购成本币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| skuSupplierList | N | List <SkuSupplierDTO> |
供应商信息 | |
| isRelatedSingleCost | N | Boolean | 是否关联单品成本,仅组合品生效 | |
| warehouseNameList | N | List |
["warehouseName1"] | type=SINGLE时,可填该字段,自动创建仓库商品并异步下发仓库 |
| createAllWarehouseItems | N | Boolean | false | 默认false,type=SINGLE时,自动创建全部三方仓库商品并异步下发仓库;与warehouseNameList二选一 |
| developerUserNameList | N | List |
开发员账号 | |
| isIssueInvoice | N | Int | 是否开票 1: 是 2:否 |
|
| ncm | N | String | NCM,isIssueInvoice=1时必填 | |
| taxGoodsName | N | String | 商品税务名称:isIssueInvoice=1时必填 | |
| cest | N | String | CEST,非必填,isIssueInvoice=1时填写 | |
| placeOrigin | N | String | 原产地,非必填,isIssueInvoice=1时填写 |
SubSkuDTO(组合品子品信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 子品SKU |
| quantity | Y | Number | 3 | 组合品中该子品数量 |
SkuCustomFieldValueVO(自定义栏位)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| customFieldId | Y | Long | 3 | SERVICE_TYPE中的CUSTOMER_FIELD_QUERY接口返回的id |
| value | Y | String | “张三” | 自定义栏位对应的值 |
SkuSupplierDTO(供应商信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 供应商名称 | |
| isDefault | Y | Boolean | 是否默认供应商 | |
| purchaserList | Y | List <String> |
采购员,用户名非姓名 | |
| deliveryCycle | Y | Number | 预计交期(天) | |
| purchasePrice | N | Decimal | 采购单价,小数点后2位有效,多余部分四舍五入 | |
| purchasePriceUnit | N | String | 采购单价币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| minimumPurchaseQuantity | N | Number | 最小采购量,正整数 | |
| purchaseTaxRate | N | Decimal | 采购税率,单位:% | |
| drawbackRate | N | Decimal | 退税税率,单位:% | |
| purchaseUrl | N | String | 采购链接 |
1.2.3. 返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | “DATA_INPUT_ERROR” | 错误码 |
| errorMsg | Y | String | “输入参数不对” | 业务错误信息 |
| state | Y | String | success | 请求结果 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/sku' \
--form 'appId="TEST"' \
--form 'serviceType="INSERT_SKU_INFO"' \
--form 'bizParam="{
\"sku\":\"ckfsku\",
\"title\":\"ckfsku\",
\"type\":\"SINGLE\",
\"weight\":1,
\"netWeight\":1,
\"weightUnit\":\"KG\",
\"length\":1,
\"width\":1,
\"height\":1,
\"dimensionUnit\":\"cm\",
\"enable\":1,
\"serialEnable\":1,
\"shelfLife\":90,
}"' \
--form 'timestamp="1731742317"' \
--form 'sign="bb8a4a78ebd8b43d6bc71f81e83ae900"'
返回示例:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\"}",
"requestId": "223f998d-b0d6-43e4-95cb-5c691572417d"
}
1.3. 商品编辑接口
1.3.1. SERVICE_TYPE
UPDATE_SKU_INFO
1.3.2. 请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 新增商品时填写的SKU |
| title | Y | String | “abc” | 商品名称,最大255字符 |
| barcode | N | String | 商品条码,最大255字符 | |
| type | Y | String | “SINGLE” | 商品类型 |
| isAssembly | N | Int | 0或者1 | 是否组装品 1:是,需填写parts字段 0:否 |
| picUrl | N | String | 图片地址,最大255字符,建议使用picUrlList | |
| picUrlList | N | List<String> |
多张图片地址 | |
| saleStatus | N | String | 销售状态,最大50字符 | |
| weight | Y | Decimal | 毛重 | |
| netWeight | Y | Decimal | 净重 | |
| weightUnit | Y | String | 重量单位 | |
| abbrTitle | N | String | 简称,最大255字符 | |
| brand | N | String | 商品品牌,最大50字符 | |
| unit | N | String | 商品单位,最大128字符 | |
| color | N | String | 颜色,最大255字符 | |
| size | N | String | 尺码,最大255字符 | |
| length | Y | Decimal | 长 | |
| width | Y | Decimal | 宽 | |
| height | Y | Decimal | 高 | |
| dimensionUnit | Y | String | 长度单位 | |
| itemPackage | N | Number | 包装数量 | |
| description | N | String | 商品描述,最大2048字符 | |
| descriptionEn | N | String | 商品描述英文,最大2048字符 | |
| functionDescription | N | String | 性能描述,最大2048字符 | |
| enable | Y | Number | 商品状态(0:禁用;1:有效) | |
| serialEnable | N | Number | 0 | 是否启用序列号管理(0:否;1:是) |
| shelfLife | Y | Number | 90 | 保质期(默认单位天) |
| packingRate | N | Number | 装箱率,若未填写则不保存外箱尺寸、外箱毛重、外箱净重等值 | |
| cartonLength | N | Decimal | 外箱长度,装箱率填写时此字段必填 | |
| cartonWidth | N | Decimal | 外箱宽度,装箱率填写时此字段必填 | |
| cartonHeight | N | Decimal | 外箱高度,装箱率填写时此字段必填 | |
| cartonWeight | N | Decimal | 外箱毛重,装箱率填写时此字段必填 | |
| cartonNetWeight | N | Decimal | 外箱净重,装箱率填写时此字段必填 | |
| cartonDimensionUnit | N | String | 外箱尺寸单位(cm; m),装箱率填写时此字段必填 | |
| cartonWeightUnit | N | String | 外箱重量单位(KG; G),装箱率填写时此字段必填 | |
| chineseCustomsDeclarationName | N | String | 中文报关品名 | |
| englishCustomsDeclarationName | N | String | 英文报关品名 | |
| cdPriceMethod | N | String | 报关价格计算方式(RATE:按比例; CONSTANT:按固定值) | |
| cdPriceRate | N | Decimal | 报关价格比例 | |
| cdPriceMaximum | N | Decimal | 报关价格最大值 | |
| customsDeclarationPrice | N | Decimal | 报关价格 | |
| customsDeclarationPriceUnit | N | String | 报关价格单位(CNY; USD; CAD; GBP; EUR; JRY) | |
| customsCode | N | String | 海关编码 | |
| exportTax | N | Decimal | 出口税率 | |
| declaration | N | String | 申报说明 | |
| dangerousTransportGoodsType | N | String | 危险品类型(NONE, LIQUID, POWDER, CONTAIN_ELECTRIC, ELECTRIC) | |
| batteryType | N | Integer | 电池类型(0:不带电; 1:配套锂离子电池; 2:内置锂离子电池; 3:配套锂金属电池; 4:内置锂金属电池; 5:配套干电池) | |
| ccPriceMethod | N | String | 清关价格计算方式(RATE:按比例; CONSTANT:按固定值) | |
| ccPriceRate | N | Decimal | 清关价格比例 | |
| ccPriceMaximum | N | Decimal | 清关价格最大值 | |
| ccPrice | N | Decimal | 清关价格 | |
| ccPriceUnit | N | String | 清关价格币种(CNY; USD; CAD; GBP; EUR; JRY) | |
| price | N | Decimal | 默认售价 | |
| priceUnit | N | String | 默认售价单位(大写三位币种代码) | |
| asin | N | String | ASIN | |
| customProp1 | N | String | 自定义属性1 | |
| customProp2 | N | String | 自定义属性2 | |
| customProp3 | N | String | 自定义属性3 | |
| categoryName1 | N | String | 一级商品分类 | |
| categoryName2 | N | String | 二级商品分类 | |
| categoryName3 | N | String | 三级商品分类 | |
| singleBoxCode | N | String | 单箱条码 | |
| singleItemVolume | N | Decimal | 单品体积 | |
| remarkName | N | String | 备注名 | |
| singleSkuList | N | List <SubSkuDTO> |
子品信息 | |
| parts | N | List <SubSkuDTO> |
组装品子品信息,需填写信息 1. sku:子品编码 2. quantity:子品数量 |
|
| skuCustomFieldValueVOList | N | List <SkuCustomFieldValueVO> |
自定义栏位信息 | |
| purchaseCost | N | Decimal | 采购成本 | |
| purchaseCostUnit | N | String | 采购成本币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| skuSupplierList | N | List <SkuSupplierDTO> |
供应商信息 | |
| isRelatedSingleCost | N | Boolean | 是否关联单品成本,仅组合品生效 | |
| developerUserNameList | N | List |
开发员账号 | |
| isIssueInvoice | N | Int | 是否开票 1: 是 2:否 |
|
| ncm | N | String | NCM,isIssueInvoice=1时必填 | |
| taxGoodsName | N | String | 商品税务名称:isIssueInvoice=1时必填 | |
| cest | N | String | CEST,非必填,isIssueInvoice=1时填写 | |
| placeOrigin | N | String | 原产地,非必填,isIssueInvoice=1时填写 |
SubSkuDTO(组合品子品信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 子品SKU |
| quantity | Y | Number | 3 | 组合品中该子品数量 |
SkuCustomFieldValueVO(自定义栏位)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| customFieldId | Y | Long | 3 | SERVICE_TYPE中的CUSTOMER_FIELD_QUERY接口返回的id |
| value | Y | String | “张三” | 自定义栏位对应的值 |
SkuSupplierDTO(供应商信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 供应商名称 | |
| isDefault | Y | Boolean | 是否默认供应商 | |
| purchaserList | Y | List <String> |
采购员,用户名非姓名 | |
| deliveryCycle | Y | Number | 预计交期(天) | |
| purchasePrice | N | Decimal | 采购单价,小数点后2位有效,多余部分四舍五入 | |
| purchasePriceUnit | N | String | 采购单价币种(CNY、USD、CAD、GBP、 EUR、JRY等) | |
| minimumPurchaseQuantity | N | Number | 最小采购量,正整数 | |
| purchaseTaxRate | N | Decimal | 采购税率,单位:% | |
| drawbackRate | N | Decimal | 退税税率,单位:% | |
| purchaseUrl | N | String | 采购链接 |
1.3.3. 返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | “DATA_INPUT_ERROR” | 错误码 |
| errorMsg | Y | String | “输入参数不对” | 业务错误信息 |
| state | Y | String | success | 请求结果 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/sku' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--form 'appId="TEST"' \
--form 'serviceType="UPDATE_SKU_INFO"' \
--form 'bizParam="{
\"sku\":\"ckfsku\",
\"title\":\"ckfsku\",
\"type\":\"SINGLE\",
\"weight\":1,
\"netWeight\":1,
\"weightUnit\":\"KG\",
\"length\":1,
\"width\":1,
\"height\":1,
\"dimensionUnit\":\"cm\",
\"enable\":1,
\"serialEnable\":1,
\"shelfLife\":90,
}"' \
--form 'timestamp="1731742317"' \
--form 'sign="f843a75cdb3cf14f403fa423108bc410"'
返回示例:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\"}",
"requestId": "223f998d-b0d6-43e4-95cb-5c691572417d"
}
1.4. 商品启用/停用接口
1.4.1. SERVICE_TYPE
UPDATE_SKU_STATUS
1.4.2. 请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | “sku1” | 新增商品时填写的SKU |
| enable | Y | Number | 商品状态(0:禁用;1:有效) |
1.4.3. 返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | “DATA_INPUT_ERROR” | 错误码 |
| errorMsg | Y | String | “输入参数不对” | 业务错误信息 |
| state | Y | String | success | 请求结果 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/sku' \
--form 'appId="TEST"' \
--form 'serviceType="UPDATE_SKU_STATUS"' \
--form 'bizParam="{
\"sku\":\"ckfsku\",
\"enable\":1
}"' \
--form 'timestamp="1731742317"' \
--form 'sign="b5400443bf960060453cacf9c351b6a4"'
返回示例:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\"}",
"requestId": "758f16da-dea5-4f1d-a36a-054bd581f0c8"
}
1.5. 查询系统商品
1.5.1. SERVICE_TYPE
QUERY_SYS_SKU_LIST_SKU
1.5.2. 请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| platform | Y | String | “sku1” | 平台Code 例:AMAZON,ALIEXPRESS,EBAY,WALMART,WISH, LAZADA,SHOPEE_CNSC,SHOPEE,TIKTOK,TIKTOK_GLOBAL, TEMU,SHOPLINE,SHEIN ... |
| shopName | Y | Number | 店铺名称 | |
| skuExtDTOList | Y | List<SkuExtDTO> | 单次最多5个 |
SkuExtDTO(SKU查询条件)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| onlineSkuId | N | String | "online-sku-id" | 线上skuId,其他(LAZADA,SHOPEE_CNSC,SHOPEE,TIKTOK,TIKTOK_GLOBAL等)用id查询 |
| onlineSku | N | String | “online-sku-code” | 线上skuCode,(AMAZON,ALIEXPRESS,EBAY,WALMART,WISH)用code查询 |
1.5.3. 返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| platform | Y | String | “sku1” | 平台Code 例:AMAZON,ALIEXPRESS,EBAY,WALMART,WISH, LAZADA,SHOPEE_CNSC,SHOPEE,TIKTOK,TIKTOK_GLOBAL, TEMU,SHOPLINE ... |
| shopName | Y | Number | 店铺名称 | |
| skuExtDTOList | Y | List<ReturnSkuExtDTO> |
ReturnSkuExtDTO
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| onlineSkuId | N | String | "online-sku-id" | 线上skuId,其他(LAZADA,SHOPEE_CNSC,SHOPEE,TIKTOK,TIKTOK_GLOBAL等) |
| onlineSku | N | String | “online-sku-code” | 线上skuCode,AMAZON,ALIEXPRESS,EBAY,WALMART,WISH |
| onlineSpuId | N | String | 线上spuId, 若有 | |
| onlineSpu | N | String | 线上spuCode, 若有 | |
| skuId | Y | String | 系统商品skuId | |
| sku | Y | String | 系统商品skuCode | |
| skuName | Y | String | 系统商品SkuName | |
| singleSkuList | N | List<SubSkuDTO> | 子品信息,如果系统商品是组合品则返回 |
SubSkuDTO
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | N | String | 子品skuCode | |
| skuName | N | String | 子品skuName | |
| quantity | N | String | 子品数量 |
1.6. 商品分类
API URL
post {HTTP(S)地址}/api/{version}/sku_category
业务限制与报错与页面「商品 - 分类管理」/biz/sku_category/ 一致:最多三级;同父级下名称不可重复;更新不改上级;删除时若被系统商品或供应商占用则失败,并级联删除子分类。更新/删除必须传 id 与 version。
开放平台授权:四个接口均不自动授权。客户需在开放平台为应用勾选 QUERY_SKU_CATEGORY_LIST / CREATE_SKU_CATEGORY / UPDATE_SKU_CATEGORY / DELETE_SKU_CATEGORY 后才能调用,否则返回 SERVICE_TYPE_NOT_ALLOW。
1.6.1. 商品分类树查询接口
SERVICE_TYPE
QUERY_SKU_CATEGORY_LIST
请求参数
对齐页面 /biz/sku_category/get_all:返回当前客户下全部商品分类树(一级节点及其 childList),不是分页查询。无需 page / pageSize,无业务过滤参数,无条数上限。bizParam 可为空或 {}。
返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | ||
| errorMsg | Y | String | ||
| state | Y | String | success | |
| result | Y | List<SkuCategory> | 一级分类列表,子级在 childList |
SkuCategory
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Long | 1001 | 分类主键 |
| name | Y | String | 水果(A类) | 分类名称 |
| hsCode | N | String | 3 | 海关编码 |
| level | Y | Number | 1 | 1/2/3 |
| parentId | Y | Long | 0 | 一级为 0 |
| parentName | N | String | 上级名称 | |
| version | Y | Long | 0 | 乐观锁,更新/删除必传 |
| childList | N | List<SkuCategory> | 子分类 |
1.6.2. 商品分类创建接口
SERVICE_TYPE
CREATE_SKU_CATEGORY
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 普通水果 | 分类名称 |
| parentId | Y | Long | 0 | 上级 ID,一级传 0 |
| hsCode | N | String | 0801 | 海关编码 |
返回参数
成功时 result.id 为新建分类主键。失败错误码与页面一致,例如 SKU_CATEGORY_NAME_EXISTS、SKU_CATEGORY_PARENT_NOT_EXISTS、DATA_INPUT_ERROR(不可超过三级)。
1.6.3. 商品分类更新接口
SERVICE_TYPE
UPDATE_SKU_CATEGORY
请求参数
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| id | Y | Long | 分类主键 |
| version | Y | Long | 乐观锁 |
| name | N | String | 分类名称 |
| hsCode | N | String | 海关编码 |
不可修改 parentId。version 不一致返回 VERSION_DIFF。
1.6.4. 商品分类删除接口
SERVICE_TYPE
DELETE_SKU_CATEGORY
请求参数
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| id | Y | Long | 分类主键 |
| version | Y | Long | 乐观锁 |
被 SKU 占用:CATEGORY_USED_BY_SKU。被供应商占用:CATEGORY_USED_BY_SUPPLIER。删除时会同时删除其子分类。
1.7. 普通属性
API URL
post {HTTP(S)地址}/api/{version}/skuProperty
普通属性包括单位、品牌、销售状态和自定义分类,不含 SPU 属性。name/nameEN 最长 50,remark 最长 128。
1.7.1. 创建普通属性
SERVICE_TYPE
CREATE_SKU_PROPERTY
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| type | Y | String | BRAND | UNIT、BRAND、SALE_STATUS、CUSTOM,不接受 SPU |
| name | Y | String | 耐克 | 同类型唯一,最长 50 |
| nameEN | N | String | Nike | 英文名称,最长 50 |
| sequence | N | Number | 0 | 排序,范围 0-100,缺省 0 |
| remark | N | String | 品牌备注 | 最长 128 |
返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | 错误码 | |
| errorMsg | Y | String | 错误信息 | |
| state | Y | String | success | 请求结果 |
| result.id | Y | Number | 88 | 新建主键 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/skuProperty' \
--form 'appId="TEST"' \
--form 'serviceType="CREATE_SKU_PROPERTY"' \
--form 'bizParam="{\"type\":\"BRAND\",\"name\":\"耐克\",\"nameEN\":\"Nike\"}"' \
--form 'timestamp="1756865700001"' \
--form 'sign="sign"'
返回示例:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"result\":{\"id\":88,\"name\":\"耐克\",\"nameEN\":\"Nike\",\"sequence\":0,\"type\":\"BRAND\"},\"state\":\"success\"}"
}
1.7.2. 修改普通属性
SERVICE_TYPE
UPDATE_SKU_PROPERTY
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 属性 id |
| type | Y | String | BRAND | 必须与原记录一致,不允许改类型 |
| name | Y | String | 耐克 | 同类型唯一 |
| nameEN | N | String | Nike | 不传则保持原值 |
| sequence | N | Number | 10 | 不传则保持原值 |
| remark | N | String | 不传则保持原值 |
成功时 bizContent 解码后为:
{"notSuccess":false,"state":"success"}
1.7.3. 删除普通属性
SERVICE_TYPE
DELETE_SKU_PROPERTY
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 属性 id |
| type | Y | String | BRAND | 必须与原记录一致 |
成功响应与修改接口相同;目标不存在或类型不匹配时返回业务错误。
1.7.4. 普通属性分页查询
SERVICE_TYPE
QUERY_SKU_PROPERTY_LIST
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| page | N | Number | 1 | 页码,默认 1,必须 >= 1 |
| pageSize | N | Number | 20 | 默认 20,范围 1-200 |
| type | Y | String | BRAND | UNIT、BRAND、SALE_STATUS、CUSTOM |
| name | N | String | 耐克 | 精确匹配 |
返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| total | Y | Number | 1 | 总条数 |
| result | Y | List<SkuProperty> | 属性列表 |
SkuProperty
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 主键 |
| type | Y | String | BRAND | 类型 |
| name | Y | String | 耐克 | 名称 |
| nameEN | N | String | Nike | 英文名 |
| sequence | Y | Number | 0 | 排序 |
| remark | N | String | 备注 |
空结果返回 result=[] 且 total=0。
分页返回示例:
{
"state":"success",
"errorCode":"",
"errorMsg":"",
"bizContent":"{\"notSuccess\":false,\"result\":[{\"id\":88,\"type\":\"BRAND\",\"name\":\"耐克\",\"nameEN\":\"Nike\",\"sequence\":0}],\"state\":\"success\",\"total\":1}"
}
1.7.5. 失败响应
参数校验、重名、目标不存在和类型不匹配等错误位于 bizContent。完整错误码见错误码。
{
"state":"success",
"errorCode":"",
"errorMsg":"",
"bizContent":"{\"errorCode\":\"sku.property.type.invalid\",\"errorMsg\":\"属性类型无效\",\"notSuccess\":true,\"state\":\"failure\"}"
}
1.8. SPU属性
API URL
post {HTTP(S)地址}/api/{version}/spuAttribute
管理 SPU 属性名和属性值。名称和值会去除首尾空格,最长 50;属性值最多 300 个。已被 SPU 引用的属性不可删除,已引用的属性名和属性值不可改掉。
1.8.1. 创建SPU属性
SERVICE_TYPE
CREATE_SPU_ATTRIBUTE
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 颜色 | 属性名称唯一,最长 50 |
| values | Y | List<String> | ["红","蓝"] | 完整列表,每项最长 50,最多 300 |
返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| errorCode | Y | String | 错误码 | |
| errorMsg | Y | String | 错误信息 | |
| state | Y | String | success | 请求结果 |
| result.id | Y | Number | 88 | 新建主键 |
请求示例:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/spuAttribute' \
--form 'appId="TEST"' \
--form 'serviceType="CREATE_SPU_ATTRIBUTE"' \
--form 'bizParam="{\"name\":\"颜色\",\"values\":[\"红\",\"蓝\"]}"' \
--form 'timestamp="1756865700001"' \
--form 'sign="sign"'
返回示例:
{
"state":"success",
"errorCode":"",
"errorMsg":"",
"bizContent":"{\"notSuccess\":false,\"result\":{\"id\":88,\"name\":\"颜色\",\"values\":[\"红\",\"蓝\"]},\"state\":\"success\"}"
}
1.8.2. 修改SPU属性
SERVICE_TYPE
UPDATE_SPU_ATTRIBUTE
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 属性 id,不存在不创建 |
| name | Y | String | 颜色 | 已被引用时不可改名 |
| values | Y | List<String> | ["红","蓝"] | 完整目标列表,已引用值不可删除 |
成功时 bizContent 解码后为 {"notSuccess":false,"state":"success"}。
1.8.3. 删除SPU属性
SERVICE_TYPE
DELETE_SPU_ATTRIBUTE
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 被引用则失败 |
成功响应与修改接口相同;属性被引用时返回业务错误且不会删除。
1.8.4. 查询SPU属性详情
SERVICE_TYPE
GET_SPU_ATTRIBUTE
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 属性 id |
返回参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| id | Y | Number | 88 | 主键 |
| name | Y | String | 颜色 | 名称 |
| values | Y | List | ["红"] | 属性值 |
| attributeValues | Y | List | 含 related 引用标记 |
attributeValues 每项包含 name、value 和 related;related=true 表示该属性值已被 SPU 引用。
1.8.5. SPU属性分页查询
SERVICE_TYPE
QUERY_SPU_ATTRIBUTE_LIST
请求参数
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| page | N | Number | 1 | 默认 1,必须 >= 1 |
| pageSize | N | Number | 20 | 默认 20,范围 1-200 |
| name | N | String | 颜色 | 精确匹配 |
空结果返回 result=[] 且 total=0。列表不逐条返回引用标记,引用信息见详情。
列表成功响应的 bizContent 包含 result 和 total,result 每项包含 id、name、values;失败格式与普通属性接口一致。
1.9. SPU模块API
API URL
post {HTTP(S)地址}/api/{version}/spu
当前版本为 v1,请求地址为 /api/v1/spu。
1.9.1. 创建系统SPU接口
SERVICE_TYPE
CREATE_SPU
一次请求创建一个系统 SPU,支持在同一请求中新建 SKU 和关联已有 SKU。支持单规格、多规格商品。
应用须单独取得 CREATE_SPU 接口授权;已有 SKU 创建或 SPU 属性接口权限不能替代该授权。默认限流为每 60 秒 50 次,实际额度以应用配置为准。
请求参数
以下参数均位于 bizParam 中。
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| spu | Y | String | OPEN-SPU-001 | SPU 编码,最长 255 字符,当前客户下不可重复 |
| title | Y | String | 基础款上衣 | SPU 名称,最长 255 字符 |
| isMultiAttribute | Y | Boolean | true | 是否多规格,默认 true;false 为单规格,多规格时需要填写:spuAttributes |
| brandName | N | String | 示例品牌 | 已有品牌名称,按当前客户查询;不存在时报错,不自动创建 |
| categoryName1 | N | String | 服装 | 已有一级商品分类名称 |
| categoryName2 | N | String | 上衣 | 已有二级分类名称,须同时提供正确的一级分类 |
| categoryName3 | N | String | 短袖 | 已有三级分类名称,须同时提供正确的一、二级分类 |
| picUrls | N | List<String> | ["https://example.com/main.jpg"] | SPU 图片地址列表,第一张为主图,其余为扩展图;不传、null 或空列表不设置图片 |
| details | N | String | 商品图文详情 | 富文本详情,HTML形式 |
| video | N | Video | 见下表 | 商品视频 |
| priceUnit | Y | String | USD | 售价币种,例如 CNY、USD、EUR、JPY、VND;须为系统支持的币种枚举 货币枚举 |
| purchaseCostUnit | Y | String | CNY | 采购成本币种,须为系统支持的币种枚举货币枚举 |
| dimensionUnit | Y | String | cm | 尺寸单位:cm、In、m;区分大小写 |
| weightUnit | Y | String | KG | 重量单位:KG、LBS、GRAM;区分大小写 |
| spuAttributes | N | List<Attribute> | 见下表 | SPU 可选属性及属性值;多规格商品建议显式提供 |
| skus | 条件必填 | List<SpuSku> | 见下表 | 多规格至少 1 行;单规格允许不传或传 0~1 行 |
品牌和分类须已存在于当前应用所属客户下。分类名称为空白时按未传处理,指定分类后必须匹配层级和完整父子路径,不会自动创建分类。
priceUnit、purchaseCostUnit、dimensionUnit、weightUnit 不传或为 null 时按系统创建规则处理;空字符串属于非法枚举值。SPU 售价币种缺省为 USD;新建 SKU 的售价、采购成本币种缺省使用客户有效币种。关联已有 SKU 时也会应用顶层共享字段及默认规则,详见下文。
Video(商品视频)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| videoName | N | String | 商品展示 | 视频名称 |
| videoUrl | N | String | https://example.com/product.mp4 | 视频地址 |
Attribute(SPU可选属性)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 颜色 | 属性名称,同一 SPU 中不可重复 |
| attributeValues | 条件必填 | List<AttributeValue> | 见下表 | 需要属性值图片、排序时使用;与 values 同时非空时优先使用此字段 |
公共属性和属性值会按系统创建规则自动创建或补充,无需传入内部属性 ID。同一属性内的值不可重复。公共属性可能在 SPU 创建失败后仍保留。
AttributeValue(属性值)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 颜色 | 属性名称 |
| value | Y | String | 红色 | 属性值 |
| picUrl | N | String | https://example.com/red.jpg | 属性值图片地址 |
| sort | N | Integer | 1 | 排序 |
SpuSku(新建或关联SKU)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| skuBindMode | Y | String | CREATE | CREATE:新建 SKU 后关联;LINK:关联已有 SKU |
| sku | Y | String | OPEN-SKU-RED | 必填,按编码匹配当前客户已有 SKU,不区分大小写; |
| title | Y | String | 基础款上衣-红色 | 必填,SKU名称 |
| price | N | Decimal | 19.90 | 默认售价;LINK 不传或 null 时使用原值 |
| purchaseCost | N | Decimal | 10.00 | 采购成本;LINK 不传或 null 时使用原值 |
| width | N | Decimal | 20 | 宽,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| height | N | Decimal | 2 | 高,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| length | N | Decimal | 30 | 长,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| weight | N | Decimal | 0.2 | 重量,单位取顶层 weightUnit;LINK 不传或 null 时使用原值 |
| attributeValues | 条件必填 | List<AttributeValue> | [{"name":"颜色","value":"红色"}] | 本次 SPU 关系中的规格取值,多规格时须提供规格信息 |
| attributeValueList | N | List<String> | ["红色","M"] | 兼容的规格值数组,按 spuAttributes 的顺序对应属性名;attributeValues 非空时优先使用 attributeValues |
| sort | N | Integer | 1 | SKU 行排序 |
| priceControlConfig | N | PriceControl | 见下表 | SKU 控价配置;sku的控价类型必须保持一致,例如enabled全为true,priceMode全是统一控价 |
新建 SKU 时,长、宽、高、重量未传均按 1 补齐。新增 SKU 类型为单品(SINGLE)。
规格及关联规则:
- 单规格:
isMultiAttribute=false,最多一行 SKU;不传 SKU 时仅创建 SPU,不自动创建 SKU。单规格不保存规格属性关系。 - 多规格:
isMultiAttribute=true或不传,至少一行 SKU,每行必须具有规格信息;不同 SKU 的规格组合不可重复,同一行内属性名不可重复。 - SKU 使用了已在 SPU 中定义可选值的属性时,其取值必须位于该属性的可选值范围内。
- 每个 SKU 行必须明确指定
skuBindMode;LINK 查询不到时失败,不会转为新建。同一已有 SKU 不可重复关联。 - LINK 目标必须有效、未关联其他 SPU,类型须为单品(SINGLE)或组装品(ASSEMBLY);关联单品采购成本的组装品不能绑定 SPU。
- LINK 行的名称、图片、售价、采购成本、长宽高、重量,未传或 null 时补齐原值,非 null 值参与更新;0 和空字符串也会进入业务处理。
- 品牌、分类、售价币种、采购成本币种、尺寸及重量单位统一取顶层参数并应用系统规则;即使省略,也不能据此认定已有 SKU 对应字段保持不变。关联时省略售价币种按 USD 处理,省略尺寸和重量单位按 cm、KG 处理。需要保留共享字段时请显式传入目标值。
- 规格取值、排序来自本次请求,不从已有 SKU 的旧规格关系补齐。
仅上述业务字段参与创建。内部主键、租户、登录身份、校验开关等字段不能由调用方指定;品牌、分类按名称传入,已有 SKU 按编码传入。
PriceControl(SKU控价配置)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| selfConfig | N | RuleConfig | 自营控价配置 |
| distributionConfig | N | RuleConfig | 分销控价配置 |
RuleConfig(控价规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| enabled | Y | Boolean | true | 是否启用;关闭规则使用 false |
| priceMode | 条件必填 | String | UNIFIED | 启用时必填:UNIFIED(统一控价)、BY_COUNTRY(分国家控价) |
| defaultMinPrice | N | Decimal | 15.00 | 统一最低限价,选填;填写时须非负并同时提供币种 |
| defaultCurrency | 条件必填 | String | USD | 填写统一最低限价时必填 |
| countryRules | N | CountryRuleSet | 见下表 | 分国家控价规则,分国家控价时必填 |
CountryRuleSet(国家规则集合)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| countries | N | List<CountryRule> | 各国家规则,国家编码不可重复 |
| defaultCountryRule | N | DefaultCountryRule | 其他国家的默认规则 |
CountryRule(国家规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| countryCode | Y | String | US | 国家编码,国家枚举 |
| minPrice | Y | Decimal | 15.00 | 最低限价,不得为负数 |
| currency | Y | String | USD | 限价币种,货币枚举 |
DefaultCountryRule(其他国家默认规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| enabled | N | Boolean | true | 是否启用 |
| minPrice | 条件必填 | Decimal | 15.00 | 启用时必填,不得为负数 |
| currency | 条件必填 | String | USD | 启用时必填,货币枚举 |
控价按规则对象处理,不作为任意深层字段的部分更新接口。无需传入 skuId。
返回参数
接口采用两层响应,bizContent 为 JSON 字符串,需再次解析。外层成功仅表示协议处理成功;判断创建是否成功还需检查 bizContent.state。
外层响应
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | success / failure |
| errorCode | Y | String | SIGNATURE_ERROR | 协议错误码,成功时为空字符串 |
| errorMsg | Y | String | 签名错误 | 协议错误信息,成功时为空字符串 |
| bizContent | N | String | 见返回示例 | 业务响应 JSON 字符串;协议失败时可能不返回 |
| requestId | N | String | 请求标识,以实际响应为准 |
业务响应(解析 bizContent 后)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | 创建结果:success / failure |
| notSuccess | Y | Boolean | false | 是否失败 |
| errorCode | N | String | spu.number.repeat | 业务错误码,失败时返回 |
| errorMsg | N | String | SPU编码重复 | 业务错误信息,失败时返回,文案随语言设置变化 |
| args | N | List | 错误参数,按实际响应返回 | |
| extraData | N | List | 部分业务失败的附加信息 | |
| traceId | N | String | 排障标识 |
成功时不返回 result、SPU ID 或 SKU 列表。重复调用相同 SPU 编码不会更新原商品,也不保证幂等成功。
请求示例
多规格:新建SKU并关联已有SKU
以下 bizParam 示例中,品牌、分类和须预先存在,已有 SKU 须满足上述关联条件:
{
"spu": "YF_20261026_01",
"title": "YF_20261026_01",
"picUrls":
[
"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png",
"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/MjU5YjMyODMxNTE1MjJmNDUwOTc5YzkxZmI1ZmU4MWI.jpg"
],
"video":
{
"videoUrl": "https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/video/ZjMyNWMxZmRhNmYwZmI0NDg5ZmYwODk4Y2Q2Y2RmM2M.mp4",
"videoName": "NzVkMTE0NDNhYzc5YTQ2OTY1NTMxODlmMmZhMzc4MWU=.mp4"
},
"priceUnit": "BZD",
"purchaseCostUnit": "BZD",
"weightUnit": "KG",
"dimensionUnit": "cm",
"details": "%3Cp%3E%E5%9B%BE%E6%96%87%E8%AF%A6%E6%83%85%3C%2Fp%3E",
"description": "",
"isMultiAttribute": true,
"brandName": "brand",
"categoryName1": "111",
"categoryName2": "222",
"categoryName3": "333",
"spuAttributes":
[
{
"name": "YF_TEST",
"attributeValues":
[
{
"value": "测试1",
"name": "YF_TEST",
"sort": 1
},
{
"value": "测试2",
"name": "YF_TEST",
"picUrl": null,
"sort": 2
}
]
},
{
"name": "口味",
"attributeValues":
[
{
"value": "柠檬味",
"sort": 1
},
{
"value": "蓝莓味",
"picUrl": null,
"sort": 2
}
]
}
],
"skus":
[
{
"skuBindMode": "LINK",
"attributeValueList":
[
"测试1",
"柠檬味"
],
"sku": "YF_20261026_02",
"title": "YF_20261026_02",
"sort": 1,
"priceControlConfig":
{
"selfConfig":
{
"enabled": true,
"priceMode": "BY_COUNTRY",
"countryRules":
{
"countries":
[
{
"countryCode": "US",
"currency": "USD",
"minPrice": 100
}
],
"defaultCountryRule":
{
"enabled": true,
"minPrice": 11,
"currency": "BZD"
}
}
},
"distributionConfig":
{
"enabled": true,
"priceMode": "UNIFIED",
"defaultMinPrice": 200,
"defaultCurrency": "BZD"
}
}
},
{
"skuBindMode": "LINK",
"picUrl": null,
"attributeValueList":
[
"测试2",
"蓝莓味"
],
"sku": "YF_20261026_04",
"purchaseCost": 2,
"price": 3,
"weight": 4,
"length": 3,
"width": 4,
"height": 100,
"title": "YF_20261026_04",
"sort": 2
}
]
}
单规格:新建SPU和一个SKU
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/spu' \
--form-string 'appId=TEST' \
--form-string 'serviceType=CREATE_SPU' \
--form-string 'bizParam={"spu":"OPEN-SPU-002","title":"基础款水杯","isMultiAttribute":false,"priceUnit":"USD","purchaseCostUnit":"CNY","dimensionUnit":"cm","weightUnit":"KG","skus":[{"skuBindMode":"CREATE","sku":"OPEN-SKU-CUP","title":"基础款水杯","price":19.90,"purchaseCost":10.00,"length":10,"width":10,"height":20,"weight":0.3}]}' \
--form-string 'timestamp=1793059200000' \
--form-string 'sign=替换为按本次完整参数计算的签名'
示例时间戳和签名须替换为实际值。--form-string 的值就是服务端收到的表单字符串,不要额外给 JSON 增加包裹双引号。
单规格:仅创建SPU
bizParam:
{
"spu": "OPEN-SPU-003",
"title": "待关联商品",
"isMultiAttribute": false
}
返回示例
成功:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\"}"
}
业务失败(SPU编码重复):
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"errorCode\":\"spu.number.repeat\",\"errorMsg\":\"SPU编码重复\",\"notSuccess\":true,\"state\":\"failure\"}"
}
协议失败(签名错误):
{
"state": "failure",
"errorCode": "SIGNATURE_ERROR",
"errorMsg": "签名错误"
}
以上示例省略可选的排障字段,错误文案仅作示意。
常见错误码
业务错误码区分大小写,以下列出实际返回的错误码值。
| 错误码 | 说明 |
|---|---|
| data.input.error | 业务参数为空、SKU 行为空、未指定绑定方式,或单规格传入多行 SKU 等 |
| data.input.error.msg | 顶层币种或单位非法,错误信息包含对应字段名 |
| spu.number.blank | SPU 编码为空 |
| spu.title.blank | SPU 名称为空 |
| spu.title.length.more.then.number | SPU 编码或名称超过 255 字符 |
| spu.number.repeat | SPU 编码已存在 |
| spu.multi.attribute.sku.required | 多规格商品未提供 SKU |
| sku.not.exist | LINK 指定的 SKU 不存在或不属于当前客户 |
| spu.sku.repeat | 重复关联同一 SKU |
| sku.exist | 新建 SKU 编码已存在 |
| sku.duplicate | 请求中的新建 SKU 编码重复 |
| sku.related.other.spu | SKU 已关联其他 SPU |
| sku.can.not.be.disabled | SKU 已禁用,不能关联 |
| unsupport.sku.type | SKU 类型不支持关联 |
| invalid.attribute | 多规格 SKU 未提供规格信息 |
| spu.attribute.name.duplicate | SPU 属性名或同一 SKU 行内属性名重复 |
| spu.attribute.value.duplicate | 同一 SPU 属性内的可选值重复 |
| sku.attribute.value.duplicate | 不同 SKU 使用相同的规格组合 |
| sku.attribute.not.exist.spu | SKU 属性取值超出 SPU 已定义的可选值范围 |
| brand.not.exist | 品牌不存在 |
| sku.category.level1.not.exists | 一级分类不存在或不匹配 |
| sku.category.level2.not.exists | 二级分类不存在或父子路径不匹配 |
| sku.category.level3.not.exists | 三级分类不存在或父子路径不匹配 |
签名、应用授权、IP 白名单及限流失败通常位于外层响应:
| 错误码 | 说明 |
|---|---|
| APP_NOT_EXIST | 应用不存在或无效 |
| SIGNATURE_ERROR | 签名不正确 |
| SERVICE_TYPE_NOT_EXIST | 服务类型不支持 |
| SERVICE_TYPE_NOT_ALLOW | 应用未获得该接口权限 |
| SERVICE_IP_NOT_ALLOW | 调用 IP 不在白名单内 |
| REQUEST_IS_THROTTLED | 超出调用额度 |
| SYSTEM_ERROR | JSON 反序列化失败或其他未预期异常 |
应用所属客户的主账号不存在或无效时,业务响应返回 user.not.exist。其他商品、图片和控价错误沿用系统现有错误码;完整错误定义参见错误码。
1.9.2. 修改系统SPU接口
SERVICE_TYPE
UPDATE_SPU
一次请求编辑一个系统 SPU,支持在同一请求中新建 SKU 和关联已有 SKU。支持单规格、多规格商品。
应用须单独取得 UPDATE_SPU 接口授权;已有 SKU 创建或 SPU 属性接口权限不能替代该授权。默认限流为每 60 秒 50 次,实际额度以应用配置为准。
请求参数
以下参数均位于 bizParam 中。
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| spu | Y | String | OPEN-SPU-001 | SPU 编码,ERP系统中已经存在的编码 |
| title | Y | String | 基础款上衣 | SPU 名称,最长 255 字符 |
| isMultiAttribute | Y | Boolean | true | 是否多规格,默认 true;false 为单规格,多规格时需要填写:spuAttributes |
| brandName | N | String | 示例品牌 | 已有品牌名称,按当前客户查询;不存在时报错,不自动创建 |
| categoryName1 | N | String | 服装 | 已有一级商品分类名称 |
| categoryName2 | N | String | 上衣 | 已有二级分类名称,须同时提供正确的一级分类 |
| categoryName3 | N | String | 短袖 | 已有三级分类名称,须同时提供正确的一、二级分类 |
| picUrls | N | List<String> | ["https://example.com/main.jpg"] | SPU 图片地址列表,第一张为主图,其余为扩展图;不传、null 或空列表不设置图片 |
| details | N | String | 商品图文详情 | 富文本详情,HTML形式 |
| video | N | Video | 见下表 | 商品视频 |
| priceUnit | Y | String | USD | 售价币种,例如 CNY、USD、EUR、JPY、VND;须为系统支持的币种枚举 货币枚举 |
| purchaseCostUnit | Y | String | CNY | 采购成本币种,须为系统支持的币种枚举货币枚举 |
| dimensionUnit | Y | String | cm | 尺寸单位:cm、In、m;区分大小写 |
| weightUnit | Y | String | KG | 重量单位:KG、LBS、GRAM;区分大小写 |
| spuAttributes | N | List<Attribute> | 见下表 | SPU 可选属性及属性值;多规格商品必须提供 |
| skus | 条件必填 | List<SpuSku> | 见下表 | 多规格至少 1 行;单规格允许不传或传 0~1 行 |
品牌和分类须已存在于当前应用所属客户下。分类名称为空白时按未传处理,指定分类后必须匹配层级和完整父子路径,不会自动创建分类。
priceUnit、purchaseCostUnit、dimensionUnit、weightUnit 不传或为 null 时按系统创建规则处理;空字符串属于非法枚举值。SPU 售价币种缺省为 USD;新建 SKU 的售价、采购成本币种缺省使用客户有效币种。关联已有 SKU 时也会应用顶层共享字段及默认规则,详见下文。
Video(商品视频)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| videoName | N | String | 商品展示 | 视频名称 |
| videoUrl | N | String | https://example.com/product.mp4 | 视频地址 |
Attribute(SPU可选属性)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 颜色 | 属性名称,同一 SPU 中不可重复 |
| attributeValues | 条件必填 | List<AttributeValue> | 见下表 | 需要属性值图片、排序时使用;与 values 同时非空时优先使用此字段 |
公共属性和属性值会按系统创建规则自动创建或补充,无需传入内部属性 ID。同一属性内的值不可重复。公共属性可能在 SPU 创建失败后仍保留。
AttributeValue(属性值)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | Y | String | 颜色 | 属性名称 |
| value | Y | String | 红色 | 属性值 |
| picUrl | N | String | https://example.com/red.jpg | 属性值图片地址 |
| sort | N | Integer | 1 | 排序 |
SpuSku(新建或关联SKU)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| skuBindMode | Y | String | CREATE | CREATE:新建 SKU 后关联;LINK:关联已有 SKU |
| sku | Y | String | OPEN-SKU-RED | 必填,按编码匹配当前客户已有 SKU,不区分大小写; |
| title | Y | String | 基础款上衣-红色 | 必填,SKU名称 |
| price | N | Decimal | 19.90 | 默认售价;LINK 不传或 null 时使用原值 |
| purchaseCost | N | Decimal | 10.00 | 采购成本;LINK 不传或 null 时使用原值 |
| width | N | Decimal | 20 | 宽,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| height | N | Decimal | 2 | 高,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| length | N | Decimal | 30 | 长,单位取顶层 dimensionUnit;LINK 不传或 null 时使用原值 |
| weight | N | Decimal | 0.2 | 重量,单位取顶层 weightUnit;LINK 不传或 null 时使用原值 |
| attributeValues | 条件必填 | List<AttributeValue> | [{"name":"颜色","value":"红色"}] | 本次 SPU 关系中的规格取值,多规格时须提供规格信息 |
| attributeValueList | N | List<String> | ["红色","M"] | 兼容的规格值数组,按 spuAttributes 的顺序对应属性名;attributeValues 非空时优先使用 attributeValues |
| sort | N | Integer | 1 | SKU 行排序 |
| priceControlConfig | N | PriceControl | 见下表 | SKU 控价配置;sku的控价类型必须保持一致,例如enabled全为true,priceMode全是统一控价 |
新建 SKU 时,长、宽、高、重量未传均按 1 补齐。新增 SKU 类型为单品(SINGLE)。
规格及关联规则:
- 单规格:
isMultiAttribute=false,最多一行 SKU;不传 SKU 时仅创建 SPU,不自动创建 SKU。单规格不保存规格属性关系。 - 多规格:
isMultiAttribute=true或不传,至少一行 SKU,每行必须具有规格信息;不同 SKU 的规格组合不可重复,同一行内属性名不可重复。 - SKU 使用了已在 SPU 中定义可选值的属性时,其取值必须位于该属性的可选值范围内。
- 每个 SKU 行必须明确指定
skuBindMode;LINK 查询不到时失败,不会转为新建。同一已有 SKU 不可重复关联。 - LINK 目标必须有效、未关联其他 SPU,类型须为单品(SINGLE)或组装品(ASSEMBLY);关联单品采购成本的组装品不能绑定 SPU。
- 品牌、分类、售价币种、采购成本币种、尺寸及重量单位统一取顶层参数并应用系统规则;即使省略,也不能据此认定已有 SKU 对应字段保持不变。关联时省略售价币种按 USD 处理,省略尺寸和重量单位按 cm、KG 处理。需要保留共享字段时请显式传入目标值。
- 规格取值、排序来自本次请求,不从已有 SKU 的旧规格关系补齐。
仅上述业务字段参与创建。内部主键、租户、登录身份、校验开关等字段不能由调用方指定;品牌、分类按名称传入,已有 SKU 按编码传入。
PriceControl(SKU控价配置)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| selfConfig | N | RuleConfig | 自营控价配置 |
| distributionConfig | N | RuleConfig | 分销控价配置 |
RuleConfig(控价规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| enabled | Y | Boolean | true | 是否启用;关闭规则使用 false |
| priceMode | 条件必填 | String | UNIFIED | 启用时必填:UNIFIED(统一控价)、BY_COUNTRY(分国家控价) |
| defaultMinPrice | N | Decimal | 15.00 | 统一最低限价,选填;填写时须非负并同时提供币种 |
| defaultCurrency | 条件必填 | String | USD | 填写统一最低限价时必填 |
| countryRules | N | CountryRuleSet | 见下表 | 分国家控价规则,分国家控价时必填 |
CountryRuleSet(国家规则集合)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| countries | N | List<CountryRule> | 各国家规则,国家编码不可重复 |
| defaultCountryRule | N | DefaultCountryRule | 其他国家的默认规则 |
CountryRule(国家规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| countryCode | Y | String | US | 国家编码,国家枚举 |
| minPrice | Y | Decimal | 15.00 | 最低限价,不得为负数 |
| currency | Y | String | USD | 限价币种,货币枚举 |
DefaultCountryRule(其他国家默认规则)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| enabled | N | Boolean | true | 是否启用 |
| minPrice | 条件必填 | Decimal | 15.00 | 启用时必填,不得为负数 |
| currency | 条件必填 | String | USD | 启用时必填,货币枚举 |
控价按规则对象处理,不作为任意深层字段的部分更新接口。无需传入 skuId。
返回参数
接口采用两层响应,bizContent 为 JSON 字符串,需再次解析。外层成功仅表示协议处理成功;判断创建是否成功还需检查 bizContent.state。
外层响应
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | success / failure |
| errorCode | Y | String | SIGNATURE_ERROR | 协议错误码,成功时为空字符串 |
| errorMsg | Y | String | 签名错误 | 协议错误信息,成功时为空字符串 |
| bizContent | N | String | 见返回示例 | 业务响应 JSON 字符串;协议失败时可能不返回 |
| requestId | N | String | 请求标识,以实际响应为准 |
业务响应(解析 bizContent 后)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | 创建结果:success / failure |
| notSuccess | Y | Boolean | false | 是否失败 |
| errorCode | N | String | spu.number.repeat | 业务错误码,失败时返回 |
| errorMsg | N | String | SPU编码重复 | 业务错误信息,失败时返回,文案随语言设置变化 |
| args | N | List | 错误参数,按实际响应返回 | |
| extraData | N | List | 部分业务失败的附加信息 | |
| traceId | N | String | 排障标识 |
成功时不返回 result、SPU ID 或 SKU 列表。重复调用相同 SPU 编码不会更新原商品,也不保证幂等成功。
请求示例
多规格:新建SKU并关联已有SKU
以下 bizParam 示例中,品牌、分类须预先存在,已有 SKU 须满足上述关联条件:
{
"spu": "YF_20261026_01",
"title": "YF_20261026_011",
"picUrls":
[
"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png"
],
"video":
{
"videoUrl": "https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/video/ZjMyNWMxZmRhNmYwZmI0NDg5ZmYwODk4Y2Q2Y2RmM2M.mp4",
"videoName": "NzVkMTE0NDNhYzc5YTQ2OTY1NTMxODlmMmZhMzc4MWU=.mp4"
},
"priceUnit": "BZD",
"purchaseCostUnit": "BZD",
"weightUnit": "KG",
"dimensionUnit": "cm",
"details": "%3Cp%3E%E5%9B%BE%E6%96%87%E8%AF%A6%E6%83%85%3C%2Fp%3E",
"isMultiAttribute": true,
"brandName": "南极人",
"categoryName1": "2",
"spuAttributes":
[
{
"name": "YF_TEST",
"attributeValues":
[
{
"value": "测试1",
"name": "YF_TEST",
"sort": 1
},
{
"value": "测试3",
"sort": 2
}
]
},
{
"name": "口味",
"attributeValues":
[
{
"value": "柠檬味",
"sort": 1
},
{
"value": "蓝莓味",
"picUrl": null,
"sort": 2
}
]
}
],
"skus":
[
{
"skuBindMode": "CREATE",
"attributeValueList":
[
"测试1",
"柠檬味"
],
"sku": "YF_20261029_02",
"title": "YF_20261029_02",
"sort": 1,
"priceControlConfig":
{
"selfConfig":
{
"enabled": true,
"priceMode": "UNIFIED",
"defaultMinPrice": 100,
"defaultCurrency": "USD",
"countryRules":
{
"countries":
[
{
"countryCode": "US",
"currency": "USD",
"minPrice": 100
}
],
"defaultCountryRule":
{
"enabled": true,
"minPrice": 11,
"currency": "BZD"
}
}
},
"distributionConfig":
{
"enabled": true,
"priceMode": "UNIFIED",
"defaultMinPrice": 200,
"defaultCurrency": "BZD"
}
}
},
{
"skuBindMode": "LINK",
"picUrl": null,
"attributeValueList":
[
"测试3",
"蓝莓味"
],
"sku": "YF_20261026_04",
"purchaseCost": 2,
"price": 3,
"weight": 4,
"length": 3,
"width": 4,
"height": 100,
"title": "YF_20261026_04",
"sort": 2,
"priceControlConfig":
{
"selfConfig":
{
"enabled": true,
"priceMode": "UNIFIED",
"defaultMinPrice": 200,
"defaultCurrency": "USD",
"countryRules":
{
"countries":
[
{
"countryCode": "US",
"currency": "USD",
"minPrice": 100
}
],
"defaultCountryRule":
{
"enabled": true,
"minPrice": 11,
"currency": "BZD"
}
}
},
"distributionConfig":
{
"enabled": true,
"priceMode": "UNIFIED",
"defaultMinPrice": 200,
"defaultCurrency": "BZD"
}
}
}
]
}
返回示例
成功:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\"}"
}
业务失败(SPU编码必填):
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"errorCode\":\"spu.number.repeat\",\"errorMsg\":\"SPU编码必填\",\"notSuccess\":true,\"state\":\"failure\"}"
}
协议失败(签名错误):
{
"state": "failure",
"errorCode": "SIGNATURE_ERROR",
"errorMsg": "签名错误"
}
以上示例省略可选的排障字段,错误文案仅作示意。
1.9.3. 查询系统SPU编码接口
SERVICE_TYPE
QUERY_SPU_CODE
根据查询查询条件查询SPU编码列表,如需要SPU详情,则需调用SPU详情接口查询
请求参数
以下参数均位于 bizParam 中。
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| page | Y | int | 1 | 页码,从1开始 |
| pageSize | Y | int | 100 | 每页返回数据量大小,最大200 |
| titleList | N | List |
["spu名称"] | SPU的名称列表 |
| updateTimeFrom | N | String | 2026-01-01 00:00:00 | 更新时间开始,开始时间和结束时间同时传入时,区间为左闭右开,如果只传入开始时间或者只传入结束时间,那么则是闭区间 |
| updateTimeTo | N | String | 2026-02-01 00:00:00 | 更新时间结束,开始时间和结束时间同时传入时,区间为左闭右开,如果只传入开始时间或者只传入结束时间,那么则是闭区间 |
返回参数
接口采用两层响应,bizContent 为 JSON 字符串,需再次解析。外层成功仅表示协议处理成功;判断创建是否成功还需检查 bizContent.state。
外层响应
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | success / failure |
| errorCode | Y | String | SIGNATURE_ERROR | 协议错误码,成功时为空字符串 |
| errorMsg | Y | String | 签名错误 | 协议错误信息,成功时为空字符串 |
| bizContent | N | String | 见返回示例 | 业务响应 JSON 字符串;协议失败时可能不返回 |
| requestId | N | String | 请求标识,以实际响应为准 |
业务响应(解析 bizContent 后)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | 创建结果:success / failure |
| notSuccess | Y | Boolean | false | 是否失败 |
| errorCode | N | String | spu.number.repeat | 业务错误码,失败时返回 |
| errorMsg | N | String | SPU编码重复 | 业务错误信息,失败时返回,文案随语言设置变化 |
| args | N | List | 错误参数,按实际响应返回 | |
| extraData | N | List | 部分业务失败的附加信息 | |
| traceId | N | String | 排障标识 | |
| result | Y | List | 只返回spu编码,具体结看看返回示例 |
成功时不返回 result、SPU ID 或 SKU 列表。重复调用相同 SPU 编码不会更新原商品,也不保证幂等成功。
请求示例
以下 bizParam 示例中,品牌、分类须预先存在,已有 SKU 须满足上述关联条件:
{"page":1,"pageSize":10,"updateTimeFrom":"2026-10-29 00:00:00","updateTimeTo":"2026-10-30 23:59:00","titleList":["YF_20261026_011"]}
返回示例
成功:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"result\":[{\"spu\":\"YF_20261026_01\"}],\"state\":\"success\",\"total\":1,\"traceId\":\"a92f7e5ef3a142af946ac72ae6dca7cc\"}",
"requestId": "f1c3fcd9-9dce-4e5e-a46b-856c55fe6152"
}
1.9.4. 查询系统SPU详情接口
SERVICE_TYPE
QUERY_SPU_INFO
请求方式为 POST,请求地址为 /api/v1/spu。按 SPU 编码批量查询应用所属客户的 SPU 详情,同时返回品牌、分类、规格属性、关联 SKU 及 SKU 控价配置。
请求参数
以下参数位于 bizParam 中;公共表单参数沿用 appId、serviceType、bizParam、timestamp、sign。
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| spuList | Y | List<String> | ["OPEN-SPU-001","OPEN-SPU-002"] | SPU 编码列表,不能为空,单次传入 1~200 项 |
- 本接口不分页,无需传入
page、pageSize;超过 200 项时请分批调用。 - 仅返回当前应用所属客户下查询到的 SPU,不存在或不属于当前客户的编码不返回占位数据;全部未命中时成功返回空列表。
- 返回顺序不保证与传入编码顺序一致,请通过
spu字段匹配结果。
返回参数
接口采用两层响应,bizContent 为 JSON 字符串,需再次解析。外层成功表示协议处理成功;查询是否成功还需检查 bizContent.state。
外层响应
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | success / failure |
| errorCode | Y | String | 协议错误码,成功时为空字符串 | |
| errorMsg | Y | String | 协议错误信息,成功时为空字符串 | |
| bizContent | N | String | 见返回示例 | 业务响应 JSON 字符串;协议失败时可能不返回 |
| requestId | N | String | 请求标识,以实际响应为准 |
业务响应(解析 bizContent 后)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| state | Y | String | success | 查询结果:success / failure |
| notSuccess | Y | Boolean | false | 是否失败 |
| result | 成功时 | List<SpuInfo> | 见下表 | SPU 详情列表,未命中时为 [] |
| errorCode | N | String | data.input.error.msg | 业务错误码,失败时返回 |
| errorMsg | N | String | 业务错误信息,文案随语言设置变化 | |
| args | N | List | 错误参数,按实际响应返回 | |
| extraData | N | List | 部分业务失败的附加信息 | |
| traceId | N | String | 排障标识 |
本接口不返回分页总数 total 或 hasMore。以下可选字段未设置时可能不返回。
SpuInfo(SPU详情)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| spu | Y | String | OPEN-SPU-001 | SPU 编码 |
| title | Y | String | 基础款上衣 | SPU 名称 |
| picUrls | Y | List<String> | [] | 图片链接列表 |
| brandName | N | String | 示例品牌 | 品牌名称 |
| categoryName1 | N | String | 服装 | 一级分类名称 |
| categoryName2 | N | String | 上衣 | 二级分类名称 |
| categoryName3 | N | String | T恤 | 三级分类名称 |
| details | N | String | 商品图文详情 | |
| isMultiAttribute | N | Boolean | true | 是否多规格商品 |
| priceUnit | N | String | USD | 默认售价币种 |
| purchaseCostUnit | N | String | CNY | 采购成本币种 |
| dimensionUnit | N | String | cm | 尺寸单位 |
| weightUnit | N | String | KG | 重量单位 |
| video | N | VideoInfo | 见下表 | 商品视频 |
| spuAttributes | Y | List<AttributeInfo> | 见下表 | SPU 属性及可选值,无数据时为 [] |
| skus | Y | List<SkuInfo> | 见下表 | 关联 SKU 信息,无关联 SKU 时为 [] |
VideoInfo(商品视频)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| videoName | N | String | 视频名称 |
| videoUrl | N | String | 视频链接 |
AttributeInfo(SPU属性)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | N | String | 颜色 | 属性名称 |
| values | N | List<String> | ["红色","蓝色"] | 可选属性值 |
| attributeValues | Y | List<AttributeValueInfo> | 见下表 | 属性值详情,无数据时为 [] |
AttributeValueInfo(SPU属性值)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | N | String | 颜色 | 属性名称 |
| value | N | String | 红色 | 属性值 |
| related | N | Boolean | true | 是否已关联 SKU |
| picUrl | N | String | 属性值图片链接 | |
| sort | N | Integer | 1 | 属性值排序 |
SkuInfo(关联SKU信息)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| sku | Y | String | OPEN-SKU-RED | SKU 编码 |
| title | Y | String | 基础款上衣-红色 | SKU 名称 |
| picUrl | N | String | SKU 图片链接 | |
| categoryName1 | N | String | 服装 | 一级分类名称 |
| categoryName2 | N | String | 上衣 | 二级分类名称 |
| categoryName3 | N | String | T恤 | 三级分类名称 |
| description | N | String | 商品描述 | |
| descriptionEn | N | String | 英文商品描述 | |
| price | N | Decimal | 19.90 | 默认售价 |
| priceUnit | N | String | USD | 默认售价币种 |
| purchaseCost | N | Decimal | 10.00 | 采购成本 |
| purchaseCostUnit | N | String | CNY | 采购成本币种 |
| length | N | Decimal | 30 | 长度,单位取本行 dimensionUnit |
| width | N | Decimal | 20 | 宽度,单位取本行 dimensionUnit |
| height | N | Decimal | 2 | 高度,单位取本行 dimensionUnit |
| dimensionUnit | N | String | cm | 尺寸单位 |
| weight | N | Decimal | 0.2 | 重量,单位取本行 weightUnit |
| weightUnit | N | String | KG | 重量单位 |
| attributeValues | Y | List<SkuAttributeInfo> | 见下表 | SKU 规格属性,无数据时为 [] |
| priceControlConfig | N | PriceControlInfo | 见下表 | 自营及分销控价配置 |
SkuAttributeInfo(SKU规格属性)
| 参数 | 是否必须 | 类型 | 示例 | 备注 |
|---|---|---|---|---|
| name | N | String | 颜色 | 属性名称 |
| value | N | String | 红色 | 属性值 |
PriceControlInfo(SKU控价配置)
| 参数 | 是否必须 | 类型 | 备注 |
|---|---|---|---|
| selfConfig | N | RuleConfig | 自营控价配置 |
| distributionConfig | N | RuleConfig | 分销控价配置 |
RuleConfig、CountryRuleSet、CountryRule、DefaultCountryRule 的字段结构与本章“创建系统SPU接口”中的同名结构一致。查询返回已保存的配置:enabled 表示是否启用,priceMode 为 UNIFIED(统一控价)或 BY_COUNTRY(分国家控价),defaultMinPrice / defaultCurrency 为统一最低限价及币种,countryRules 为国家规则及其他国家的默认规则;未设置的字段可能不返回。
请求示例
bizParam:
{
"spuList": ["OPEN-SPU-001", "OPEN-SPU-002"]
}
完整表单请求:
curl --location --request POST 'https://gerp-test1.800best.com/api/v1/spu' \
--form-string 'appId=TEST' \
--form-string 'serviceType=QUERY_SPU_INFO' \
--form-string 'bizParam={"spuList":["OPEN-SPU-001","OPEN-SPU-002"]}' \
--form-string 'timestamp=1793059200000' \
--form-string 'sign=替换为按本次完整参数计算的签名'
示例时间戳和签名须替换为实际值。bizParam 是 JSON 字符串,不要额外增加包裹双引号。
返回示例
成功(示例中仅命中一个SPU):
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"result\":[{\"brandName\":\"JJ专属品牌\",\"categoryName1\":\"111\",\"categoryName2\":\"222\",\"categoryName3\":\"333\",\"details\":\"%3Cp%3E%E5%9B%BE%E6%96%87%E8%AF%A6%E6%83%85%3C/p%3E%20%0A%3Cfigure%20class=%22image%22%3E%20%0A%20%3Cimg%20src=%22https://qianyierp-test.oss.aliyuncs.com/attachment/20261103/image/NjU4ZjU5MzFhN2NmYmM5ZTE4OGQ0YTdiZjZjYjI5MmU.jpg%22%20width=%22432%22%20height=%22268%22%3E%20%0A%3C/figure%3E\",\"dimensionUnit\":\"cm\",\"isMultiAttribute\":true,\"picUrls\":[\"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png\"],\"priceUnit\":\"BZD\",\"purchaseCostUnit\":\"BZD\",\"skus\":[{\"attributeValues\":[{\"name\":\"YF_TEST\",\"value\":\"测试3\"},{\"name\":\"口味\",\"value\":\"蓝莓味\"}],\"categoryName1\":\"111\",\"categoryName2\":\"222\",\"categoryName3\":\"333\",\"dimensionUnit\":\"cm\",\"height\":100.0,\"length\":3.0,\"picUrl\":\"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png\",\"price\":3.0000,\"priceControlConfig\":{\"distributionConfig\":{\"countryRules\":{\"countries\":[],\"defaultCountryRule\":{\"enabled\":false}},\"defaultCurrency\":\"BZD\",\"defaultMinPrice\":200.0000,\"enabled\":true,\"priceMode\":\"UNIFIED\"},\"selfConfig\":{\"countryRules\":{\"countries\":[],\"defaultCountryRule\":{\"enabled\":false}},\"defaultCurrency\":\"USD\",\"defaultMinPrice\":200.0000,\"enabled\":true,\"priceMode\":\"UNIFIED\"}},\"priceUnit\":\"BZD\",\"purchaseCost\":2.0000,\"purchaseCostUnit\":\"BZD\",\"sku\":\"YF_20261026_04\",\"title\":\"YF_20261026_04\",\"weight\":4.0,\"weightUnit\":\"KG\",\"width\":4.0}],\"spu\":\"YF_20261026_01\",\"spuAttributes\":[{\"attributeValues\":[{\"name\":\"YF_TEST\",\"picUrl\":\"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png\",\"sort\":1,\"value\":\"测试1\"},{\"name\":\"YF_TEST\",\"picUrl\":\"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/image/NmJiYmY2MGIxNTAyZWE2YjRhODk5YTYwNzE4MzY0NDU.png\",\"sort\":2,\"value\":\"测试3\"}],\"name\":\"YF_TEST\",\"values\":[\"测试1\",\"测试3\"]},{\"attributeValues\":[{\"name\":\"口味\",\"sort\":1,\"value\":\"柠檬味\"},{\"name\":\"口味\",\"sort\":2,\"value\":\"蓝莓味\"}],\"name\":\"口味\",\"values\":[\"柠檬味\",\"蓝莓味\"]}],\"title\":\"YF_20261026_011\",\"video\":{\"videoName\":\"NzVkMTE0NDNhYzc5YTQ2OTY1NTMxODlmMmZhMzc4MWU=.mp4\",\"videoUrl\":\"https://qianyierp-test.oss.aliyuncs.com/attachment/20261026/video/ZjMyNWMxZmRhNmYwZmI0NDg5ZmYwODk4Y2Q2Y2RmM2M.mp4\"},\"weightUnit\":\"KG\"}],\"state\":\"success\",\"traceId\":\"c920de9db71e42adb0f3950b58b9eb7c\"}",
"requestId": "edc11513-1f1c-462c-8844-2eaab89e8a07"
}
全部未命中:
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"notSuccess\":false,\"state\":\"success\",\"result\":[]}"
}
业务失败(编码列表为空或超过200项):
{
"state": "success",
"errorCode": "",
"errorMsg": "",
"bizContent": "{\"errorCode\":\"data.input.error.msg\",\"errorMsg\":\"输入参数不正确:spuList.size: 1-200\",\"notSuccess\":true,\"state\":\"failure\"}"
}
以上示例省略可选排障字段,错误文案仅作示意。签名、授权及限流等协议失败沿用本章“创建系统SPU接口”的错误码说明。