Commit 7b6f5519cb07146d2534752762c1677bde3acd6d

Authored by 王富国
1 parent 7f03dbab
Exists in master

fix: 修改订单接口文档

Showing 2 changed files with 1111 additions and 897 deletions   Show diff stats
order/2023022201/order.md 0 → 100644
@@ -0,0 +1,1111 @@ @@ -0,0 +1,1111 @@
  1 +
  2 +
  3 +### 则一订单对接API
  4 +
  5 +则一提供了不同规范的API,调用则一订单服务端API前,需了解开发前须知及调用流程。本文提供了调用则一订单服务端API示例,供开发者参考。
  6 +
  7 +#### 白名单
  8 +
  9 +则一服务端API接口访问有IP白名单限制,需要接口调用方提供调用API的服务器IP地址。
  10 +
  11 +#### 数据加签
  12 +
  13 +采用md5(32位小写)算法生成签名
  14 +appKey(则一提供) + appSecret(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(请求数据)
  15 +
  16 +#### 数据加密
  17 +
  18 +数据加密采用AES算法
  19 +加密模式: CBC
  20 +填充方式:PKCS5Padding
  21 +偏移量:iv(则一提供)
  22 +加密内容:appKey(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(加密数据)
  23 +密钥: appSecret(则一提供)
  24 +输出:base64
  25 +字符集:utf-8
  26 +注:无敏感数据则无需加密
  27 +
  28 +#### 获取访问凭证
  29 +
  30 +##### 概述
  31 +
  32 +调用则一服务API时,都需要先获取对应权限类型的访问凭证accessToken。访问凭证(accessToken)是由则一权限系统颁发的,用来校验调用者的身份信息,确保调用者具有要执行的操作的权限。
  33 +**说明**: 在使用accessToken时,请注意:
  34 +
  35 +* accessToken的有效期默认为30天,有效期内重复获取会返回相同结果,过期后获取会返回新的accessToken。
  36 +* 开发者需要缓存accessToken,用于后续接口的调用。不能频繁调用获取accessToken接口,否则会受到频率拦截。
  37 +* 当调用业务API时,如果返回状态码为401,则说明accessToken不正确或已过期,这时需要重新获取accessToken后再调用对应的API。
  38 +
  39 +##### 接口信息
  40 +
  41 +###### 请求方式:
  42 +
  43 +post
  44 +
  45 +###### 请求地址:
  46 +
  47 +* 生产:https://gw.shjiuze.cn/auth-service-api/login/password
  48 +* 测试:https://test.shjiuze.cn/auth-service-api/login/password
  49 +
  50 +###### Body参数
  51 +
  52 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  53 +| -------- | ------ | ---- | ----------- | ---------------- |
  54 +| username | String | 是 | zhangsan | 用户名,则一提供 |
  55 +| password | String | 是 | password123 | 密码,则一提供 |
  56 +
  57 +###### 返回参数
  58 +
  59 +| 名称 | 类型 | 示例值 | 描述 |
  60 +| ------------------------------ | ---------- | -------------------------------- | -------------------------------------------------- |
  61 +| success | boolean | true | 成功标识: true 成功,false 失败 |
  62 +| businessException | boolean | false | 业务异常标识: true 业务异常,false 正常 |
  63 +| errorCode | String | 200 | 错误码: 200 业务异常,500 系统异常, 空表示无错误 |
  64 +| message | String | 订单号不能为空 | 错误信息,无错误则返回空 |
  65 +| result | ZYTokenDto | | accessToken结果数据 |
  66 +|     accessToken | String | 000626f15b4b41bba6fe56216a5d2f73 | accessToken |
  67 +|     expiresIn | Integer | 2060 | 有效期限单位秒,accessToken在2060秒后过期 |
  68 +|     tokenType | String | bearer | token类型 |
  69 +
  70 +##### 请求示例
  71 +
  72 +###### Http方式
  73 +
  74 +```http
  75 +POST /auth-service-api/login/password HTTP/1.1
  76 +Host:test.shjiuze.cn
  77 +Content-Type:application/json
  78 +
  79 +{
  80 + "username" : "zeyi",
  81 + "password" : "test1111"
  82 +}
  83 +```
  84 +
  85 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  86 +
  87 +```java
  88 +public class Sample {
  89 + public static void main(String[] args_) {
  90 + String appKey = "appkey";
  91 + String appSecret = "appSecret";
  92 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  93 + ZYTokenRequestDto zyTokenRequest = new ZYTokenRequestDto();
  94 + zyTokenRequest.setUsername("zeyi");
  95 + zyTokenRequest.setPassword("test1111");
  96 + String body = gson.toJson(zyTokenRequest);
  97 + HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + Constants.TOKEN_PATH, body);
  98 + if(httpResponseData == null) {
  99 + throw new TokenException("则一Token请求失败,返回为空!");
  100 + }
  101 + ZYResponse<ZYTokenDto> zyResponse = gson.fromJson(httpResponseData.getBody(), new TypeToken<ZYResponse<ZYTokenDto>>(){}.getType());
  102 + if(!Boolean.TRUE.equals(zyResponse.isSuccess())) {
  103 + throw new TokenException("则一Token请求返回失败!" + zyResponse.getMessage());
  104 + }
  105 + if(zyResponse.getResult() == null) {
  106 + throw new TokenException("则一Token请求返回失败,返回结果为空!" + zyResponse.getMessage());
  107 + }
  108 + if(StringUtils.isBlank(zyResponse.getResult().getAccessToken())) {
  109 + throw new TokenException("则一Token请求返回数据异常,AccessToken为空!" + zyResponse.getMessage());
  110 + }
  111 + // 结果 zyResponse.getResult();
  112 + }
  113 +}
  114 +```
  115 +
  116 +##### 返回示例
  117 +
  118 +```json
  119 +{
  120 + "success": true,
  121 + "businessException": false,
  122 + "errorCode": null,
  123 + "message": null,
  124 + "result": {
  125 + "accessToken": "64d7f367-609b-4f7d-a84d-a3d2a0b5ad85",
  126 + "expiresIn": 602105,
  127 + "tokenType": "bearer"
  128 + }
  129 +}
  130 +```
  131 +
  132 +#### 下单
  133 +
  134 +##### 接口信息
  135 +
  136 +###### 请求方式:
  137 +
  138 +post
  139 +
  140 +###### 请求地址:
  141 +
  142 +* 生产:https://gw.shjiuze.cn/oms-service-api/order/add
  143 +* 测试:https://test.shjiuze.cn/oms-service-api/order/add
  144 +
  145 +###### Headers参数
  146 +
  147 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  148 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  149 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  150 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  151 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  152 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  153 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  154 +
  155 +###### Body参数
  156 +
  157 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  158 +| ------------------------------------- | -------------------- | -------------------------- | ---------------- | ------------------------------------------------------------ |
  159 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  160 +| customerSn | String | 否 | 220101000001 | 客户委托单号 |
  161 +| placeOrderTime | Number | 是 | 1643251533306 | 下单时间,时间戳毫秒值 |
  162 +| loadTime | Number | 是 | 1643251533306 | 装货时间,时间戳毫秒值 |
  163 +| expectArrivalTime | Number | 否 | 1643251533306 | 期望送达时间,时间戳毫秒值 |
  164 +| receiptType | String | 否 | ELECTRON_TYPE | 回单类型:ELECTRON_TYPE/电子回单,PAPER_TYPE/纸质回单,NONE/无 |
  165 +| receiptNumber | Number | 否 | 1 | 回单张数 |
  166 +| receiptCode | String | 否 | A2022012602278 | 回单号 |
  167 +| payType | String | 否 | PAY_IN_CASH | 付款方式:PAY_IN_CASH/现付,PAY_ON_DELIVERY/到付,PAY_ARREARS/欠付,PAY_MONTH/月结,PAY_BACK/回付,PAY_MULTIPLE/多笔付,PAY_FREE/免费 |
  168 +| lineName | String | 否 | 上海-天津-北京 | 线路名称 |
  169 +| remark | String | 否 | 需要雨布和尾板 | 订单备注 |
  170 +| station | OrderStation[] | 是 | | 订单经停点 |
  171 +| &nbsp;&nbsp;&nbsp; stationId | String | 否 | 123abc | 站点id |
  172 +| &nbsp;&nbsp;&nbsp; stationName | String | 否 | 上海顺丰青浦站点 | 站点名称 |
  173 +| &nbsp;&nbsp;&nbsp; provinceCode | String | 否 | 310000 | 省份编号 |
  174 +| &nbsp;&nbsp;&nbsp; provinceName | String | 是 | 上海 | 省份名称 |
  175 +| &nbsp;&nbsp;&nbsp; cityCode | String | 否 | 310100 | 城市编号 |
  176 +| &nbsp;&nbsp;&nbsp; cityName | String | 是 | 上海市 | 城市名称 |
  177 +| &nbsp;&nbsp;&nbsp; areaCode | String | 否 | 310118 | 区域编号 |
  178 +| &nbsp;&nbsp;&nbsp; areaName | String | 是 | 青浦区 | 区域名称 |
  179 +| &nbsp;&nbsp;&nbsp; address | String | 是 | 纪鹤公路1988号 | 详细地址 |
  180 +| &nbsp;&nbsp;&nbsp; lat | String | 是 | 36.221825 | 纬度 |
  181 +| &nbsp;&nbsp;&nbsp; lng | String | 是 | 120.632908 | 经度 |
  182 +| &nbsp;&nbsp;&nbsp; contactName | String | 否 | 张三 | 联系人 |
  183 +| &nbsp;&nbsp;&nbsp; contactMobile | String | 否 | 18801000001 | 联系人电话 |
  184 +| &nbsp;&nbsp;&nbsp; loadFlag | String | 是 | true | 装货标识 |
  185 +| &nbsp;&nbsp;&nbsp; unloadFlag | String | 是 | false | 卸货标识 |
  186 +| &nbsp;&nbsp;&nbsp; expectArrivalTime | Number | 否 | 1643251533306 | 预计到达时间,时间戳毫秒值 |
  187 +| &nbsp;&nbsp;&nbsp;expectDepartTime | Number | 否 | 1643251533306 | 预计发车时间,时间戳毫秒值 |
  188 +| &nbsp;&nbsp;&nbsp; sort | Number | 否 | 1 | 经停点顺序,如果不传则默认按数组顺序 |
  189 +| goods | OrderGoods[] | 否 | | 订单货物信息 |
  190 +| &nbsp;&nbsp;&nbsp; barCode | String | 否 | 21616162626 | 商品条码 |
  191 +| &nbsp; &nbsp;&nbsp;skuId | String | 否 | 1223233536436 | 商品sku_id |
  192 +| &nbsp;&nbsp;&nbsp;&nbsp;name | String | 是 | 鞋子 | 货物名称 |
  193 +| &nbsp;&nbsp;&nbsp;&nbsp;packageType | String | 否 | | 包装规格 |
  194 +| &nbsp;&nbsp;&nbsp;&nbsp;piece | Number | 否 | 200 | 件数 |
  195 +| &nbsp;&nbsp;&nbsp;&nbsp;weight | Number | 否 | 200000 | 重量 |
  196 +| &nbsp;&nbsp;&nbsp;&nbsp;volume | Number | 否 | 50 | 体积 |
  197 +| addService | OrderAddService[] | 否 | | 增值服务 |
  198 +| &nbsp;&nbsp;&nbsp;&nbsp;serviceType | String | 否 | | 服务类型 |
  199 +| &nbsp;&nbsp;&nbsp;&nbsp;serviceName | String | 是 | 包装服务 | 服务名称 |
  200 +| &nbsp;&nbsp;&nbsp;&nbsp;serviceDemand | String | 否 | 纸箱包装 | 服务要求 |
  201 +| tags | OrderTag[] | 否 | | 订单标签 |
  202 +| &nbsp;tagName | String | 是 | 易碎物品 | 标签名称 |
  203 +| vehicleDemands | OrderVehicleDemand[] | 否 | | 车辆需求 |
  204 +| &nbsp;demandVanType | String | 是 | MOTOR_VAN | 需求厢型:MOTOR_VAN/厢车,GAOLAN_VAN/高栏,SLAB_VAN/平板,REFRIGERATOR_CAR/冷藏,IVECO/依维柯,JINBEI/金杯,MINI_VAN/小面包,ELSE_VAN/其他 |
  205 +| &nbsp;&nbsp;demandSpecification | String | 是 | 9.6 | 需求车型:2.7/3.8/4.2/6.8/7.6/9.6/11/12.5/13.5/15/16.5/17.5/19/21 |
  206 +| &nbsp;demandNumber | Number | 否 | 1 | 为空则默认1 |
  207 +| &nbsp;vehicleDemand | String | 否 | 车辆需要带雨布 | 车辆要求描述 |
  208 +
  209 +##### 请求示例
  210 +
  211 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  212 +
  213 +```java
  214 +public class Sample {
  215 + public static void main(String[] args_) {
  216 + String appKey = "appkey";
  217 + String appSecret = "appSecret";
  218 + String jsonData = "下单Body参数JSON数据";
  219 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  220 + HttpResponseData httpResponseData =
  221 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/add", "accessToken", jsonData);
  222 + if(httpResponseData == null) {
  223 + throw new BusinessException("则一请求失败,返回结果为空!");
  224 + }
  225 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  226 + //重新获取token再次请求
  227 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  228 + "/oms-service-api/order/add", "accessToken", jsonData);
  229 + }
  230 + }
  231 +}
  232 +```
  233 +
  234 +##### 返回示例
  235 +
  236 +```json
  237 +{
  238 + "success": true,
  239 + "businessException": false,
  240 + "errorCode": null,
  241 + "message": null,
  242 + "result": {
  243 + "code": "则一订单号",
  244 + "customerOrderCode": "客户订单号"
  245 + }
  246 +}
  247 +```
  248 +
  249 +#### 确认中标
  250 +
  251 +##### 接口信息
  252 +
  253 +###### 请求方式:
  254 +
  255 +post
  256 +
  257 +###### 请求地址:
  258 +
  259 +* 生产:https://gw.shjiuze.cn/oms-service-api/order/confirmBid
  260 +* 测试:https://test.shjiuze.cn/oms-service-api/order/confirmBid
  261 +
  262 +###### Headers参数
  263 +
  264 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  265 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  266 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  267 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  268 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  269 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  270 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  271 +
  272 +###### Body参数
  273 +
  274 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  275 +| ----------------- | ------ | -------------------------- | ------------ | ------------------------ |
  276 +| code | String | 是 | 220101000001 | 则一订单号 |
  277 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  278 +| confirmId | String | 是 | 220101000001 | 中标报价id |
  279 +| quotePrice | Number | 是 | 10000 | 中标价格 |
  280 +
  281 +##### 请求示例
  282 +
  283 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  284 +
  285 +```java
  286 +public class Sample {
  287 + public static void main(String[] args_) {
  288 + String appKey = "appkey";
  289 + String appSecret = "appSecret";
  290 + String jsonData = "确认中标Body参数JSON数据";
  291 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  292 + HttpResponseData httpResponseData =
  293 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/confirmBid", "accessToken", jsonData);
  294 + if(httpResponseData == null) {
  295 + throw new BusinessException("则一请求失败,返回结果为空!");
  296 + }
  297 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  298 + //重新获取token再次请求
  299 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  300 + "/oms-service-api/order/confirmBid", "accessToken", jsonData);
  301 + }
  302 + }
  303 +}
  304 +```
  305 +
  306 +##### 返回示例
  307 +
  308 +```json
  309 +{
  310 + "success": true,
  311 + "businessException": false,
  312 + "errorCode": null,
  313 + "message": null,
  314 + "result": {
  315 + "code": "则一订单号",
  316 + "customerOrderCode": "客户订单号",
  317 + "confirmId": "中标报价id",
  318 + "quotePrice": "中标价格"
  319 + }
  320 +}
  321 +```
  322 +
  323 +#### 确认运费接口
  324 +
  325 +##### 接口信息
  326 +
  327 +###### 概述
  328 +
  329 +调用该接口确认最终运费信息。
  330 +
  331 +###### 请求方式:
  332 +
  333 +post
  334 +
  335 +###### 请求地址:
  336 +
  337 +* 生产:https://gw.shjiuze.cn/oms-service-api/order/confirmFreight
  338 +* 测试:https://test.shjiuze.cn/oms-service-api/order/confirmFreight
  339 +
  340 +###### Headers参数
  341 +
  342 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  343 +| ------------- | ------ | ---- | -------------------------------- | ------------------------------------------------------------ |
  344 +| Authorization | String | 是 | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  345 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  346 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  347 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  348 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  349 +
  350 +###### Body参数
  351 +
  352 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  353 +| ----------------- | ------ | ---- | ------------ | ------------------------ |
  354 +| code | String | 是 | 220101000001 | 则一订单号 |
  355 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  356 +| totalBasePrice | Number | 是 | 10000 | 基础运费合计 |
  357 +| totalExtraPrice | Number | 是 | 500 | 超里程运费合计 |
  358 +| totalPrice | Number | 是 | 10500 | 运费总额 |
  359 +| attachment | String | 否 | 图片url | 附件 |
  360 +| freightList | Array | 是 | | 运费信息 |
  361 +| waybillCode | String | 是 | Y20220101001 | 运单号 |
  362 +| specification | String | 是 | 9.6 | 车型 |
  363 +| vanType | String | 是 | MOTOR_VAN | 箱型 |
  364 +| number | Number | 否 | 1 | 数量 |
  365 +| volume | Number | 否 | 30.256 | 方数 |
  366 +| weight | Number | 否 | 80 | 吨位 |
  367 +| baseUnit | String | 是 | car/kg/m³ | 基础单位 |
  368 +| baseUnitPrice | Number | 是 | 100 | 基础单价 |
  369 +| basePrice | Number | 是 | 10000 | 基础运费 |
  370 +| extraUnit | String | 否 | car/kg/m³ | 超里程单位 |
  371 +| extraUnitPrice | Number | 否 | 100 | 超里程单价 |
  372 +| extraPrice | Number | 否 | 1000 | 超里程运费 |
  373 +
  374 +##### 请求示例
  375 +
  376 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  377 +
  378 +```java
  379 +public class Sample {
  380 + public static void main(String[] args_) {
  381 + String appKey = "appkey";
  382 + String appSecret = "appSecret";
  383 + String jsonData = "确认运费Body参数JSON数据";
  384 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  385 + HttpResponseData httpResponseData =
  386 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/confirmFreight", "accessToken", jsonData);
  387 + if(httpResponseData == null) {
  388 + throw new BusinessException("则一请求失败,返回结果为空!");
  389 + }
  390 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  391 + //重新获取token再次请求
  392 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  393 + "/oms-service-api/order/confirmFreight", "accessToken", jsonData);
  394 + }
  395 + }
  396 +}
  397 +```
  398 +
  399 +
  400 +
  401 +##### 返回示例
  402 +
  403 +```json
  404 +{
  405 + "success": true,
  406 + "businessException": false,
  407 + "errorCode": null,
  408 + "message": null,
  409 + "result": {
  410 + "code": "则一订单号",
  411 + "customerOrderCode": "客户订单号"
  412 + }
  413 +}
  414 +```
  415 +
  416 +
  417 +
  418 +#### 取消订单
  419 +
  420 +##### 接口信息
  421 +
  422 +###### 请求方式:
  423 +
  424 +post
  425 +
  426 +###### 请求地址:
  427 +
  428 +* 生产:https://gw.shjiuze.cn/oms-service-api/order/cancel
  429 +* 测试:https://test.shjiuze.cn/oms-service-api/order/cancel
  430 +
  431 +###### Headers参数
  432 +
  433 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  434 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  435 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  436 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  437 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  438 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  439 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  440 +
  441 +###### Body参数
  442 +
  443 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  444 +| ----------------- | ------ | -------------------------- | ------------ | ------------------------ |
  445 +| code | String | 是 | 220101000001 | 则一订单号 |
  446 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  447 +| cancelRemark | String | 否 | 货量不足 | 取消原因 |
  448 +
  449 +##### 请求示例
  450 +
  451 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  452 +
  453 +```java
  454 +public class Sample {
  455 + public static void main(String[] args_) {
  456 + String appKey = "appkey";
  457 + String appSecret = "appSecret";
  458 + String jsonData = "取消订单Body参数JSON数据";
  459 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  460 + HttpResponseData httpResponseData =
  461 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/cancel", "accessToken", jsonData);
  462 + if(httpResponseData == null) {
  463 + throw new BusinessException("则一请求失败,返回结果为空!");
  464 + }
  465 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  466 + //重新获取token再次请求
  467 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  468 + "/oms-service-api/order/cancel", "accessToken", jsonData);
  469 + }
  470 + }
  471 +}
  472 +```
  473 +
  474 +##### 返回示例
  475 +
  476 +```json
  477 +{
  478 + "success": true,
  479 + "businessException": false,
  480 + "errorCode": null,
  481 + "message": null,
  482 + "result": {
  483 + "code": "则一订单号",
  484 + "customerOrderCode": "客户订单号"
  485 + }
  486 +}
  487 +```
  488 +
  489 +#### 查询车辆定位
  490 +
  491 +##### 接口信息
  492 +
  493 +###### 概述
  494 +
  495 +可以通过该接口查询车辆当前位置,该接口为收费接口。
  496 +
  497 +###### 请求方式:
  498 +
  499 +post
  500 +
  501 +###### 请求地址:
  502 +
  503 +* 生产:https://gw.shjiuze.cn/oms-service-api/vehicle/location
  504 +* 测试:https://test.shjiuze.cn/oms-service-api/vehicle/location
  505 +
  506 +###### Headers参数
  507 +
  508 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  509 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  510 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  511 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  512 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  513 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  514 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  515 +
  516 +###### Body参数
  517 +
  518 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  519 +| ----------------- | ------ | ---- | ------------- | ------------------------ |
  520 +| code | String | 是 | D220101000001 | 则一订单号 |
  521 +| waybillCode | String | 是 | Y220101000001 | 则一运单号 |
  522 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  523 +| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |
  524 +
  525 +##### 请求示例
  526 +
  527 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  528 +
  529 +```java
  530 +public class Sample {
  531 + public static void main(String[] args_) {
  532 + String appKey = "appkey";
  533 + String appSecret = "appSecret";
  534 + String jsonData = "车辆位置查询Body参数JSON数据";
  535 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  536 + HttpResponseData httpResponseData =
  537 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/vehicle/location", "accessToken", jsonData);
  538 + if(httpResponseData == null) {
  539 + throw new BusinessException("则一请求失败,返回结果为空!");
  540 + }
  541 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  542 + //重新获取token再次请求
  543 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  544 + "/oms-service-api/vehicle/location", "accessToken", jsonData);
  545 + }
  546 + }
  547 +}
  548 +```
  549 +
  550 +##### 返回示例
  551 +
  552 +```json
  553 +{
  554 + "success":true,
  555 + "businessException":false,
  556 + "result":{
  557 + "lng":"106.1722328011559", //经度
  558 + "lat":"37.94834927106783", //纬度
  559 + "speed":0, //速度,km/h
  560 + "time":"2022-02-07 19:33:19", //定位时间
  561 + "address":"宁夏回族自治区吴忠市利通区清二沟,东方向,296.5米" //定位地点
  562 + }
  563 +}
  564 +```
  565 +
  566 +#### 查询车辆历史轨迹
  567 +
  568 +##### 接口信息
  569 +
  570 +###### 概述
  571 +
  572 +可以通过该接口查询车辆历史运行轨迹数据,该接口为收费接口。
  573 +
  574 +###### 请求方式:
  575 +
  576 +post
  577 +
  578 +###### 请求地址:
  579 +
  580 +* 生产:https://gw.shjiuze.cn/oms-service-api/vehicle/track
  581 +* 测试:https://test.shjiuze.cn/oms-service-api/vehicle/track
  582 +
  583 +###### Headers参数
  584 +
  585 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  586 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  587 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  588 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  589 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  590 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  591 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  592 +
  593 +###### Body参数
  594 +
  595 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  596 +| ----------------- | ------ | ---- | ------------- | ------------------------ |
  597 +| code | String | 是 | D220101000001 | 则一订单号 |
  598 +| waybillCode | String | 是 | Y220101000001 | 则一运单号 |
  599 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  600 +| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |
  601 +| startTime | Number | 是 | 1643251533306 | 开始时间 |
  602 +| endTime | Number | 是 | 1643251533308 | 结束时间 |
  603 +
  604 +##### 请求示例
  605 +
  606 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  607 +
  608 +```java
  609 +public class Sample {
  610 + public static void main(String[] args_) {
  611 + String appKey = "appkey";
  612 + String appSecret = "appSecret";
  613 + String jsonData = "车辆轨迹查询Body参数JSON数据";
  614 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  615 + HttpResponseData httpResponseData =
  616 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/vehicle/track", "accessToken", jsonData);
  617 + if(httpResponseData == null) {
  618 + throw new BusinessException("则一请求失败,返回结果为空!");
  619 + }
  620 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  621 + //重新获取token再次请求
  622 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  623 + "/oms-service-api/vehicle/track", "accessToken", jsonData);
  624 + }
  625 + }
  626 +}
  627 +```
  628 +
  629 +##### 返回示例
  630 +
  631 +```json
  632 +{
  633 + "success":true,
  634 + "businessException":false,
  635 + "result":[
  636 + {
  637 + "lon":"116.6709722499687", //经度
  638 + "lat":"39.64092201495669", //纬度
  639 + "gtm":"2022-02-07 18:55:13", //gps时间
  640 + "spd":"249", //速度 除以10为km/h
  641 + "hgt":"4", //海拔m
  642 + "agl":"257" //正北方向夹角
  643 + },
  644 + {
  645 + "lon":"116.66919560752942",
  646 + "lat":"39.64070361333219",
  647 + "gtm":"2022-02-07 18:55:33",
  648 + "spd":"272",
  649 + "hgt":"6",
  650 + "agl":"260"
  651 + }
  652 + ]
  653 +}
  654 +```
  655 +
  656 +
  657 +
  658 +#### 查询订单操作记录
  659 +
  660 +##### 接口信息
  661 +
  662 +###### 概述
  663 +
  664 +可以通过该接口查询订单的操作记录。
  665 +
  666 +###### 请求方式:
  667 +
  668 +post
  669 +
  670 +###### 请求地址:
  671 +
  672 +* 生产:https://gw.shjiuze.cn/oms-service-api/order/getOperateList
  673 +* 测试:https://test.shjiuze.cn/oms-service-api/order/getOperateList
  674 +
  675 +###### Headers参数
  676 +
  677 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  678 +| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |
  679 +| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |
  680 +| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |
  681 +| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |
  682 +| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |
  683 +| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |
  684 +
  685 +###### Body参数
  686 +
  687 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  688 +| ----------------- | ------ | ---- | ------------ | ------------------------ |
  689 +| code | String | 否 | 220101000001 | 则一订单号 |
  690 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  691 +
  692 +##### 请求示例
  693 +
  694 +###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  695 +
  696 +```java
  697 +public class Sample {
  698 + public static void main(String[] args_) {
  699 + String appKey = "appkey";
  700 + String appSecret = "appSecret";
  701 + String jsonData = "车辆轨迹查询Body参数JSON数据";
  702 + ZYClient zyClient = new ZYClient(appKey, appSecret);
  703 + HttpResponseData httpResponseData =
  704 +zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/orderOperateRecord/getList", "accessToken", jsonData);
  705 + if(httpResponseData == null) {
  706 + throw new BusinessException("则一请求失败,返回结果为空!");
  707 + }
  708 + if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
  709 + //重新获取token再次请求
  710 + httpResponseData = zyClient.doPost(Constants.TEST_HOST +
  711 + "/oms-service-api/orderOperateRecord/getList", "accessToken", jsonData);
  712 + }
  713 + }
  714 +}
  715 +```
  716 +
  717 +##### 返回示例
  718 +
  719 +```json
  720 +{
  721 + "success": true,
  722 + "businessException": false,
  723 + "errorCode": null,
  724 + "message": null,
  725 + "result": [
  726 + {
  727 + "orderCode": "220101000001",
  728 + "operateType": "ORDER_XXX",
  729 + "operateContent": "操作详情XXXX1",
  730 + "operateTime": "2022-02-10 18:23:30",
  731 + "operateUser": "张三"
  732 + },
  733 + {
  734 + "orderCode": "220101000001",
  735 + "operateType": "ORDER_XXX",
  736 + "operateContent": "操作详情XXXX2",
  737 + "operateTime": "2022-02-08 12:43:30",
  738 + "operateUser": "李四"
  739 + }
  740 + ]
  741 +}
  742 +```
  743 +
  744 +
  745 +
  746 +
  747 +
  748 +
  749 +
  750 +### 以下接口需要对接方提供
  751 +
  752 +#### 报价接口
  753 +
  754 +##### 接口信息
  755 +
  756 +###### 概述
  757 +
  758 +则一调用该接口进行报价,可以进行多次报价。
  759 +
  760 +###### 请求方式:
  761 +
  762 +post
  763 +
  764 +###### 请求路径:
  765 +
  766 +/quotePrice
  767 +
  768 +###### Body参数
  769 +
  770 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  771 +| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |
  772 +| code | String | 是 | 220101000001 | 则一订单号 |
  773 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  774 +| quoteId | String | 是 | 1a2111bacd56 | 报价id,报价唯一标识 |
  775 +| quotePrice | Number | 是 | 10000 | 报价金额 |
  776 +| contactName | String | 否 | 张三 | 报价联系人 |
  777 +| contactMobile | String | 否 | 18801000000 | 报价联系电话 |
  778 +| quoteInvalidTime | Number | 否 | 1643251533306 | 报价有效期,时间戳毫秒值 |
  779 +| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |
  780 +
  781 +###### 返回示例
  782 +
  783 +```json
  784 +{
  785 + "success": true,
  786 + "businessException": false,
  787 + "errorCode": null,
  788 + "message": null,
  789 + "result": {
  790 + "code": "则一订单号",
  791 + "customerOrderCode": "客户订单号"
  792 + }
  793 +}
  794 +```
  795 +
  796 +#### 报价接口V2
  797 +
  798 +##### 接口信息
  799 +
  800 +###### 概述
  801 +
  802 +则一调用该接口进行报价,可以进行多次报价。
  803 +
  804 +###### 请求方式:
  805 +
  806 +post
  807 +
  808 +###### 请求路径:
  809 +
  810 +/quotePrice
  811 +
  812 +###### Body参数
  813 +
  814 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  815 +| ----------------- | ------ | ---- | ------------- | ------------------------ |
  816 +| code | String | 是 | 220101000001 | 则一订单号 |
  817 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  818 +| quoteId | String | 是 | 112242536364 | 报价id,报价唯一标识 |
  819 +| quoteInvalidTime | Number | 否 | 1643251533306 | 报价有效期,时间戳毫秒值 |
  820 +| contactName | String | 否 | 张三 | 报价联系人 |
  821 +| contactMobile | String | 否 | 18801733668 | 报价联系人电话 |
  822 +| operateTime | Number | 是 | 1643251533306 | 操作报价时间戳毫秒值 |
  823 +| attachment | String | 否 | 图片url | 附件 |
  824 +| freightList | Array | 是 | | 运费信息 |
  825 +| waybillCode | String | 是 | Y20220101001 | 运单号(子单号) |
  826 +| specification | String | 是 | 17.5 | 车型 |
  827 +| vanType | String | 是 | MOTOR_VAN | 箱型 |
  828 +| number | Number | 否 | 1 | 数量 |
  829 +| volume | Number | 否 | 30.256 | 方数 |
  830 +| weight | Number | 否 | 80 | 吨位 |
  831 +| baseUnit | String | 是 | car/kg/m³ | 基础单位 |
  832 +| baseUnitPrice | Number | 是 | 100 | 基础单价 |
  833 +| basePrice | Number | 否 | 10000 | 基础运费 |
  834 +| extraUnit | String | 否 | car/kg/m³ | 超里程单位 |
  835 +| extraUnitPrice | Number | 否 | 100 | 超里程单价 |
  836 +
  837 +###### 返回示例
  838 +
  839 +```json
  840 +{
  841 + "success": true,
  842 + "businessException": false,
  843 + "errorCode": null,
  844 + "message": null,
  845 + "result": {
  846 + "code": "则一订单号",
  847 + "customerOrderCode": "客户订单号"
  848 + }
  849 +}
  850 +```
  851 +
  852 +
  853 +
  854 +#### 接单接口
  855 +
  856 +##### 接口信息
  857 +
  858 +###### 概述
  859 +
  860 +则一调用该接口推送运单号及参考运费范围。
  861 +
  862 +###### 请求方式:
  863 +
  864 +post
  865 +
  866 +###### 请求路径:
  867 +
  868 +/receiveOrder
  869 +
  870 +###### Body参数
  871 +
  872 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  873 +| -------------------------------- | --------- | -------------------------- | ------------- | ------------------------ |
  874 +| code | String | 是 | 220101000001 | 则一订单号 |
  875 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  876 +| startTotalPrice | Number | 是&nbsp;&nbsp;&nbsp; | 18100 | 参考总金额起始值 |
  877 +| endTotalPrice | Number | 是&nbsp;&nbsp;&nbsp; | 21000 | 参考总金额结束值 |
  878 +| WaybillList | Waybill[] | 是 | | 运单集合 |
  879 +| &nbsp;&nbsp;&nbsp; waybillCode | String | 是 | Y220101000001 | 则一运单号 |
  880 +| &nbsp;&nbsp;&nbsp; startPrice | Number | 是 | 18100 | 参考金额起始值 |
  881 +| &nbsp;&nbsp;&nbsp; endPrice | Number | 是 | 21000 | 参考总金额结束值 |
  882 +| &nbsp;&nbsp;&nbsp; vanType | String | 是 | MOTOR_VAN | 厢型 |
  883 +| &nbsp;&nbsp;&nbsp; specification | String | 是 | 9.6 | 车型 |
  884 +
  885 +###### 返回示例
  886 +
  887 +```json
  888 +{
  889 + "success": true,
  890 + "businessException": false,
  891 + "errorCode": null,
  892 + "message": null,
  893 + "result": {
  894 + "code": "则一订单号",
  895 + "customerOrderCode": "客户订单号"
  896 + }
  897 +}
  898 +```
  899 +
  900 +
  901 +
  902 +
  903 +
  904 +#### 推送司机车辆信息
  905 +
  906 +##### 接口信息
  907 +
  908 +###### 概述
  909 +
  910 +则一调用该接口推送订单司机和车辆信息,可以进行多次推送,以操作时间戳最新一次推送的司机车辆信息为准。
  911 +
  912 +###### 请求方式:
  913 +
  914 +post
  915 +
  916 +###### 请求路径:
  917 +
  918 +/assignVehicle
  919 +
  920 +###### Body参数
  921 +
  922 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  923 +| -------------------- | ------ | -------------------------- | ------------- | ------------------------ |
  924 +| code | String | 是 | 220101000001 | 则一订单号 |
  925 +| waybillCode | String | 是&nbsp; | Y220101000001 | 则一运单号 |
  926 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  927 +| driverName | String | 是 | 张三 | 司机姓名 |
  928 +| driverMobile | String | 是 | 18801000000 | 司机手机号 |
  929 +| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |
  930 +| trailerLicenseNumber | String | 否 | 陕K7C72挂 | 挂车车牌号 |
  931 +| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |
  932 +| weight | Number | 否 | 200000 | 重量 |
  933 +| volume | Number | 否 | 16 | 体积 |
  934 +
  935 +###### 返回示例
  936 +
  937 +```json
  938 +{
  939 + "success": true,
  940 + "businessException": false,
  941 + "errorCode": null,
  942 + "message": null,
  943 + "result": {
  944 + "code": "则一订单号",
  945 + "customerOrderCode": "客户订单号"
  946 + }
  947 +}
  948 +```
  949 +
  950 +
  951 +
  952 +#### 推送发车信息
  953 +
  954 +##### 接口信息
  955 +
  956 +###### 概述
  957 +
  958 +则一调用该接口推送发车运输数据。
  959 +
  960 +###### 请求方式:
  961 +
  962 +post
  963 +
  964 +###### 请求路径:
  965 +
  966 +/departVehicle
  967 +
  968 +###### Body参数
  969 +
  970 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  971 +| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |
  972 +| code | String | 是 | 220101000001 | 则一订单号 |
  973 +| waybillCode | String | 是&nbsp;&nbsp; | Y220101000001 | 则一运单号 |
  974 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  975 +| departTime | Number | 是 | 1643251533306 | 发车时间戳 |
  976 +| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |
  977 +| weight | Number | 否 | 200000 | 重量 |
  978 +| volume | Number | 否 | 16 | 体积 |
  979 +
  980 +###### 返回示例
  981 +
  982 +```json
  983 +{
  984 + "success": true,
  985 + "businessException": false,
  986 + "errorCode": null,
  987 + "message": null,
  988 + "result": {
  989 + "code": "则一订单号",
  990 + "customerOrderCode": "客户订单号"
  991 + }
  992 +}
  993 +```
  994 +
  995 +#### 推送到车信息
  996 +
  997 +##### 接口信息
  998 +
  999 +###### 概述
  1000 +
  1001 +则一调用该接口推送到达数据。
  1002 +
  1003 +###### 请求方式:
  1004 +
  1005 +post
  1006 +
  1007 +###### 请求路径:
  1008 +
  1009 +/arriveVehicle
  1010 +
  1011 +###### Body参数
  1012 +
  1013 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  1014 +| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |
  1015 +| code | String | 是 | 220101000001 | 则一订单号 |
  1016 +| waybillCode | String | 是&nbsp;&nbsp;&nbsp; | Y220101000001 | 则一运单号 |
  1017 +| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |
  1018 +| arriveTime | Number | 是 | 1643251533306 | 到车时间戳 |
  1019 +| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |
  1020 +
  1021 +###### 返回示例
  1022 +
  1023 +```json
  1024 +{
  1025 + "success": true,
  1026 + "businessException": false,
  1027 + "errorCode": null,
  1028 + "message": null,
  1029 + "result": {
  1030 + "code": "则一订单号",
  1031 + "customerOrderCode": "客户订单号"
  1032 + }
  1033 +}
  1034 +```
  1035 +
  1036 +#### 推送运费信息
  1037 +
  1038 +##### 接口信息
  1039 +
  1040 +###### 概述
  1041 +
  1042 +则一调用该接口推送最终运费信息。
  1043 +
  1044 +###### 请求方式:
  1045 +
  1046 +post
  1047 +
  1048 +###### 请求路径:
  1049 +
  1050 +/receiveFreight
  1051 +
  1052 +###### Body参数
  1053 +
  1054 +| 名称 | 类型 | 必填 | 示例值 | 描述 |
  1055 +| -------------------------------------- | ------ | ---- | ------------ | ------------------------ |
  1056 +| code | String | 是 | 220101000001 | 则一订单号 |
  1057 +| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |
  1058 +| totalBasePrice | Number | 是 | 10000 | 基础运费合计 |
  1059 +| totalExtraPrice | Number | 是 | 500 | 超里程运费合计 |
  1060 +| totalPrice | Number | 是 | 10500 | 运费总额 |
  1061 +| attachment | String | 否 | 图片url | 附件 |
  1062 +| freightList | Array | 是 | | 运费信息 |
  1063 +| &nbsp;&nbsp;&nbsp;&nbsp;waybillCode | String | 是 | Y20220101001 | 运单号 |
  1064 +| &nbsp;&nbsp;&nbsp;&nbsp;specification | String | 是 | 9.6 | 车型 |
  1065 +| &nbsp;&nbsp;&nbsp;&nbsp;vanType | String | 是 | MOTOR_VAN | 箱型 |
  1066 +| &nbsp;&nbsp;&nbsp;&nbsp;number | Number | 否 | 1 | 数量 |
  1067 +| &nbsp;&nbsp;&nbsp;&nbsp;volume | Number | 否 | 30.256 | 方数 |
  1068 +| &nbsp;&nbsp;&nbsp;&nbsp;weight | Number | 否 | 80 | 吨位 |
  1069 +| &nbsp;&nbsp;&nbsp;&nbsp;baseUnit | String | 是 | car/kg/m³ | 基础单位 |
  1070 +| &nbsp;&nbsp;&nbsp;&nbsp;baseUnitPrice | Number | 是 | 100 | 基础单价 |
  1071 +| &nbsp;&nbsp;&nbsp;&nbsp;basePrice | Number | 是 | 10000 | 基础运费 |
  1072 +| &nbsp;&nbsp;&nbsp;&nbsp;extraUnit | String | 否 | car/kg/m³ | 超里程单位 |
  1073 +| &nbsp;&nbsp;&nbsp;&nbsp;extraUnitPrice | Number | 否 | 100 | 超里程单价 |
  1074 +| &nbsp;&nbsp;&nbsp;&nbsp;extraPrice | Number | 否 | 1000 | 超里程运费 |
  1075 +
  1076 +###### 返回示例
  1077 +
  1078 +```json
  1079 +{
  1080 + "success": true,
  1081 + "businessException": false,
  1082 + "errorCode": null,
  1083 + "message": null,
  1084 + "result": {
  1085 + "code": "则一订单号",
  1086 + "customerOrderCode": "客户订单号"
  1087 + }
  1088 +}
  1089 +```
  1090 +
  1091 +
  1092 +
  1093 +### Java-sdk下载
  1094 +
  1095 +[zy-java-sdk](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)
  1096 +
  1097 +
  1098 +
  1099 +### 2022-03-09更新日志
  1100 +
  1101 +为了保证接口的通用性,本次涉及到改动的信息如下
  1102 +
  1103 +- [x] [下单](http://open-doc.shjiuze.cn/order.html#下单): 接口返回值移除子单集合,通过接单接口推送。
  1104 +- [x] [接单接口](http://open-doc.shjiuze.cn/order.html#接单接口):由推送参考价改为接单接口,推送运单集合及每个运单的参考价格。
  1105 +- [x] 对接接口中子单号subCode参数命名更改为运单号waybillCode。
  1106 +
  1107 +### 2023-02-22更新日志
  1108 +
  1109 +- [x] 增加报价接口V2版本
  1110 +- [x] 增加推送运费信息接口
  1111 +- [x] 增加确认运费接口
0 \ No newline at end of file 1112 \ No newline at end of file
order/order.md
@@ -1,897 +0,0 @@ @@ -1,897 +0,0 @@
1 -  
2 -  
3 -### 则一订单对接API  
4 -  
5 -则一提供了不同规范的API,调用则一订单服务端API前,需了解开发前须知及调用流程。本文提供了调用则一订单服务端API示例,供开发者参考。  
6 -  
7 -#### 白名单  
8 -  
9 -则一服务端API接口访问有IP白名单限制,需要接口调用方提供调用API的服务器IP地址。  
10 -  
11 -#### 数据加签  
12 -  
13 -采用md5(32位小写)算法生成签名  
14 -appKey(则一提供) + appSecret(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(请求数据)  
15 -  
16 -#### 数据加密  
17 -  
18 -数据加密采用AES算法  
19 -加密模式: CBC  
20 -填充方式:PKCS5Padding  
21 -偏移量:iv(则一提供)  
22 -加密内容:appKey(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(加密数据)  
23 -密钥: appSecret(则一提供)  
24 -输出:base64  
25 -字符集:utf-8  
26 -注:无敏感数据则无需加密  
27 -  
28 -#### 获取访问凭证  
29 -  
30 -##### 概述  
31 -  
32 -调用则一服务API时,都需要先获取对应权限类型的访问凭证accessToken。访问凭证(accessToken)是由则一权限系统颁发的,用来校验调用者的身份信息,确保调用者具有要执行的操作的权限。  
33 -**说明**: 在使用accessToken时,请注意:  
34 -  
35 -* accessToken的有效期默认为30天,有效期内重复获取会返回相同结果,过期后获取会返回新的accessToken。  
36 -* 开发者需要缓存accessToken,用于后续接口的调用。不能频繁调用获取accessToken接口,否则会受到频率拦截。  
37 -* 当调用业务API时,如果返回状态码为401,则说明accessToken不正确或已过期,这时需要重新获取accessToken后再调用对应的API。  
38 -  
39 -##### 接口信息  
40 -  
41 -###### 请求方式:  
42 -  
43 -post  
44 -  
45 -###### 请求地址:  
46 -  
47 -* 生产:https://gw.shjiuze.cn/auth-service-api/login/password  
48 -* 测试:https://test.shjiuze.cn/auth-service-api/login/password  
49 -  
50 -###### Body参数  
51 -  
52 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
53 -| -------- | ------ | ---- | ----------- | ---------------- |  
54 -| username | String | 是 | zhangsan | 用户名,则一提供 |  
55 -| password | String | 是 | password123 | 密码,则一提供 |  
56 -  
57 -###### 返回参数  
58 -  
59 -| 名称 | 类型 | 示例值 | 描述 |  
60 -| ------------------------------ | ---------- | -------------------------------- | -------------------------------------------------- |  
61 -| success | boolean | true | 成功标识: true 成功,false 失败 |  
62 -| businessException | boolean | false | 业务异常标识: true 业务异常,false 正常 |  
63 -| errorCode | String | 200 | 错误码: 200 业务异常,500 系统异常, 空表示无错误 |  
64 -| message | String | 订单号不能为空 | 错误信息,无错误则返回空 |  
65 -| result | ZYTokenDto | | accessToken结果数据 |  
66 -| &nbsp;&nbsp;&nbsp; accessToken | String | 000626f15b4b41bba6fe56216a5d2f73 | accessToken |  
67 -| &nbsp;&nbsp;&nbsp; expiresIn | Integer | 2060 | 有效期限单位秒,accessToken在2060秒后过期 |  
68 -| &nbsp;&nbsp;&nbsp; tokenType | String | bearer | token类型 |  
69 -  
70 -##### 请求示例  
71 -  
72 -###### Http方式  
73 -  
74 -```http  
75 -POST /auth-service-api/login/password HTTP/1.1  
76 -Host:test.shjiuze.cn  
77 -Content-Type:application/json  
78 -  
79 -{  
80 - "username" : "zeyi",  
81 - "password" : "test1111"  
82 -}  
83 -```  
84 -  
85 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
86 -  
87 -```java  
88 -public class Sample {  
89 - public static void main(String[] args_) {  
90 - String appKey = "appkey";  
91 - String appSecret = "appSecret";  
92 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
93 - ZYTokenRequestDto zyTokenRequest = new ZYTokenRequestDto();  
94 - zyTokenRequest.setUsername("zeyi");  
95 - zyTokenRequest.setPassword("test1111");  
96 - String body = gson.toJson(zyTokenRequest);  
97 - HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + Constants.TOKEN_PATH, body);  
98 - if(httpResponseData == null) {  
99 - throw new TokenException("则一Token请求失败,返回为空!");  
100 - }  
101 - ZYResponse<ZYTokenDto> zyResponse = gson.fromJson(httpResponseData.getBody(), new TypeToken<ZYResponse<ZYTokenDto>>(){}.getType());  
102 - if(!Boolean.TRUE.equals(zyResponse.isSuccess())) {  
103 - throw new TokenException("则一Token请求返回失败!" + zyResponse.getMessage());  
104 - }  
105 - if(zyResponse.getResult() == null) {  
106 - throw new TokenException("则一Token请求返回失败,返回结果为空!" + zyResponse.getMessage());  
107 - }  
108 - if(StringUtils.isBlank(zyResponse.getResult().getAccessToken())) {  
109 - throw new TokenException("则一Token请求返回数据异常,AccessToken为空!" + zyResponse.getMessage());  
110 - }  
111 - // 结果 zyResponse.getResult();  
112 - }  
113 -}  
114 -```  
115 -  
116 -##### 返回示例  
117 -  
118 -```json  
119 -{  
120 - "success": true,  
121 - "businessException": false,  
122 - "errorCode": null,  
123 - "message": null,  
124 - "result": {  
125 - "accessToken": "64d7f367-609b-4f7d-a84d-a3d2a0b5ad85",  
126 - "expiresIn": 602105,  
127 - "tokenType": "bearer"  
128 - }  
129 -}  
130 -```  
131 -  
132 -#### 下单  
133 -  
134 -##### 接口信息  
135 -  
136 -###### 请求方式:  
137 -  
138 -post  
139 -  
140 -###### 请求地址:  
141 -  
142 -* 生产:https://gw.shjiuze.cn/oms-service-api/order/add  
143 -* 测试:https://test.shjiuze.cn/oms-service-api/order/add  
144 -  
145 -###### Headers参数  
146 -  
147 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
148 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
149 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
150 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
151 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
152 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
153 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
154 -  
155 -###### Body参数  
156 -  
157 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
158 -| ------------------------------------- | -------------------- | -------------------------- | ---------------- | ------------------------------------------------------------ |  
159 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
160 -| customerSn | String | 否 | 220101000001 | 客户委托单号 |  
161 -| placeOrderTime | Number | 是 | 1643251533306 | 下单时间,时间戳毫秒值 |  
162 -| loadTime | Number | 是 | 1643251533306 | 装货时间,时间戳毫秒值 |  
163 -| expectArrivalTime | Number | 否 | 1643251533306 | 期望送达时间,时间戳毫秒值 |  
164 -| receiptType | String | 否 | ELECTRON_TYPE | 回单类型:ELECTRON_TYPE/电子回单,PAPER_TYPE/纸质回单,NONE/无 |  
165 -| receiptNumber | Number | 否 | 1 | 回单张数 |  
166 -| receiptCode | String | 否 | A2022012602278 | 回单号 |  
167 -| payType | String | 否 | PAY_IN_CASH | 付款方式:PAY_IN_CASH/现付,PAY_ON_DELIVERY/到付,PAY_ARREARS/欠付,PAY_MONTH/月结,PAY_BACK/回付,PAY_MULTIPLE/多笔付,PAY_FREE/免费 |  
168 -| lineName | String | 否 | 上海-天津-北京 | 线路名称 |  
169 -| remark | String | 否 | 需要雨布和尾板 | 订单备注 |  
170 -| station | OrderStation[] | 是 | | 订单经停点 |  
171 -| &nbsp;&nbsp;&nbsp; stationId | String | 否 | 123abc | 站点id |  
172 -| &nbsp;&nbsp;&nbsp; stationName | String | 否 | 上海顺丰青浦站点 | 站点名称 |  
173 -| &nbsp;&nbsp;&nbsp; provinceCode | String | 否 | 310000 | 省份编号 |  
174 -| &nbsp;&nbsp;&nbsp; provinceName | String | 是 | 上海 | 省份名称 |  
175 -| &nbsp;&nbsp;&nbsp; cityCode | String | 否 | 310100 | 城市编号 |  
176 -| &nbsp;&nbsp;&nbsp; cityName | String | 是 | 上海市 | 城市名称 |  
177 -| &nbsp;&nbsp;&nbsp; areaCode | String | 否 | 310118 | 区域编号 |  
178 -| &nbsp;&nbsp;&nbsp; areaName | String | 是 | 青浦区 | 区域名称 |  
179 -| &nbsp;&nbsp;&nbsp; address | String | 是 | 纪鹤公路1988号 | 详细地址 |  
180 -| &nbsp;&nbsp;&nbsp; lat | String | 是 | 36.221825 | 纬度 |  
181 -| &nbsp;&nbsp;&nbsp; lng | String | 是 | 120.632908 | 经度 |  
182 -| &nbsp;&nbsp;&nbsp; contactName | String | 否 | 张三 | 联系人 |  
183 -| &nbsp;&nbsp;&nbsp; contactMobile | String | 否 | 18801000001 | 联系人电话 |  
184 -| &nbsp;&nbsp;&nbsp; loadFlag | String | 是 | true | 装货标识 |  
185 -| &nbsp;&nbsp;&nbsp; unloadFlag | String | 是 | false | 卸货标识 |  
186 -| &nbsp;&nbsp;&nbsp; expectArrivalTime | Number | 否 | 1643251533306 | 预计到达时间,时间戳毫秒值 |  
187 -| &nbsp;&nbsp;&nbsp;expectDepartTime | Number | 否 | 1643251533306 | 预计发车时间,时间戳毫秒值 |  
188 -| &nbsp;&nbsp;&nbsp; sort | Number | 否 | 1 | 经停点顺序,如果不传则默认按数组顺序 |  
189 -| goods | OrderGoods[] | 否 | | 订单货物信息 |  
190 -| &nbsp;&nbsp;&nbsp; barCode | String | 否 | 21616162626 | 商品条码 |  
191 -| &nbsp; &nbsp;&nbsp;skuId | String | 否 | 1223233536436 | 商品sku_id |  
192 -| &nbsp;&nbsp;&nbsp;&nbsp;name | String | 是 | 鞋子 | 货物名称 |  
193 -| &nbsp;&nbsp;&nbsp;&nbsp;packageType | String | 否 | | 包装规格 |  
194 -| &nbsp;&nbsp;&nbsp;&nbsp;piece | Number | 否 | 200 | 件数 |  
195 -| &nbsp;&nbsp;&nbsp;&nbsp;weight | Number | 否 | 200000 | 重量 |  
196 -| &nbsp;&nbsp;&nbsp;&nbsp;volume | Number | 否 | 50 | 体积 |  
197 -| addService | OrderAddService[] | 否 | | 增值服务 |  
198 -| &nbsp;&nbsp;&nbsp;&nbsp;serviceType | String | 否 | | 服务类型 |  
199 -| &nbsp;&nbsp;&nbsp;&nbsp;serviceName | String | 是 | 包装服务 | 服务名称 |  
200 -| &nbsp;&nbsp;&nbsp;&nbsp;serviceDemand | String | 否 | 纸箱包装 | 服务要求 |  
201 -| tags | OrderTag[] | 否 | | 订单标签 |  
202 -| &nbsp;tagName | String | 是 | 易碎物品 | 标签名称 |  
203 -| vehicleDemands | OrderVehicleDemand[] | 否 | | 车辆需求 |  
204 -| &nbsp;demandVanType | String | 是 | MOTOR_VAN | 需求厢型:MOTOR_VAN/厢车,GAOLAN_VAN/高栏,SLAB_VAN/平板,REFRIGERATOR_CAR/冷藏,IVECO/依维柯,JINBEI/金杯,MINI_VAN/小面包,ELSE_VAN/其他 |  
205 -| &nbsp;&nbsp;demandSpecification | String | 是 | 9.6 | 需求车型:2.7/3.8/4.2/6.8/7.6/9.6/11/12.5/13.5/15/16.5/17.5/19/21 |  
206 -| &nbsp;demandNumber | Number | 否 | 1 | 为空则默认1 |  
207 -| &nbsp;vehicleDemand | String | 否 | 车辆需要带雨布 | 车辆要求描述 |  
208 -  
209 -##### 请求示例  
210 -  
211 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
212 -  
213 -```java  
214 -public class Sample {  
215 - public static void main(String[] args_) {  
216 - String appKey = "appkey";  
217 - String appSecret = "appSecret";  
218 - String jsonData = "下单Body参数JSON数据";  
219 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
220 - HttpResponseData httpResponseData =  
221 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/add", "accessToken", jsonData);  
222 - if(httpResponseData == null) {  
223 - throw new BusinessException("则一请求失败,返回结果为空!");  
224 - }  
225 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
226 - //重新获取token再次请求  
227 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
228 - "/oms-service-api/order/add", "accessToken", jsonData);  
229 - }  
230 - }  
231 -}  
232 -```  
233 -  
234 -##### 返回示例  
235 -  
236 -```json  
237 -{  
238 - "success": true,  
239 - "businessException": false,  
240 - "errorCode": null,  
241 - "message": null,  
242 - "result": {  
243 - "code": "则一订单号",  
244 - "customerOrderCode": "客户订单号"  
245 - }  
246 -}  
247 -```  
248 -  
249 -#### 确认中标  
250 -  
251 -##### 接口信息  
252 -  
253 -###### 请求方式:  
254 -  
255 -post  
256 -  
257 -###### 请求地址:  
258 -  
259 -* 生产:https://gw.shjiuze.cn/oms-service-api/order/confirmBid  
260 -* 测试:https://test.shjiuze.cn/oms-service-api/order/confirmBid  
261 -  
262 -###### Headers参数  
263 -  
264 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
265 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
266 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
267 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
268 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
269 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
270 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
271 -  
272 -###### Body参数  
273 -  
274 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
275 -| ----------------- | ------ | -------------------------- | ------------ | ------------------------ |  
276 -| code | String | 是 | 220101000001 | 则一订单号 |  
277 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
278 -| confirmId | String | 是 | 220101000001 | 中标报价id |  
279 -| quotePrice | Number | 是 | 10000 | 中标价格 |  
280 -  
281 -##### 请求示例  
282 -  
283 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
284 -  
285 -```java  
286 -public class Sample {  
287 - public static void main(String[] args_) {  
288 - String appKey = "appkey";  
289 - String appSecret = "appSecret";  
290 - String jsonData = "确认中标Body参数JSON数据";  
291 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
292 - HttpResponseData httpResponseData =  
293 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/confirmBid", "accessToken", jsonData);  
294 - if(httpResponseData == null) {  
295 - throw new BusinessException("则一请求失败,返回结果为空!");  
296 - }  
297 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
298 - //重新获取token再次请求  
299 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
300 - "/oms-service-api/order/confirmBid", "accessToken", jsonData);  
301 - }  
302 - }  
303 -}  
304 -```  
305 -  
306 -##### 返回示例  
307 -  
308 -```json  
309 -{  
310 - "success": true,  
311 - "businessException": false,  
312 - "errorCode": null,  
313 - "message": null,  
314 - "result": {  
315 - "code": "则一订单号",  
316 - "customerOrderCode": "客户订单号",  
317 - "confirmId": "中标报价id",  
318 - "quotePrice": "中标价格"  
319 - }  
320 -}  
321 -```  
322 -  
323 -#### 取消订单  
324 -  
325 -##### 接口信息  
326 -  
327 -###### 请求方式:  
328 -  
329 -post  
330 -  
331 -###### 请求地址:  
332 -  
333 -* 生产:https://gw.shjiuze.cn/oms-service-api/order/cancel  
334 -* 测试:https://test.shjiuze.cn/oms-service-api/order/cancel  
335 -  
336 -###### Headers参数  
337 -  
338 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
339 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
340 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
341 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
342 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
343 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
344 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
345 -  
346 -###### Body参数  
347 -  
348 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
349 -| ----------------- | ------ | -------------------------- | ------------ | ------------------------ |  
350 -| code | String | 是 | 220101000001 | 则一订单号 |  
351 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
352 -| cancelRemark | String | 否 | 货量不足 | 取消原因 |  
353 -  
354 -##### 请求示例  
355 -  
356 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
357 -  
358 -```java  
359 -public class Sample {  
360 - public static void main(String[] args_) {  
361 - String appKey = "appkey";  
362 - String appSecret = "appSecret";  
363 - String jsonData = "取消订单Body参数JSON数据";  
364 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
365 - HttpResponseData httpResponseData =  
366 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/order/cancel", "accessToken", jsonData);  
367 - if(httpResponseData == null) {  
368 - throw new BusinessException("则一请求失败,返回结果为空!");  
369 - }  
370 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
371 - //重新获取token再次请求  
372 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
373 - "/oms-service-api/order/cancel", "accessToken", jsonData);  
374 - }  
375 - }  
376 -}  
377 -```  
378 -  
379 -##### 返回示例  
380 -  
381 -```json  
382 -{  
383 - "success": true,  
384 - "businessException": false,  
385 - "errorCode": null,  
386 - "message": null,  
387 - "result": {  
388 - "code": "则一订单号",  
389 - "customerOrderCode": "客户订单号"  
390 - }  
391 -}  
392 -```  
393 -  
394 -#### 查询车辆定位  
395 -  
396 -##### 接口信息  
397 -  
398 -###### 概述  
399 -  
400 -可以通过该接口查询车辆当前位置,该接口为收费接口。  
401 -  
402 -###### 请求方式:  
403 -  
404 -post  
405 -  
406 -###### 请求地址:  
407 -  
408 -* 生产:https://gw.shjiuze.cn/oms-service-api/vehicle/location  
409 -* 测试:https://test.shjiuze.cn/oms-service-api/vehicle/location  
410 -  
411 -###### Headers参数  
412 -  
413 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
414 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
415 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
416 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
417 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
418 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
419 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
420 -  
421 -###### Body参数  
422 -  
423 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
424 -| ----------------- | ------ | ---- | ------------- | ------------------------ |  
425 -| code | String | 是 | D220101000001 | 则一订单号 |  
426 -| waybillCode | String | 是 | Y220101000001 | 则一运单号 |  
427 -| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |  
428 -| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |  
429 -  
430 -##### 请求示例  
431 -  
432 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
433 -  
434 -```java  
435 -public class Sample {  
436 - public static void main(String[] args_) {  
437 - String appKey = "appkey";  
438 - String appSecret = "appSecret";  
439 - String jsonData = "车辆位置查询Body参数JSON数据";  
440 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
441 - HttpResponseData httpResponseData =  
442 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/vehicle/location", "accessToken", jsonData);  
443 - if(httpResponseData == null) {  
444 - throw new BusinessException("则一请求失败,返回结果为空!");  
445 - }  
446 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
447 - //重新获取token再次请求  
448 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
449 - "/oms-service-api/vehicle/location", "accessToken", jsonData);  
450 - }  
451 - }  
452 -}  
453 -```  
454 -  
455 -##### 返回示例  
456 -  
457 -```json  
458 -{  
459 - "success":true,  
460 - "businessException":false,  
461 - "result":{  
462 - "lng":"106.1722328011559", //经度  
463 - "lat":"37.94834927106783", //纬度  
464 - "speed":0, //速度,km/h  
465 - "time":"2022-02-07 19:33:19", //定位时间  
466 - "address":"宁夏回族自治区吴忠市利通区清二沟,东方向,296.5米" //定位地点  
467 - }  
468 -}  
469 -```  
470 -  
471 -#### 查询车辆历史轨迹  
472 -  
473 -##### 接口信息  
474 -  
475 -###### 概述  
476 -  
477 -可以通过该接口查询车辆历史运行轨迹数据,该接口为收费接口。  
478 -  
479 -###### 请求方式:  
480 -  
481 -post  
482 -  
483 -###### 请求地址:  
484 -  
485 -* 生产:https://gw.shjiuze.cn/oms-service-api/vehicle/track  
486 -* 测试:https://test.shjiuze.cn/oms-service-api/vehicle/track  
487 -  
488 -###### Headers参数  
489 -  
490 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
491 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
492 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
493 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
494 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
495 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
496 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
497 -  
498 -###### Body参数  
499 -  
500 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
501 -| ----------------- | ------ | ---- | ------------- | ------------------------ |  
502 -| code | String | 是 | D220101000001 | 则一订单号 |  
503 -| waybillCode | String | 是 | Y220101000001 | 则一运单号 |  
504 -| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |  
505 -| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |  
506 -| startTime | Number | 是 | 1643251533306 | 开始时间 |  
507 -| endTime | Number | 是 | 1643251533308 | 结束时间 |  
508 -  
509 -##### 请求示例  
510 -  
511 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
512 -  
513 -```java  
514 -public class Sample {  
515 - public static void main(String[] args_) {  
516 - String appKey = "appkey";  
517 - String appSecret = "appSecret";  
518 - String jsonData = "车辆轨迹查询Body参数JSON数据";  
519 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
520 - HttpResponseData httpResponseData =  
521 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/vehicle/track", "accessToken", jsonData);  
522 - if(httpResponseData == null) {  
523 - throw new BusinessException("则一请求失败,返回结果为空!");  
524 - }  
525 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
526 - //重新获取token再次请求  
527 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
528 - "/oms-service-api/vehicle/track", "accessToken", jsonData);  
529 - }  
530 - }  
531 -}  
532 -```  
533 -  
534 -##### 返回示例  
535 -  
536 -```json  
537 -{  
538 - "success":true,  
539 - "businessException":false,  
540 - "result":[  
541 - {  
542 - "lon":"116.6709722499687", //经度  
543 - "lat":"39.64092201495669", //纬度  
544 - "gtm":"2022-02-07 18:55:13", //gps时间  
545 - "spd":"249", //速度 除以10为km/h  
546 - "hgt":"4", //海拔m  
547 - "agl":"257" //正北方向夹角  
548 - },  
549 - {  
550 - "lon":"116.66919560752942",  
551 - "lat":"39.64070361333219",  
552 - "gtm":"2022-02-07 18:55:33",  
553 - "spd":"272",  
554 - "hgt":"6",  
555 - "agl":"260"  
556 - }  
557 - ]  
558 -}  
559 -```  
560 -  
561 -  
562 -  
563 -#### 查询订单操作记录  
564 -  
565 -##### 接口信息  
566 -  
567 -###### 概述  
568 -  
569 -可以通过该接口查询订单的操作记录。  
570 -  
571 -###### 请求方式:  
572 -  
573 -post  
574 -  
575 -###### 请求地址:  
576 -  
577 -* 生产:https://gw.shjiuze.cn/oms-service-api/order/getOperateList  
578 -* 测试:https://test.shjiuze.cn/oms-service-api/order/getOperateList  
579 -  
580 -###### Headers参数  
581 -  
582 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
583 -| ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ |  
584 -| Authorization | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 |  
585 -| appKey | String | 是 | 0867ef5f23ef6483749e19e1692b | 则一提供 |  
586 -| timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 |  
587 -| nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 |  
588 -| sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 |  
589 -  
590 -###### Body参数  
591 -  
592 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
593 -| ----------------- | ------ | ---- | ------------ | ------------------------ |  
594 -| code | String | 否 | 220101000001 | 则一订单号 |  
595 -| customerOrderCode | String | 是 | 220101000001 | 客户订单号,订单唯一标识 |  
596 -  
597 -##### 请求示例  
598 -  
599 -###### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
600 -  
601 -```java  
602 -public class Sample {  
603 - public static void main(String[] args_) {  
604 - String appKey = "appkey";  
605 - String appSecret = "appSecret";  
606 - String jsonData = "车辆轨迹查询Body参数JSON数据";  
607 - ZYClient zyClient = new ZYClient(appKey, appSecret);  
608 - HttpResponseData httpResponseData =  
609 -zyClient.doPost(Constants.TEST_HOST + "/oms-service-api/orderOperateRecord/getList", "accessToken", jsonData);  
610 - if(httpResponseData == null) {  
611 - throw new BusinessException("则一请求失败,返回结果为空!");  
612 - }  
613 - if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {  
614 - //重新获取token再次请求  
615 - httpResponseData = zyClient.doPost(Constants.TEST_HOST +  
616 - "/oms-service-api/orderOperateRecord/getList", "accessToken", jsonData);  
617 - }  
618 - }  
619 -}  
620 -```  
621 -  
622 -##### 返回示例  
623 -  
624 -```json  
625 -{  
626 - "success": true,  
627 - "businessException": false,  
628 - "errorCode": null,  
629 - "message": null,  
630 - "result": [  
631 - {  
632 - "orderCode": "220101000001",  
633 - "operateType": "ORDER_XXX",  
634 - "operateContent": "操作详情XXXX1",  
635 - "operateTime": "2022-02-10 18:23:30",  
636 - "operateUser": "张三"  
637 - },  
638 - {  
639 - "orderCode": "220101000001",  
640 - "operateType": "ORDER_XXX",  
641 - "operateContent": "操作详情XXXX2",  
642 - "operateTime": "2022-02-08 12:43:30",  
643 - "operateUser": "李四"  
644 - }  
645 - ]  
646 -}  
647 -```  
648 -  
649 -  
650 -  
651 -  
652 -  
653 -  
654 -  
655 -### 以下接口需要对接方提供  
656 -  
657 -#### 报价接口  
658 -  
659 -##### 接口信息  
660 -  
661 -###### 概述  
662 -  
663 -则一调用该接口进行报价,可以进行多次报价。  
664 -  
665 -###### 请求方式:  
666 -  
667 -post  
668 -  
669 -###### 请求路径:  
670 -  
671 -/quotePrice  
672 -  
673 -###### Body参数  
674 -  
675 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
676 -| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |  
677 -| code | String | 是 | 220101000001 | 则一订单号 |  
678 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
679 -| quoteId | String | 是 | 1a2111bacd56 | 报价id,报价唯一标识 |  
680 -| quotePrice | Number | 是 | 10000 | 报价金额 |  
681 -| contactName | String | 否 | 张三 | 报价联系人 |  
682 -| contactMobile | String | 否 | 18801000000 | 报价联系电话 |  
683 -| quoteInvalidTime | Number | 否 | 1643251533306 | 报价有效期,时间戳毫秒值 |  
684 -| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |  
685 -  
686 -###### 返回示例  
687 -  
688 -```json  
689 -{  
690 - "success": true,  
691 - "businessException": false,  
692 - "errorCode": null,  
693 - "message": null,  
694 - "result": {  
695 - "code": "则一订单号",  
696 - "customerOrderCode": "客户订单号"  
697 - }  
698 -}  
699 -```  
700 -  
701 -  
702 -  
703 -#### 接单接口  
704 -  
705 -##### 接口信息  
706 -  
707 -###### 概述  
708 -  
709 -则一调用该接口推送运单号及参考运费范围。  
710 -  
711 -###### 请求方式:  
712 -  
713 -post  
714 -  
715 -###### 请求路径:  
716 -  
717 -/receiveOrder  
718 -  
719 -###### Body参数  
720 -  
721 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
722 -| -------------------------------- | --------- | -------------------------- | ------------- | ------------------------ |  
723 -| code | String | 是 | 220101000001 | 则一订单号 |  
724 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
725 -| startTotalPrice | Number | 是&nbsp;&nbsp;&nbsp; | 18100 | 参考总金额起始值 |  
726 -| endTotalPrice | Number | 是&nbsp;&nbsp;&nbsp; | 21000 | 参考总金额结束值 |  
727 -| WaybillList | Waybill[] | 是 | | 运单集合 |  
728 -| &nbsp;&nbsp;&nbsp; waybillCode | String | 是 | Y220101000001 | 则一运单号 |  
729 -| &nbsp;&nbsp;&nbsp; startPrice | Number | 是 | 18100 | 参考金额起始值 |  
730 -| &nbsp;&nbsp;&nbsp; endPrice | Number | 是 | 21000 | 参考总金额结束值 |  
731 -| &nbsp;&nbsp;&nbsp; vanType | String | 是 | MOTOR_VAN | 厢型 |  
732 -| &nbsp;&nbsp;&nbsp; specification | String | 是 | 9.6 | 车型 |  
733 -  
734 -###### 返回示例  
735 -  
736 -```json  
737 -{  
738 - "success": true,  
739 - "businessException": false,  
740 - "errorCode": null,  
741 - "message": null,  
742 - "result": {  
743 - "code": "则一订单号",  
744 - "customerOrderCode": "客户订单号"  
745 - }  
746 -}  
747 -```  
748 -  
749 -  
750 -  
751 -  
752 -  
753 -#### 推送司机车辆信息  
754 -  
755 -##### 接口信息  
756 -  
757 -###### 概述  
758 -  
759 -则一调用该接口推送订单司机和车辆信息,可以进行多次推送,以操作时间戳最新一次推送的司机车辆信息为准。  
760 -  
761 -###### 请求方式:  
762 -  
763 -post  
764 -  
765 -###### 请求路径:  
766 -  
767 -/assignVehicle  
768 -  
769 -###### Body参数  
770 -  
771 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
772 -| -------------------- | ------ | -------------------------- | ------------- | ------------------------ |  
773 -| code | String | 是 | 220101000001 | 则一订单号 |  
774 -| waybillCode | String | 是&nbsp; | Y220101000001 | 则一运单号 |  
775 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
776 -| driverName | String | 是 | 张三 | 司机姓名 |  
777 -| driverMobile | String | 是 | 18801000000 | 司机手机号 |  
778 -| licenseNumber | String | 是 | 沪DP2312 | 车牌号 |  
779 -| trailerLicenseNumber | String | 否 | 陕K7C72挂 | 挂车车牌号 |  
780 -| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |  
781 -| weight | Number | 否 | 200000 | 重量 |  
782 -| volume | Number | 否 | 16 | 体积 |  
783 -  
784 -###### 返回示例  
785 -  
786 -```json  
787 -{  
788 - "success": true,  
789 - "businessException": false,  
790 - "errorCode": null,  
791 - "message": null,  
792 - "result": {  
793 - "code": "则一订单号",  
794 - "customerOrderCode": "客户订单号"  
795 - }  
796 -}  
797 -```  
798 -  
799 -  
800 -  
801 -#### 推送发车信息  
802 -  
803 -##### 接口信息  
804 -  
805 -###### 概述  
806 -  
807 -则一调用该接口推送发车运输数据。  
808 -  
809 -###### 请求方式:  
810 -  
811 -post  
812 -  
813 -###### 请求路径:  
814 -  
815 -/departVehicle  
816 -  
817 -###### Body参数  
818 -  
819 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
820 -| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |  
821 -| code | String | 是 | 220101000001 | 则一订单号 |  
822 -| waybillCode | String | 是&nbsp;&nbsp; | Y220101000001 | 则一运单号 |  
823 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
824 -| departTime | Number | 是 | 1643251533306 | 发车时间戳 |  
825 -| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |  
826 -| weight | Number | 否 | 200000 | 重量 |  
827 -| volume | Number | 否 | 16 | 体积 |  
828 -  
829 -###### 返回示例  
830 -  
831 -```json  
832 -{  
833 - "success": true,  
834 - "businessException": false,  
835 - "errorCode": null,  
836 - "message": null,  
837 - "result": {  
838 - "code": "则一订单号",  
839 - "customerOrderCode": "客户订单号"  
840 - }  
841 -}  
842 -```  
843 -  
844 -#### 推送到车信息  
845 -  
846 -##### 接口信息  
847 -  
848 -###### 概述  
849 -  
850 -则一调用该接口推送到达数据。  
851 -  
852 -###### 请求方式:  
853 -  
854 -post  
855 -  
856 -###### 请求路径:  
857 -  
858 -/arriveVehicle  
859 -  
860 -###### Body参数  
861 -  
862 -| 名称 | 类型 | 必填 | 示例值 | 描述 |  
863 -| ----------------- | ------ | -------------------------- | ------------- | ------------------------ |  
864 -| code | String | 是 | 220101000001 | 则一订单号 |  
865 -| waybillCode | String | 是&nbsp;&nbsp;&nbsp; | Y220101000001 | 则一运单号 |  
866 -| customerOrderCode | String | 是&nbsp;&nbsp;&nbsp;&nbsp; | 220101000001 | 客户订单号,订单唯一标识 |  
867 -| arriveTime | Number | 是 | 1643251533306 | 到车时间戳 |  
868 -| operateTime | Number | 是 | 1643251533306 | 操作时间戳 |  
869 -  
870 -###### 返回示例  
871 -  
872 -```json  
873 -{  
874 - "success": true,  
875 - "businessException": false,  
876 - "errorCode": null,  
877 - "message": null,  
878 - "result": {  
879 - "code": "则一订单号",  
880 - "customerOrderCode": "客户订单号"  
881 - }  
882 -}  
883 -```  
884 -  
885 -### Java-sdk下载  
886 -  
887 -[zy-java-sdk](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar)  
888 -  
889 -  
890 -  
891 -### 2022-03-09更新日志  
892 -  
893 -为了保证接口的通用性,本次涉及到改动的信息如下  
894 -  
895 -1. [下单](http://open-doc.shjiuze.cn/order.html#下单): 接口返回值移除子单集合,通过接单接口推送。  
896 -2. [接单接口](http://open-doc.shjiuze.cn/order.html#接单接口):由推送参考价改为接单接口,推送运单集合及每个运单的参考价格。  
897 -3. 对接接口中子单号subCode参数命名更改为运单号waybillCode。  
898 \ No newline at end of file 0 \ No newline at end of file