[toc] # 车辆维保对接API 则一提供了不同规范的API,调用服务端API前,需了解开发前须知及调用流程。本文提供了调用则一服务端API示例,供开发者参考。 ## 白名单 则一服务端API接口访问有IP白名单限制,需要接口调用方提供调用API的服务器IP地址。 ## 数据加签 采用md5(32位小写)算法生成签名 appKey(则一提供) + appSecret(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(请求数据) ## 数据加密 数据加密采用AES算法 加密模式: CBC 填充方式:PKCS5Padding 偏移量:iv(则一提供) 加密内容:appKey(则一提供) + timestamp(当前时间戳毫秒) + nonce(6位随机码大小写字母数子组合) + data(加密数据) 密钥: appSecret(则一提供) 输出:base64 字符集:utf-8 注:无敏感数据则无需加密 ## 获取访问凭证 ### 概述 调用则一服务API时,都需要先获取对应权限类型的访问凭证accessToken。访问凭证(accessToken)是由则一权限系统颁发的,用来校验调用者的身份信息,确保调用者具有要执行的操作的权限。 **说明**: 在使用accessToken时,请注意: * accessToken的有效期默认为30天,有效期内重复获取会返回相同结果,过期后获取会返回新的accessToken。 * 开发者需要缓存accessToken,用于后续接口的调用。不能频繁调用获取accessToken接口,否则会受到频率拦截。 * 当调用业务API时,如果返回状态码为401,则说明accessToken不正确或已过期,这时需要重新获取accessToken后再调用对应的API。 ### 接口信息 #### 请求方式: post #### 请求地址: * 生产:https://gw.shjiuze.cn/auth-service-api/login/password * 测试:https://test.shjiuze.cn/auth-service-api/login/password #### Body参数 | 名称 | 类型 | 必填 | 示例值 | 描述 | | -------- | ------ | ---- | ----------- | ---------------- | | username | String | 是 | zhangsan | 用户名,则一提供 | | password | String | 是 | password123 | 密码,则一提供 | #### 返回参数 | 名称 | 类型 | 示例值 | 描述 | | ------------------------------ | ---------- | -------------------------------- | -------------------------------------------------- | | success | boolean | true | 成功标识: true 成功,false 失败 | | businessException | boolean | false | 业务异常标识: true 业务异常,false 正常 | | errorCode | String | 200 | 错误码: 200 业务异常,500 系统异常, 空表示无错误 | | message | String | 订单号不能为空 | 错误信息,无错误则返回空 | | result | ZYTokenDto | | accessToken结果数据 | |     accessToken | String | 000626f15b4b41bba6fe56216a5d2f73 | accessToken | |     expiresIn | Integer | 2060 | 有效期限单位秒,accessToken在2060秒后过期 | |     tokenType | String | bearer | token类型 | #### 请求示例 ##### Http方式 ```http POST /auth-service-api/login/password HTTP/1.1 Host:test.shjiuze.cn Content-Type:application/json { "username" : "zeyi", "password" : "test1111" } ``` ##### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) ```java public class Sample { public static void main(String[] args_) { String appKey = "appkey"; String appSecret = "appSecret"; ZYClient zyClient = new ZYClient(appKey, appSecret); ZYTokenRequestDto zyTokenRequest = new ZYTokenRequestDto(); zyTokenRequest.setUsername("zeyi"); zyTokenRequest.setPassword("test1111"); String body = gson.toJson(zyTokenRequest); HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + Constants.TOKEN_PATH, body); if(httpResponseData == null) { throw new TokenException("则一Token请求失败,返回为空!"); } ZYResponse zyResponse = gson.fromJson(httpResponseData.getBody(), new TypeToken>(){}.getType()); if(!Boolean.TRUE.equals(zyResponse.isSuccess())) { throw new TokenException("则一Token请求返回失败!" + zyResponse.getMessage()); } if(zyResponse.getResult() == null) { throw new TokenException("则一Token请求返回失败,返回结果为空!" + zyResponse.getMessage()); } if(StringUtils.isBlank(zyResponse.getResult().getAccessToken())) { throw new TokenException("则一Token请求返回数据异常,AccessToken为空!" + zyResponse.getMessage()); } // 结果 zyResponse.getResult(); } } ``` #### 返回示例 ```json { "success": true, "businessException": false, "errorCode": null, "message": null, "result": { "accessToken": "64d7f367-609b-4f7d-a84d-a3d2a0b5ad85", "expiresIn": 602105, "tokenType": "bearer" } } ``` ## 车辆报修 ### 简要描述 · 车辆报修 ### 请求URL · 车畅行提供 /vehicleRepair/repair ### 请求方式 · POST ### 请求示例 ```json { "code":"WBJL21071000044", "licenseNumber":"鄂ARY348", "trailerNumber":"辽BHC28挂", "owner":"上海则一", "brand":"东风", "specification":"9.6", "vanType":"厢车", "driverName":"张三", "driverMobile":"18888888888", "vin":"21654564894984LK", "engineNumber":"2156156", "engineModel":"大众EA111", "manufactureTime":"1642993757000", "registrationTime":"1642993757000", "mileage":100000, "trafficCompulsoryInsuranceStartTime":"1642993757000", "trafficCompulsoryInsuranceEndTime":"1642993757000", "commercialInsuranceStartTime":"1642993757000", "commercialInsuranceEndTime":"1642993757000", "medallionInvalidTime":"1642993757000", "monthMileage":100000, "recentRepairTime":"1642993757000", "vehicleObject":"车头", "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", "vehicleAddressLng":"113.465168", "vehicleAddressLat":"31.664137", "orgName":"上海区", "stationName":"鑫辉汽车维修中心", "stationAddress":"济南市高新区临港街道办事处大码头村" } ``` ### 参数 | 参数名 | 必传 | 类型 | | 说明 | | :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | code | 是 | string | | 维保单号 | | licenseNumber | 是 | string | | 车牌号 | | trailerNumber | 否 | string | | 挂车号 | | owner | 是 | string | | 车辆所有人 | | brand | 否 | string | | 品牌 | | specification | 否 | string | | 车型 | | vanType | 否 | string | | 车厢类型 | | driverName | 是 | string | | 司机联系姓名 | | driverMobile | 是 | string | | 司机联系电话 | | vin | 是 | string | | 车架号 | | engineNumber | 是 | string | | 发动机号码 | | engineModel | 否 | string | | 发动机型号 | | manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | mileage | 否 | Integer | | 车辆里程数 | | trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | monthMileage | 否 | Integer | | 月行驶里程数 | | recentRepairTime | 否 | string | | 最近维修日期时间戳(毫秒) | | vehicleObject | 是 | string | | 维修对象(车头、车挂、车头+车挂) | | vehicleAddress | 是 | string | | 车辆位置 | | vehicleAddressLng | 是 | string | | 车辆位置经度 | | vehicleAddressLat | 是 | string | | 车辆位置纬度 | | orgName | 是 | string | | 车辆所属区域 | | stationName | 是 | string | | 站点名称 | | stationAddress | 是 | string | | 站点地址 | | remark | 否 | string | | 备注 | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "XXX不存在!"} ## 车辆维修清单 ### 简要描述 · 车辆维修清单 ### 请求URL · 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/repairList · 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/repairList ### 请求示例 #### Http方式 ```http POST /vehicle-service-api/maintenance/repairList HTTP/1.1 Host:test.shjiuze.cn Content-Type:application/json { "code":"WBJL21071000044", "orderCode":"xxxx", "discountedAmount":100, "totalAmount":1000, "paidAmount":900, "mileage":121900, "type":"大修", "feeList":[ { "name":"工时费", "amount":100, "discountedAmount":0, "remark":"" }, { "name":"材料费", "amount":950, "discountedAmount":50, "remark":"" } ], "repairProjectList":[ { "name":"空调滤芯", "number":2, "unitPrice":275, "discountedAmount":50, "laborAmount":0, "totalAmount":500, "remark":"" }, { "name":"机油滤芯", "number":1, "unitPrice":400, "discountedAmount":0, "laborAmount":100, "totalAmount":500, "remark":"" }, ​ { ​ "name":"工时费用", ​ "timeQuota":"1", ​ "unitAmount":100, ​ "totalAmount":100, ​ "remark":"" ​ } ​ ] } ``` #### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) ```java public class Sample { public static void main(String[] args_) { String appKey = "appkey"; String appSecret = "appSecret"; String jsonData = "推送维修清单Body参数JSON数据"; ZYClient zyClient = new ZYClient(appKey, appSecret); HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); if(httpResponseData == null) { throw new BusinessException("则一请求失败,返回结果为空!"); } if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { //重新获取token再次请求 httpResponseData = zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/repairList", "accessToken", jsonData); } } } ``` ### Headers参数 | 名称 | 类型 | 必填 | 示例值 | 描述 | | ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | Authorization | String | 是     | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | ### Body参数 | 参数名 | 必传 | 类型 | 说明 | | ---------------------------------------- | ---- | ---------- | ------------------------------------------ | | code | 是 | string | 维保编码 | | orderCode | 是 | string | 维保订单号 | | discountedAmount | 否 | Bigdecimal | 折扣金额 | | totalAmount | 是 | Bigdecimal | 总金额 | | paidAmount | 是 | Bigdecimal | 应付金额 | | mileage | 是 | Integer | 车辆里程数 | | type | 是 | string | 维修类型 | | feeList | 否 | list | 费用明细集合 | |     name | 是 | string | 名称(工时费、拖车费等等) | |     unit | 否 | string | 单位 | |     unitPrice | 否 | Bigdecimal | 单价 | |     number | 否 | Integer | 数量 | |     amount | 是 | Bigdecimal | 金额 | |     discountedAmount | 是 | Bigdecimal | 折扣金额 | |     remark | 否 | string | 备注 | | repairProjectList | 否 | list | 维修项目集合(包含配件信息) | |     name | 是 | string | 项目名称 | |     unit | 否 | string | 单位 | |     number | 否 | Integer | 数量 | |     unitPrice | 是 | Bigdecimal | 单价 | |     discountedAmount | 否 | Bigdecimal | 折扣金额 | |     totalAmount | 是 | Bigdecimal | 合计金额 | |     timeQuota | 否 | Bigdecimal | 工时定额 | |     projectType | 是 | string | 维修项目类型(配件:materials\|项目:project) | |     remark | 否 | string | 备注 | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} ## 车辆保养 ### 简要描述 · 车辆保养信息推送 ### 请求URL · 车畅行提供/vehicleMaintain/maintain ### 请求方式 · POST ### 请求示例 ```json { "code":"WBJL21071000044", "licenseNumber":"鄂ARY348", "trailerNumber":"辽BHC28挂", "owner":"上海则一", "brand":"东风", "specification":"9.6", "vanType":"厢车", "driverName":"张三", "driverMobile":"18888888888", "vin":"21654564894984LK", "engineNumber":"2156156", "engineModel":"大众EA111", "manufactureTime":"1642993757000", "registrationTime":"1642993757000", "mileage":100000, "trafficCompulsoryInsuranceStartTime":"1642993757000", "trafficCompulsoryInsuranceEndTime":"1642993757000", "commercialInsuranceStartTime":"1642993757000", "commercialInsuranceEndTime":"1642993757000", "medallionInvalidTime":"1642993757000", "monthMileage":100000, "recentMaintainTime":"1642993757000", "vehicleObject":"车头", "vehicleAddress":"湖北省随州市曾都区淅河镇002县道", "vehicleAddressLng":"113.465168", "vehicleAddressLat":"31.664137", "orgName":"上海区", "stationName":"鑫辉汽车维修中心", "stationAddress":"济南市高新区临港街道办事处大码头村" } ``` ### 参数 | 参数名 | 必传 | 类型 | | 说明 | | :---------------------------------- | ---- | ------- | ---- | ------------------------------- | | code | 是 | string | | 维保单号 | | licenseNumber | 是 | string | | 车牌号 | | trailerNumber | 否 | string | | 挂车号 | | owner | 是 | string | | 车辆所有人 | | brand | 否 | string | | 品牌 | | specification | 否 | string | | 车型 | | vanType | 否 | string | | 车厢类型 | | driverName | 是 | string | | 司机联系姓名 | | driverMobile | 是 | string | | 司机联系电话 | | vin | 是 | string | | 车架号 | | engineNumber | 是 | string | | 发动机号码 | | engineModel | 否 | string | | 发动机型号 | | manufactureTime | 否 | string | | 出厂日期时间戳(毫秒) | | registrationTime | 否 | string | | 注册日期时间戳(毫秒) | | mileage | 否 | Integer | | 车辆里程数 | | trafficCompulsoryInsuranceStartTime | 否 | string | | 交强险开始时间戳(毫秒) | | trafficCompulsoryInsuranceEndTime | 否 | string | | 交强险结束时间戳(毫秒) | | commercialInsuranceStartTime | 否 | string | | 商业险开始时间戳(毫秒) | | commercialInsuranceEndTime | 否 | string | | 商业险结束时间戳(毫秒) | | medallionInvalidTime | 否 | string | | 营运证失效日期时间戳(毫秒) | | monthMileage | 否 | Integer | | 月行驶里程数 | | recentMaintainTime | 否 | string | | 最近保养日期时间戳(毫秒) | | vehicleObject | 是 | string | | 保养对象(车头、车挂、车头+车挂) | | vehicleAddress | 是 | string | | 车辆位置 | | vehicleAddressLng | 是 | string | | 车辆位置经度 | | vehicleAddressLat | 是 | string | | 车辆位置纬度 | | orgName | 是 | string | | 车辆所属区域 | | stationName | 是 | string | | 站点名称 | | stationAddress | 是 | string | | 站点地址 | | remark | 否 | string | | 备注 | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} ## 车辆保养清单 ### 简要描述 · 车辆保养清单 ### 请求URL · 测试环境:https://test.shjiuze.cn/vehicle-service-api/maintenance/maintainList · 生产环境:https://gw.shjiuze.cn/vehicle-service-api/maintenance/maintainList ### 请求示例 #### Http方式 ```http POST /vehicle-service-api/maintenance/maintainList HTTP/1.1 Host:test.shjiuze.cn Content-Type:application/json { "code":"WBJL21071000044", "orderCode":"xxxx", "discountedAmount":100, "totalAmount":1000, "paidAmount":900, "mileage":121900, "feeList":[ { "name":"工时费", "amount":100, "discountedAmount":0, "remark":"" }, { "name":"材料费", "amount":950, "discountedAmount":50, "remark":"" } ], "maintainProjectList":[ { "name":"空调滤芯", "number":2, "unitPrice":275, "discountedAmount":50, "laborAmount":0, "totalAmount":500, ​ "type":"MAINTAIN" ​ "remark":"" ​ }, ​ { ​ "name":"机油滤芯", ​ "number":1, ​ "unitPrice":400, ​ "discountedAmount":0, ​ "laborAmount":100, ​ "totalAmount":500, ​ "type":"MAINTAIN" ​ "remark":"" ​ }, ​ { ​ "name":"工时费用", ​ "timeQuota":"1", ​ "unitAmount":100, ​ "amount":100, ​ "remark":"" ​ } ​ ] } ``` #### Java-sdk方式 [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) ```java public class Sample { public static void main(String[] args_) { String appKey = "appkey"; String appSecret = "appSecret"; String jsonData = "保养清单Body参数JSON数据"; ZYClient zyClient = new ZYClient(appKey, appSecret); HttpResponseData httpResponseData = zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); if(httpResponseData == null) { throw new BusinessException("则一请求失败,返回结果为空!"); } if(httpResponseData.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) { //重新获取token再次请求 httpResponseData = zyClient.doPost(Constants.TEST_HOST + "/vehicle-service-api/maintenance/maintainList", "accessToken", jsonData); } } } ``` ### Headers参数 | 名称 | 类型 | 必填 | 示例值 | 描述 | | ------------- | ------ | -------------------------- | -------------------------------- | ------------------------------------------------------------ | | Authorization | String | 是     | Bearer a2c5680001 | 调用服务端API的应用凭证accessToken,通过调用获取访问凭证接口获取。 | | appKey | String | 是 | 0867ef5f23ef446483749e19e1692b40 | 则一提供 | | timestamp | String | 是 | 1643251533306 | 当前时间戳毫秒值 | | nonce | String | 是 | gdst9t | 6位小写字母数字组合随机串 | | sign | String | 是 | fa3ed338d6dfe18e7273c8692234ee70 | 签名:appKey(则一提供) + appSecret(则一提供) + timestamp + nonce(6位随机码) + data(body参数)通过md5(32位小写)算法生成 | ### Body参数 | 参数名 | 必传 | 类型 | 说明 | | ----------------------------------------------- | ---- | ---------- | -------------------------------------------- | | code | 是 | string | 维保编码 | | orderCode | 是 | string | 维保订单号 | | discountedAmount | 否 | Bigdecimal | 折扣金额 | | totalAmount | 是 | Bigdecimal | 总金额 | | paidAmount | 是 | Bigdecimal | 应付金额 | | mileage | 是 | Integer | 车辆里程数 | | feeList | 否 | list | 费用明细集合 | |     name | 是 | string | 名称(工时费、材料费、拖车费等等) | |     unit | 否 | string | 单位 | |     unitPrice | 否 | Bigdecimal | 单价 | |     number | 否 | Integer | 数量 | |     amount | 是 | Bigdecimal | 金额 | |     discountedAmount | 是 | Bigdecimal | 折扣金额 | |     remark | 否 | string | 备注 | | maintainProjectList | 否 | list | 保养项目集合(包含配件信息) | |     name | 是 | string | 项目名称 | |      unit | 否 | string | 单位 | |     number | 是 | Integer | 数量 | |     unitPrice | 是 | Bigdecimal | 单价 | |     discountedAmount | 否 | Bigdecimal | 折扣金额 | |     totalAmount | 是 | Bigdecimal | 合计金额 | |     type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | |     remark | 否 | string | 备注 | |     timeQuota | 否 | Bigdecimal | 工时定额 | |     projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | |     nextMaintainanceMileage | 否 | Integer | 下次保养里程数 | |     nextMaintainanceTime | 是 | string | 下次保养时间戳(毫秒) | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} ## 车辆维保审核 ### 简要描述 · 车辆维保审核 ### 请求URL · 车畅行提供 /vehicleMaintainRepair/audit ### 请求方式 · POST ### 请求示例 { "code":"WBJL21071000044", "auditStatus":"PASS", "auditRemark":"审核备注", "auditeTime":"1642755099000", "contactUser":"张大三", "contactMobile":"13277676171" } ### 参数 | 参数名 | 必传 | 类型 | 说明 | | ------------- | ---- | ------ | ------------------------------------------- | | code | 是 | string | 维保编码 | | auditStatus | 是 | string | 审核状态(PASS:审核通过,NO_PASS:审核不通过) | | auditRemark | 否 | string | 审核备注 | | auditeTime | 是 | string | 审核时间戳(毫秒) | | contactUser | 否 | string | 审核联系人 | | contactMobile | 否 | string | 审核联系人电话 | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx不存在!"} ## 车辆维保作废 ### 简要描述 · 车辆维保作废 ### 请求URL · 车畅行提供 /vehicleMaintainRepair/delete ### 请求方式 · POST ### 请求示例 { "code":"WBJL21071000044", "reason":"上报信息错误", "operationTime":"1642755099000", "operationUser":"张大三", "operationMobile":"13277676171" } ### 参数 | 参数名 | 必传 | 类型 | 说明 | | --------------- | ---- | ------ | ---------------- | | code | 是 | string | 维保编码 | | reason | 否 | string | 作废原因 | | operationTime | 是 | string | 操作时间戳(毫秒) | | operationUser | 否 | string | 操作人 | | operationMobile | 否 | string | 操作人电话 | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx异常!"} ## 维保单价格推送 ### 简要描述 维保单价格推送 ### 请求方式 · POST ### 请求URL · 车畅行提供 /vehicleMaintainRepair/confirmPirce

请求示例

{ "code":"WBJL21071000044", "confirmAmount":1000, "feeList":[ { "name":"工时费", "confirmNumber":0, "confirmAmount":0 }, { "name":"材料费", "confirmNumber":0, "confirmAmount":0 } ], "maintainProjectList":[ { "name":"空调滤芯", "confirmNumber":2, "confirmAmount":0, "type":"MAINTAIN", "projectType":"materials" }, { "name":"机油滤芯", "confirmNumber":1, "confirmAmount":500, "type":"MAINTAIN", "projectType":"materials" } ] } ### Body参数 | 参数名 | 必传 | 类型 | 说明 | | ------------------------------------- | ---- | ---------- | -------------------------------------------- | | code | 是 | string | 维保编码 | | confirmAmount | 是 | Bigdecimal | 则一确认总金额 | | feeList | 是 | list | 费用明细集合 | |     name | 是 | string | 名称(工时费、材料费、拖车费等等) | |     confirmNumber | 是 | Integer | 则一确认数量 | |     confirmAmount | 是 | Bigdecimal | 则一确认金额 | | maintainProjectList | 是 | list | 保养项目集合(包含配件信息) | |     name | 是 | string | 项目名称 | |     confirmNumber | 是 | Integer | 则一确认数量 | |     confirmAmount | 是 | Bigdecimal | 则一确认金额 | |     type | 是 | string | MAINTAIN:保养 或 REPAIR:维修 | |     projectType | 是 | string | 维保项目类型(配件:materials\|项目:project) | ### 返回正常示例 { "success": true, "businessException": false} ### 返回异常示例 { "success": false, "businessException": true, "errorCode": "200", "message": "xxx不能为空!"} ------------------------------------------------------------------------------------------ ### 2022-12-02文档编写 ### 2022-12-12更新日志 1. 车辆保修、车辆保养接口参数增加维保站点(stationName)、维保站点地址(stationAddress)字段。