配置项
| HTTP请求地址 | |
|---|---|
| app_key | |
| secret | |
| access_token | |
| jwt |
登录模块
登录获取接口token
登录获取接口token
接口名(name):loginApi.login
版本号(version):
文件上传
文件上传,不确定数量
接口名(name):file.upload
版本号(version):
物料品牌
根据品牌名称分页查询品牌信息
根据品牌名称分页查询品牌信息
接口名(name):brand.name
版本号(version):
公共API
查询物料分类列表
查询物料分类列表
接口名(name):cate.getCateList
版本号(version):
根据分类名称精准匹配分类信息
根据分类名称精准匹配分类信息
接口名(name):cate.getGoodsCateByName
版本号(version):
根据分类id查询sku物料属性
根据分类id查询sku物料属性
接口名(name):cate.querySkuAttrByCateId
版本号(version):
请求参数/
数据模型
返回结果/数据模型
| 名称 | 类型 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | string | 状态值,"0"表示成功,其它都是失败 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| msg | string | 错误信息,出错时显示 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | 返回的数据,没有则返回{}
|
根据分类id查询spu物料属性
根据分类id查询spu物料属性
接口名(name):cate.querySpuAttrByCateId
版本号(version):
请求参数/
数据模型
返回结果/数据模型
| 名称 | 类型 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | string | 状态值,"0"表示成功,其它都是失败 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| msg | string | 错误信息,出错时显示 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | 返回的数据,没有则返回{}
|
根据分类id查询相关下载属性
根据分类id查询相关下载属性
接口名(name):cate.querySpuFileAttrByCateId
版本号(version):
请求参数/
数据模型
返回结果/数据模型
| 名称 | 类型 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | string | 状态值,"0"表示成功,其它都是失败 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| msg | string | 错误信息,出错时显示 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | 返回的数据,没有则返回{}
|
字典
计量单位字典
计量单位字典
接口名(name):dict.pub_goods_unit
版本号(version):
货币单位字典
货币单位字典
接口名(name):dict.unit
版本号(version):
物料材质
查询供应商对应的材质库材质信息
查询供应商对应的材质库材质信息
接口名(name):goods.materialComponentInfo
版本号(version):
请求参数/
数据模型
返回结果/数据模型
| 名称 | 类型 | 描述 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | string | 状态值,"0"表示成功,其它都是失败 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| msg | string | 错误信息,出错时显示 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | 返回的数据,没有则返回{}
|
物料模块
新增单个sku的信息
新增单个sku的信息
接口名(name):xizhaoGoodsSku.addSingleSku
版本号(version):
删除单个sku的信息
删除单个sku的信息
接口名(name):xizhaoGoodsSku.deleteSingleSku
版本号(version):
查询单个sku
查询单个sku
接口名(name):xizhaoGoodsSku.querySingleSku
版本号(version):
请求参数/
数据模型
返回结果/数据模型
| 名称 | 类型 | 描述 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | string | 状态值,"0"表示成功,其它都是失败 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| msg | string | 错误信息,出错时显示 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | 返回的数据,没有则返回{}
|
更新单个sku的信息
更新单个sku的信息
接口名(name):xizhaoGoodsSku.updateSingleSku
版本号(version):
分页查询spu列表
分页查询spu列表
接口名(name):xizhaoGoodsSpu.querySpuPageList
版本号(version):
添加spu
添加spu
接口名(name):xizhaoGoodsSpu.saveSpu
版本号(version):
修改spu
修改spu
接口名(name):xizhaoGoodsSpu.updateSpu
版本号(version):
修改spu上线状态
修改spu上线状态
接口名(name):xizhaoGoodsSpu.updateSpuOnlineState
版本号(version):
撤回物料审核
撤回物料审核
接口名(name):xizhaoGoodsSpu.withDrawSpu
版本号(version):
库存模块
查询库存
查询库存
接口名(name):XizhaoGoodsSku.getSkuStock
版本号(version):
库存增减
库存增减
接口名(name):XizhaoGoodsSku.insSkuStock
版本号(version):
修改库存
修改库存
接口名(name):XizhaoGoodsSku.syncSingleSkuStock
版本号(version):
附录
签名算法
签名算法描述如下:
1.将请求参数按参数名升序排序;
2.按请求参数名及参数值相互连接组成一个字符串:<paramName1><paramValue1><paramName2><paramValue2>...;
3.将应用密钥分别添加到以上请求参数串的头部和尾部:<secret><请求参数字符串><secret>;
4.对该字符串进行MD5(全部大写),MD5后的字符串即是这些请求参数对应的签名;
5.该签名值使用sign参数一起和其它请求参数一起发送给服务开放平台。
伪代码:
Map<String,Object> paramsMap = new ...; // 参数
Set<String> keySet = paramsMap.keySet();
List<String> paramNames = new ArrayList<String>(keySet);
// 1.
Collections.sort(paramNames);
StringBuilder paramNameValue = new StringBuilder();
// 2.
for (String paramName : paramNames) {
paramNameValue.append(paramName).append(paramsMap.get(paramName));
}
// 3.
String source = secret + paramNameValue.toString() + secret;
// 4.
String sign = md5(source);
// 5.
paramsMap.put("sign",sign);
请求示例
Java版本:import java.io.IOException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import junit.framework.TestCase;
public class PostTest extends TestCase {
@Test
public void testPost() throws IOException {
String appKey = "test";
String secret = "123456";
// 业务参数
Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put("goodsName", "iphoneX");
String json = JSON.toJSONString(jsonMap);
json = URLEncoder.encode(json, "utf-8");
// 系统参数
Map<String, Object> param = new HashMap<String, Object>();
param.put("name", "goods.get");
param.put("app_key", appKey);
param.put("data", json);
param.put("timestamp", getTime());
param.put("version", "");
param.put("access_token", "");
String sign = buildSign(param, secret);
param.put("sign", sign);
/*
// 最终请求数据
{
"sign": "2AE534A15AACE112EE43B9CCF6BD4383",
"timestamp": "2018-03-21 12:57:30",
"name": "goods.get",
"data": "%7B%22goodsName%22%3A%22iphoneX%22%7D",
"app_key": "test",
"version": ""
}
*/
System.out.println("=====请求数据=====");
String postJson = JSON.toJSONString(param);
System.out.println(postJson);
// String resp = HttpUtil.post(postJson); // 发送请求
/*
响应结果:
{
"code":"0",
"data":{
"pageIndex":1,
"pageSize":10,
"rows":[
{
"goods_name":"iPhoneX",
"id":1,
"price":8000
},
{
"goods_name":"三星",
"id":2,
"price":7000
}
],
"total":100
}
}
*/
}
/**
* 构建签名
*
* @param paramsMap
* 参数
* @param secret
* 密钥
* @return
* @throws IOException
*/
public static String buildSign(Map<String, ?> paramsMap, String secret) throws IOException {
Set<String> keySet = paramsMap.keySet();
List<String> paramNames = new ArrayList<String>(keySet);
Collections.sort(paramNames);
StringBuilder paramNameValue = new StringBuilder();
for (String paramName : paramNames) {
paramNameValue.append(paramName).append(paramsMap.get(paramName));
}
String source = secret + paramNameValue.toString() + secret;
return md5(source);
}
/**
* 生成md5,全部大写
*
* @param message
* @return
*/
public static String md5(String message) {
try {
// 1 创建一个提供信息摘要算法的对象,初始化为md5算法对象
MessageDigest md = MessageDigest.getInstance("MD5");
// 2 将消息变成byte数组
byte[] input = message.getBytes();
// 3 计算后获得字节数组,这就是那128位了
byte[] buff = md.digest(input);
// 4 把数组每一字节(一个字节占八位)换成16进制连成md5字符串
return byte2hex(buff);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 二进制转十六进制字符串
*
* @param bytes
* @return
*/
private static String byte2hex(byte[] bytes) {
StringBuilder sign = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(bytes[i] & 0xFF);
if (hex.length() == 1) {
sign.append("0");
}
sign.append(hex.toUpperCase());
}
return sign.toString();
}
public String getTime() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
}
JavaScript版本:jssdk下载