WMS_API

WMS_API

开通WMS企业域时,系统会分配一个对接账号及密钥:
uName:接入者唯一标识
uToken:接入者的密钥,用于签名
测试环境:https://wmsdev.boudata.com

1、接收同步SKU信息

接口地址:https://wmsdev.boudata.com/tss/wms/edi/sku

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
paramsJSON字符串 sku数组的JSON格式数据,例:
[ {"code": "001", "name": "xxx1", "barcode": "001"......}, {"code": "002", "name": "xxx2", "barcode": "002"......}, ...... ]
具体见下面sku字段说明
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳,有效期3分钟

sku字段说明:

名称编码类型必填示例
货品编码code字符串要求唯一
货品名称name字符串
货品条码barcode字符串
货主owner字符串货主编码或名称
规格(型号)guige字符串600ml/瓶
包装单位uom字符串
大类category字符串
品牌brand字符串
进价price数字
售价price2数字
保质期shelflife数字
安全库存safety_qty数字
ABC分类abc字符串
自定义1udf1字符串
自定义2udf2字符串
自定义3udf3字符串
自定义4udf4字符串
备注remark字符串

示例:

响应结果:

{ "code": 100, "message": "success" }

2、接收入库通知单

接口地址:https://wmsdev.boudata.com/tss/wms/edi/asn

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
paramsJSON字符串JSON字符串,具体见下面params格式说明
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳,有效期3分钟

params格式说明:

名称编码类型必填示例
入库单号code字符串ASN191027001
仓库warehouse字符串仓库编码或名称,为空则默认取第一个仓库
货主owner字符串货主编码或名称
下单日期asnday字符串2019-10-27
入库类型type字符串普通入库
供货方supplier字符串18767166333
备注remark字符串
自定义1udf1字符串
自定义2udf2字符串
自定义3udf3字符串
自定义4udf4字符串
入库明细itemsjson参考下面表格出库详情

入库明细(items)字段说明:

名称编码类型必填示例
货品编号code字符串货品编码,非条码
货品名称name字符串
入库数量qty数字要求为数字,支持小数
单价price数字
金额money数字
生产日期createdate日期yyyy-MM-dd
过期日期expiredate日期yyyy-MM-dd
货品状态invstatus字符串
装箱量lotatt02字符串

示例:

响应结果:

{ "code": 100, "message": "success" }

3、接收出库通知单

接口地址:https://wmsdev.boudata.com/tss/wms/edi/order

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
paramsJSON字符串JSON字符串,具体见下面params格式说明
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳,有效期3分钟

params格式说明:

名称编码类型必填示例
出库单号code字符串O191027001
仓库warehouse字符串仓库编码或名称,为空则默认取第一个仓库
货主owner字符串货主编码或名称
下单日期orderday字符串2019-10-27
出库类型type字符串销售出库
收件人d_receiver字符串李四
收件人电话d_mobile字符串18767166333
收件省份d_province字符串江苏省
收件市d_city字符串扬州市
收件区d_district字符串白鹭区
收件地址d_addr字符串xx小区x幢
备注remark字符串
自定义1udf1字符串
自定义2udf2字符串
自定义3udf3字符串
自定义4udf4字符串
出库明细itemsjson参考下面表格出库详情

出库明细(items)字段说明:

名称编码类型必填示例
货品编号code字符串货品编码,非条码
货品名称name字符串
出库数量qty数字要求为数字,支持小数
单价price数字
金额money数字
货品状态invstatus字符串
批号lotatt01字符串
装箱量lotatt02字符串

示例:

响应结果:

{ "code": 100, "message": "success" }

4、接收外部取消出库指令

接口地址:https://wmsdev.boudata.com/tss/wms/edi/order/cancel

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
code出库单号
reason取消原因
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳,有效期3分钟

示例:

响应结果:

{ "code": 100, "message": "success" }

5、接收外部取消入库指令

接口地址:https://wmsdev.boudata.com/tss/wms/edi/asn/cancel

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
code出库单号
reason取消原因
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳,有效期3分钟

示例:

响应结果:

{ "code": 100, "message": "success" }

6、反馈作业结果

反馈方式:接收方提供结果接收接口地址,维护在WMS系统中,WMS推送反馈结果后,接收方通过WMS提供的uToken验签

请求方式:POST

请求编码:UTF-8

请求参数:

名称说明备注
uName对接账号
timestamp当前时间戳格式:2018-12-12 12:12:12
uSign签名MD5(uToken + timestamp),其中uToken为秘钥;timestamp为时间戳
method字符串asn.confirm:入库单反馈;order.confirm:出库单反馈
paramsJSON字符串JSON字符串,具体见下面params格式说明

入库反馈params格式说明:

名称编码类型必填示例
入库单号code字符串ASN191027001
入库日期indate日期yyyy-MM-dd HH:mm:ss
货主owner字符串货主编码
仓库warehouse字符串仓库编码
入库状态status字符串已完成、关闭
反馈信息msg字符串当入库失败时,会将入库单中的备注返回
入库明细itemsjson返回json数组

入库明细(items)字段说明:

名称编码类型必填示例
IDid数字明细唯一ID
货物名称skuname字符串sku名称
货物编码skucode字符串sku编码
货物条码barcode字符串sku条码
货物数量qty数字理论入库数量
入库数量qtyActual数字实际入库数量
生产日期createdate日期yyyy-MM-dd HH:mm:ss
过期日期expiredate日期yyyy-MM-dd HH:mm:ss

出库反馈params格式说明:

名称编码类型必填示例
出库单号code字符串O191027001
出库日期outdate日期yyyy-MM-dd HH:mm:ss
货主owner字符串货主编码
仓库warehouse字符串仓库编码
入库状态status字符串已完成、关闭
承运商名称carrier字符串顺丰速运
运单号logisticscodeJSON数组运单号可能会有多个,["ZTO123","ZTO124"]
反馈信息msg字符串当出库失败时,会将出库单中的备注返回

响应结果:当接收方成功接收到信息,需要返回成功响应,code需要为100,WMS接收到成功响应后,代表此单反馈完成;若接收方返回的code非100或者无返回信息,则代表接收失败,WMS会定时重试,响应示例如下

成功:{ "code": 100, "message": "success" }
失败:{ "code": 500, "message": "此处可返回失败原因" }

Java调用示例:


  /* 参数大致格式:
  { code: 'xxx', warehouse: '仓库编码或名称', owner: '货主编码或名称', orderday: '2020-02-02', d_receiver, d_mobile, d_addr, udfx, remark,
     items: [
        {code: 'sxx1', qty: 100, lotattx: 'xxx'....},
        {code: 'sxx2', qty: 200, lotattx: 'xxx'....}
     ]
  }
  */
  public void pushOrder() {
    JSONObject ov = new JSONObject();
    ov.put("code", "O191027001");
    ov.put("warehouse", "W-001");
    ov.put("owner", "OW-001");
    ov.put("orderday", "2019-10-27 22:13:46");
    ov.put("d_receiver", "李四");
    ov.put("d_mobile", "18767166333");
    ov.put("d_province", "北京市");
    ov.put("d_city", "北京市");
    ov.put("d_district", "东城区");
    ov.put("d_addr", "中关村119号");
    ov.put("remark", "请尽快安排出库");

    List items = new ArrayList();

    JSONObject item1 = new JSONObject();
    item1.put("code", "S001");
    item1.put("name", "农夫山泉(560ml*24)");
    item1.put("qty", 96);
    items.add(item1);

    JSONObject item2 = new JSONObject();
    item2.put("code", "S001");
    item2.put("name", "鸿茅药酒(360ml*16)");
    item2.put("qty", 32);
    items.add(item2);

    ov.put("items", items);

    PostMethod postMethod = new PostMethod("https://wmsdev.boudata.com/tss/wms/edi/order");
    postMethod.setRequestHeader("Content-Type", "application/json");
    postMethod.removeRequestHeader("referer");

    postMethod.setParameter("params", ov.toString());
    postMethod.setParameter("uName", uName);
    String time = DateUtil.formatCare2Second(new Date());
    postMethod.setParameter("timestamp", time);
    postMethod.setParameter("uSign", InfoEncoder.string2MD5(uToken + time));  // 必要工具:MD5加密方法,此处为自有方法 InfoEncoder.string2MD5

    HttpClient httpClient = new HttpClient();
    httpClient.executeMethod(postMethod);
    String responseBody = postMethod.getResponseBodyAsString();
    System.out.println(responseBody);
  }

以上示例代码依赖的jar包:
  <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20180130</version>
  </dependency>
  <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1</version>
   </dependency>

响应结果:

响应code及含义:
100  成功
101  参数错误
102  重复请求
503  签名为空
504  时间戳无效
505  验签失败
506  令牌验证失败
555  接口内部异常