|
6 years ago | |
---|---|---|
image | 6 years ago | |
src | 6 years ago | |
.gitignore | 6 years ago | |
PROBLEMS.md | 6 years ago | |
README.md | 6 years ago | |
pom.xml | 6 years ago |
本文档为CTMS第三方开放接口文档,操作流程为:
什么是主账号:即贵公司在我们系统中创建的第一个账号,其后所有的贵公司系统中的账号都是子账号。如果不知道自己是否使用的主账号或者主账号具体是哪个请联系相关负责人。
接口地址:测试环境=http://api.test.56ctms.com ,正式环境=http://api.56ctms.com
获取接口访问令牌: /login.html?redirectUri=你们的回调地址(获取令牌(access_token)) (PS:输入申请到的CTMS账号密码) 此外,也可以通过调用获取登陆凭证接口生成令牌
调用接口方式:url + ?access_token=生成的token,参数传递支持JSON格式,例:http://api.test.56ctms.com/customer_order/create_customer_order?access_token=fe12047e-52b1-418c-848c-d08a885095a5
调试地址: /swagger-ui.html
所有接口支持RESTful的方式访问,返回结果首先判断http状态码,有如下几种情况:
简要描述: 获取登陆凭证
请求 URL: /user/generate_access_token
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
userName |
是 | 账号 |
|
password |
是 | 密码 |
返回示例
{
"body":
{
"accessToken":"5dcb8779-a714-4a52-9956-857905e16b9e",
"refreshToken":"d062ebe7-2719-4e82-b822-5ec22714937e"
},
"status":200
}
{
"status": 500,
"message": "账号或密码不正确"
}
简要描述: 更新登陆凭证
请求 URL: /user/refresh_access_token
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
userName |
是 | 账号 |
|
refreshToken |
是 | 刷新凭证 |
返回示例
{
"body":
{
"accessToken":"5dcb8779-a714-4a52-9956-857905e16b9e",
"refreshToken":"d062ebe7-2719-4e82-b822-5ec22714937e"
},
"status":200
}
{
"status": 500,
"message": "账号或刷新凭证不正确"
}
简要描述: 开单
请求 URL: /order/create_order
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orderList |
是 | Array[OrderEntity] |
运单列表 |
其中OrderEntity结构如下:
OrderEntity {
private String batchNumber;//批次号:创建订单可不填,确认批次必填
private String orderNumber;//订单号:客户系统和TMS系统中订单关联的唯一依据(必填)
private String wmsLocation; //集货位
private Integer deliveryTime; //提货时间:时间戳格式(必填)
private Integer deliveryType; //提送类型:选填, 1自提,2送货
private Integer appointArriveTime; //预约送到时间:时间戳格式,选填
private String customerOrderNumber; // 客户单号
private String startAddress; // 起始地
private String endAddress; // 目的地
private String consignerName;//发货人姓名(必填)
private String consignerPhone;//发货人电话
private String consignerAddress;//发货人地址(必填)
private String consignerProvince; // 发货人所在省份
private String consignerCity;//发货人所在城市
private String consignerDistrict;//发货人所在地区
private String consigneeName;//收货人姓名
private String consigneePhone;//收货人电话
private String consigneeAddress;//收货人地址
private String consigneeProvince; // 收货人所在省份
private String consigneeCity;//收货人所在城市
private String consigneeDistrict;//收货人所在地区
private Double shipperPay;//上游运费
private Integer shipperPayType; //上游运费支付方式:可不填, 1:现付,2到付,3回付,4周结,5月结,6货款扣,7季度结
private Double driverPay; //司机运费
private Integer driverPayType; //司机运费支付方式:可不填, 1:现付,2到付,3回付,4周结,5月结,6货款扣,7季度结
private Integer receiptCount; //回单数量
private Double freightCollect; //代收运费:可不填
private Double paymentCollect; //代收货款:可不填
private String warehouseCode;//第三方参数:仓库编码
private String ownerCode; //第三方参数:货主编码
private String scheduleOrderCode; //第三方参数:调度单号
private String orderType; //第三方参数:业务类型
private String deliveryArea; //第三方参数:配送区域
private String omsNumber; //第三方参数:oms订单号
private Integer preDeliveryTime; //第三方参数:预约送货时间
private String payMode; //第三方参数:付款方式
private String note; //备注:可不填
private Map<String, Object> extraFields; //备注扩展字端:可不填,key的值对应note1-6
private String organizationPath; // 所属组织路径, 可不填
private Double lng; //发货人经度
private Double lat; //发货人纬度
//货物列表
private List<CargoRequest> cargoList{
private String cargoNumber;//货物编号:用于货物相关接口,需要增/删/改货物的话需要传此字段
private String weight;//重量
private String volume;//体积
private String quantity;//件数
private String value;//货值
private String status;//货物状态
private String name;//货物名称
private String productModel;// 货物备注
private String note1; // 自定义备注1
private String note2; // 自定义备注2
private String note3; // 自定义备注3
private String note4; // 自定义备注4
private String note5; // 自定义备注5
private String note6; // 自定义备注6
}
}
返回示例
{
"code": 200,
"data": ["1712051703640558"],
"message": null
}
{
"code": 500,
"message": "订单创建失败"
}
简要描述: 查询订单
请求 URL: /order/find_order
请求方式: get
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orderNumber |
否 | String |
订单号 |
phoneNumber |
否 | String |
发货人手机号 |
customerNumber |
否 | String |
客户自定义单号 |
不传任何参数则查询所有 |
返回示例
{
"code": 200,
"message": null,
"data": [
{
"number": "1707171455038482",// 订单号
"wmsNumber": null,// wms订单号
"wmsLocation": null, // 集货号
"deliveryTime": 1500274800,// 提货时间
"customerOrderNumber": "", // 客户单号
"consigner": { // 发货人
"name": "张三",//姓名
"phone": "13311111111",//电话
"address": {
"province": null,//省
"city": null,//市
"district": null,//地区
"name": "计量大厦",//详细地址
"address": "计量大厦",//详细地址
"lng": 120.12592,//纬度
"lat": 30.277378//经度
}
},
"consignees": [//收货人
{
"name": "李四",//姓名
"phone": "13311111111",//电话
"address": {
"province": null,//省
"city": null,//市
"district": null,//地区
"name": "计量大厦",//详细地址
"address": "计量大厦",//详细地址
"lng": 120.12592,//纬度
"lat": 30.277378//经度
}
}
],
"cargo": {//货物
"name": "书本",//货物名称
"quantity": 3,//数量
"weight": 55,//重量(KG)
"volume": 6,//体积(L)
"value": 56,//货值(元)
},
"freightIn": {//上游运费
"amount": 22
},
"freightOut": {//下游运费
"amount": 11
},
"paymentCollect": 33,//代收货款
"needReceipt": 1,//是否需要回单
"receiptCount": 1,//回单数量
"note": "",//备注
"state": 2000,//状态
"publishTime": 1500274522,//发布时间
"receiveTime": 1500274522,//接单时间
"shipmentTime": null,//装货时间
"signedTime": null,//签收时间
"receiptStatus": null,//接单状态
"created": 1500274505,//订单创建时间
}
]
}
{
"status": 500,
"message": ""
}
简要描述: 批量查询订单
请求 URL: /order/query_orders
请求方式: POST, GET
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
page |
是 | int |
页码,1开始 |
size |
是 | int |
单页最大订单数 |
state |
否 | int |
订单状态,0已撤销,1已下单,2已接单,3已装货,4已签收,1000待处理,无法查看全部状态,不传则默认0已撤销 |
timeType |
否 | string |
查询时间类型,created录入时间,deliveryed提货时间,appointArrived预约提货时间,signed签收时间 |
startDate |
否 | string |
起始时间,格式"yyyy-MM-dd HH:mm:ss" |
endDate |
否 | string |
结束时间,格式"yyyy-MM-dd HH:mm:ss" |
customerOrderNumber |
否 | string |
客户单号 |
packNumber |
否 | string |
车次号 |
consignerName |
否 | string |
发货人姓名,模糊搜索 |
consignerPhone |
否 | string |
发货人电话,模糊搜索 |
consigneeName |
否 | string |
收货人姓名,模糊搜索 |
consigneePhone |
否 | string |
收货人电话,模糊搜索 |
driverName |
否 | string |
司机姓名,模糊搜索 |
driverPhone |
否 | string |
司机电话,模糊搜索 |
carNumber |
否 | string |
司机车牌号码,模糊搜索 |
返回示例
{
"code": 200,
"data": {
"total": 220,
"size": 1,
"elements": [
{
"uid": "558a2084e4b0ddab858a031e", // 主账号uid
"operator": "558a2084e4b0ddab858a031e", // 操作人uid
"deliveryTime": 1504526400, //提货时间
"source": 1, // 订单来源,1手工录入,2标准导入,4接口导入
"customerOrderNumber": "", // 客户单号
"startAddress": "", // 起始地址
"endAddress": "", // 目的地址
"waybillState": 1, // 运单状态,state为2000时才回有值,1已下单,2已接单,3已装货,4已签收
"consigner": { // 发货人
"address": { // 发货地址
"address": "河南省洛阳市洛龙区36号",
"lng": 30.2774986988,
"name": "河南省洛阳市洛龙区36号",
"lat": 120.1257948758
},
"phone": "123456789", // 发货人电话
"name": "332洛阳润格商贸有限公司" // 发货人姓名
},
"consignees" : [{ // 收货人
"address": { // 收货地址
"address": "河南省洛阳市洛龙区36号",
"lng": 30.2774986988,
"name": "河南省洛阳市洛龙区36号",
"lat": 120.1257948758
},
"phone": "123456789", // 收货人电话
"name": "332洛阳润格商贸有限公司" // 收货人姓名
},
],
"packNumber" : "P170714595E4D5D0007", // 车次号
"number": "1709041936863748", // 运单号
"appointArriveTime": 1504530600, // 预约送达时间
"id": "59ad3aa819a356001132aa98", // 运单id
"state": 1000, // 运单状态
"createUid": "558a2084e4b0ddab858a031e",
"freightIn": { // 上游运费
"amount": 1, // 上游费用
"payType": 1 // 上游费用支付方式, 1现付,2到付,3回付,4周结,5月结
},
"freightOut": { // 司机运费
"amount": 1, // 司机费用
"payType": 5 // 上游费用支付方式
},
"paymentCollect": 0, // 代收运费
"receiptCount": 1, // 回单数量
"needReceipt": 1, // 是否需要回单
"note": "", // 备注
"extraFields": { //备注扩展字端:可不填,key的值对应note1-6
"uppay1": "", // 上游自定义运费1
"uppay2": "", // 上游自定义运费2
"uppay3": "", // 上游自定义运费3
"uppay4": "", // 上游自定义运费4
"uppay5": "", // 上游自定义运费5
"uppay6": "", // 上游自定义运费6
"pay1": "", // 司机自定义运费1
"pay2": "", // 司机自定义运费2
"pay3": "", // 司机自定义运费3
"pay4": "", // 司机自定义运费4
"pay5": "", // 司机自定义运费5
"pay6": "", // 司机自定义运费6
"note1": "", // 自定义备注1
"note2": "", // 自定义备注2
"note3": "", // 自定义备注3
"note4": "", // 自定义备注4
"note5": "", // 自定义备注5
"note6": "", // 自定义备注6
"note7": "", // 自定义备注7
"note8": "", // 自定义备注8
"note9": "", // 自定义备注9
"note10": "", // 自定义备注10
"note11": "", // 自定义备注11
"note12": "" // 自定义备注12
},
"created": 1504524968, // 录入时间
"updated": 1506392577, // 更新时间
"publishTime" : 1500012379, // 下单时间
"receiveTime" : 1500012379, // 接单时间
"shipmentTime" : 1500019019, // 装货时间
"signedTime" : 1500019019, // 签收时间
}
],
"page": 1
}
}
{
"status": 500,
"message": ""
}
简要描述: 批量撤销订单
请求 URL: /order/cancel_orders
请求方式: POST, GET form提交
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
numbers |
是 | string |
订单number列表,多个订单用','隔开 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "撤销订单失败原因"
}
简要描述: 批量撤销订单v2
请求 URL: /order/cancel_orders/v2
请求方式: POST, GET
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
numbers |
是 | string |
订单number列表,多个订单用','隔开 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "撤销订单失败原因"
}
简要描述: 开单并创建车次
请求 URL: /order/create_order_pack
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orderList |
是 | Array[OrderEntity] |
运单列表 |
driverPhone |
否 | string |
司机电话 |
driverPhone; //接单司机,支持批量,多个司机之间用逗号隔开
orderList{
private String batchNumber;//批次号:创建订单可不填,确认批次必填
private String orderNumber;//订单号:客户系统和TMS系统中订单关联的唯一依据(必填)
private String wmsLocation; //集货位
private Integer deliveryTime; //提货时间:时间戳格式(必填)
private Integer deliveryType; //提送类型:选填, 1自提,2送货
private Integer appointArriveTime; //预约送到时间:时间戳格式,选填
private String customerOrderNumber; // 客户单号
private String startAddress; // 起始地
private String endAddress; // 目的地
private String consignerName;//发货人姓名(必填)
private String consignerPhone;//发货人电话
private String consignerAddress;//发货人地址(必填)
private String consignerProvince; // 发货人所在省份
private String consignerCity;//发货人所在城市
private String consignerDistrict;//发货人所在地区
private String consigneeName;//收货人姓名
private String consigneePhone;//收货人电话
private String consigneeAddress;//收货人地址
private String consigneeProvince; // 收货人所在省份
private String consigneeCity;//收货人所在城市
private String consigneeDistrict;//收货人所在地区
private Double shipperPay;//上游运费
private Integer shipperPayType; //上游运费支付方式:可不填, 1:现付,2到付,3回付,4周结,5月结,6货款扣,7季度结
private Double driverPay; //司机运费
private Integer driverPayType; //司机运费支付方式:可不填, 1:现付,2到付,3回付,4周结,5月结,6货款扣,7季度结
private Integer receiptCount; //回单数量
private Double freightCollect; //代收运费:可不填
private Double paymentCollect; //代收货款:可不填
private String warehouseCode;//第三方参数:仓库编码
private String ownerCode; //第三方参数:货主编码
private String scheduleOrderCode; //第三方参数:调度单号
private String orderType; //第三方参数:业务类型
private String deliveryArea; //第三方参数:配送区域
private String omsNumber; //第三方参数:oms订单号
private Integer preDeliveryTime; //第三方参数:预约送货时间
private String payMode; //第三方参数:付款方式
private String note; //备注:可不填
private Map<String, Object> extraFields; //备注扩展字端:可不填,key的值对应note1-6
private String organizationPath; // 所属组织路径, 可不填
private Double lng; //发货人经度
private Double lat; //发货人纬度
//货物列表
private List<CargoRequest> cargoList{
private String cargoNumber;//货物编号:用于货物相关接口,需要增/删/改货物的话需要传此字段
private String weight;//重量
private String volume;//体积
private String quantity;//件数
private String value;//货值
private String status;//货物状态
private String name;//货物名称
private String productModel;// 货物备注
private String note1; // 自定义备注1
private String note2; // 自定义备注2
private String note3; // 自定义备注3
private String note4; // 自定义备注4
private String note5; // 自定义备注5
private String note6; // 自定义备注6
}
}
返回示例
{"code":200,
"data": {
"numbers":["1712051703640558"], // 创建运单号
"ids":["5a2660f3d109770010026df9"], // 运单id
"packNumber":"P171205558E431E0001" // 车次号
}
}
{
"code": 500,
"message": "订单车次失败"
}
简要描述: 更新批次
请求 URL: /order/update_batch
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orderList |
是 | Array[OrderEntity] |
返回示例
{
"code": 200,
"message": null
}
{
"status": 500,
"message": "订单创建失败"
}
对象说明:
public class OrderRequest implements Serializable {
List<OrderEntity> orderList;
}
简要描述: 创建数据看板
请求 URL: /alogdata/create_alogdata
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
requests |
是 | List<AlogdataRequest> |
AlogdataRequest是一个对象 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "创建失败"
}
简要描述: 创建数据看板库存
请求 URL: /alogdata/create_aloginventory
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
requests |
是 | List<AloginventoryRequest> |
AloginventoryRequest |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "创建失败"
}
对象说明:
public class AlogdataRequest {
private String warehouse;//货仓
private double total;//总计
private double tasking;//正在计划
private double deliveryed;//已发货
private double needDelivery;//未发货
private double lng;//经度
private double lat;//纬度
}
public class AloginventoryRequest {
private String warehouse;//货仓
private int total;//总计(数量)
private double weight;//重量(吨位)
private double volume;//容积率
private int updated;//当天时间戳
private double lng;//经度
private double lat;//纬度
}
简要描述: 追加订单货物
请求 URL: /cargo/add
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orderNumber |
是 | String |
订单号,客户单号或wms单号 |
cargoNumber |
是 | String |
货物号 |
weight |
否 | String |
重量 |
volume |
否 | String |
体积 |
quantity |
否 | String |
件数 |
value |
否 | String |
货值 |
status |
否 | String |
货物状态 |
name |
否 | String |
货物名称 |
productModel |
否 | String |
货物备注 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "创建失败"
}
简要描述: 修改订单货物
请求 URL: /cargo/update
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
cargoNumber |
是 | String |
货物号 |
weight |
否 | String |
重量 |
volume |
否 | String |
体积 |
quantity |
否 | String |
件数 |
value |
否 | String |
货值 |
status |
否 | String |
货物状态 |
name |
否 | String |
货物名称 |
productModel |
否 | String |
货物备注 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "创建失败"
}
简要描述: 删除订单货物
请求 URL: /cargo/remove
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
cargoNumber |
是 | String |
货物号 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "创建失败"
}
对象说明:
public class CargoRequest {
private String orderNumber;//订单号
private String cargoNumber;//货物号
private String weight;//重量
private String volume;//体积
private String quantity;//件数
private String value;//货值
private String status;//货物状态
private String name;//货物名称
private String productModel;//货物备注
}
简要描述: 订单订阅,请使用v2接口
请求 URL: /order/subscribe
请求方式: POST, form提交
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
states |
否 | String |
需要订阅的订单状态,0:已撤销,1:已下单,2:已接单,3:已装货,4:已签收;支持多选,多个状态之间用','隔开 |
callbackUrl |
是 | String |
回调地址,以http://或https://开头,支持每个用户使用不同的回调地址 |
version |
是 | String |
版本号,v1 |
resultFormat |
否 | String |
返回报文格式,默认是json的,可选项json,form |
signMode |
否 | String |
签名方式,v1 |
appKey |
否 | String |
签名appKey,signMode不为空时必填 |
appSecret |
否 | String |
签名appSecret,signMode不为空时必填 |
method |
否 | String |
签名method,signMode不为空时必填 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": ""
}
{
"number ": "1609171412804505", /*订单号*/
"wmsNumber": "wmsNumber", /*出库单号*/
"customerOrderNumber": "111111", /*客户单号*/
"packNumber": "P20170805094004f32c20dd", /*车次号*/
"remark": "xx 订单已签收", /*订单日志*/
"state": 1, /*订单状态*/
"driver": "某司机", /*司机名称*/
"carNumber": "浙A12345", /*车牌号码*/
"phoneNumber": "13812345678" /*司机电话*/
}
回调地址的返回结果中,如果成功要在返回信息中包含"code": 200,系统会根据这个值来判断消息是否投递成功,否则会重新进行投递
简要描述: 订单订阅
请求 URL: /order/subscribe/v2
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
states |
否 | String |
需要订阅的订单状态,0:已撤销,1:已下单,2:已接单,3:已装货,4:已签收;支持多选,多个状态之间用','隔开 |
callbackUrl |
是 | String |
回调地址,以http://或https://开头,支持每个用户使用不同的回调地址 |
version |
是 | String |
版本号,v1 |
resultFormat |
否 | String |
返回报文格式,默认是json的,可选项json,form |
signMode |
否 | String |
签名方式,v1 |
appKey |
否 | String |
签名appKey,signMode不为空时必填 |
appSecret |
否 | String |
签名appSecret,signMode不为空时必填 |
method |
否 | String |
签名method,signMode不为空时必填 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": ""
}
{
"number ": "1609171412804505", /*订单号*/
"wmsNumber": "wmsNumber", /*出库单号*/
"customerOrderNumber": "111111", /*客户单号*/
"packNumber": "P20170805094004f32c20dd", /*车次号*/
"remark": "xx 订单已签收", /*订单日志*/
"state": 1, /*订单状态*/
"driver": "某司机", /*司机名称*/
"carNumber": "浙A12345", /*车牌号码*/
"phoneNumber": "13812345678", /*司机电话*/
"groupName": "xx运输队", /*车队*/
"receiptUrls":["http://oss.kuaihuoyun.com/1.png","http://oss.kuaihuoyun.com/2.png"] /*回单照片*/
"abnormal":true, /*是否异常*/
"signer":"签收人",
"note":"异常原因"
}
回调地址的返回结果中,如果成功要在返回信息中包含"code": 200,系统会根据这个值来判断消息是否投递成功,否则会重新进行投递
简要描述: 取消订单订阅
请求 URL: /order/unsubscribe
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": ""
}
简要描述: 车次订阅
请求 URL: /order/orderPack/subscribe
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
states |
否 | String |
需要订阅的车次状态,19000:删除/撤销车次,40000:指派车次,40001:更新车次;支持多选,多个状态之间用','隔开 |
callbackUrl |
是 | String |
回调地址,以http://或https://开头,支持每个用户使用不同的回调地址 |
version |
否 | String |
版本号,v1 |
resultFormat |
否 | String |
返回报文格式,默认是json的,可选项json,form |
signMode |
否 | String |
签名方式,v1 |
appKey |
否 | String |
签名appKey,signMode不为空时必填 |
appSecret |
否 | String |
签名appSecret,signMode不为空时必填 |
method |
否 | String |
签名method,signMode不为空时必填 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": ""
}
{
"packNumber ": "P1609171412804505", /*tms车次号*/
"createTime": "2018-05-28 15:32:12", /*tms车次创建时间*/
"state": 19000, /*19000:删除/撤销车次,40000:指派车次,40001:更新车次*/
"driver": "某司机", /*司机名称*/
"carNumber": "浙A12345", /*车牌号码*/
"groupName": "xx运输队", /*车队*/
"driverPhone": "13812345678", /*司机电话*/
"orderNumbers":["2323424234234","609171412804505"] /*tms车次订单集合*/
"wmsNumbers" : "wmsNumber",/*出库单号集合*/
"customerOrderNumbers": "xxx", /*客户单号集合*/
"remark":"232323", /*备注*/
}
回调地址的返回结果中,如果成功要在返回信息中包含"code": 200,系统会根据这个值来判断消息是否投递成功,否则会重新进行投递
简要描述: 取消车次订阅
请求 URL: /order/orderPack/unsubscribe
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": ""
}
简要描述: 获取组织机构列表
请求 URL: /organization/list
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|
返回示例
{
"code":200,
"message":null,
"data":[
{
"nodeId":0,
"name":"总部",
"path":"0-0"
},
{
"nodeId":11,
"name":"网点1",
"path":"0-11"
},
{
"nodeId":12,
"name":"杭州网点2",
"path":"0-12"
}
]
}
{
"code": 500,
"message": ""
}
对象说明:
public class OrganizationEntity implements Serializable {
private Integer nodeId; // 机构节点id
private String name; // 机构名
private String path; // 父节点路径
}
简要描述: 添加客户
请求 URL: /customer/add_customers
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
customers |
是 | Array[CustomerEntity] |
客户列表 |
其中CustomerEntity结构如下:
CustomerEntity {
private String name; //客户名称:必填
private String phone; //客户电话:必填
private String address; //客户地址:必填
private int type; //客户类型:必填 1发货人,2收货人
private int paymentType; //支付方式:必填 1现付 2到付 3回付 4周结 5月结 6货款扣 7季度结
private String remark1; //备注1:非必填
private String remark2; //备注2:非必填
private String remark3; //备注3:非必填
}
返回示例
{
"code":200,
"message":null,
"data": true
}
{
"code": 500,
"message": ""
}
简要描述: 受理开单
请求 URL: /customer_order/create_customer_order
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orders |
是 | Array[CustomerOrderEntity] |
运单列表 |
其中CustomerOrderEntity结构如下:
CustomerOrderEntity {
appointArriveTime (integer): 预约送达时间:非必填 ,
consigneeAddress (string): 收货人地址:非必填 ,
consigneeName (string): 收货人姓名:非必填 ,
consigneePhone (string): 收货人电话:非必填 ,
consignerAddress (string): 发货人地址:必填 ,
consignerName (string): 发货人姓名:必填 ,
consignerPhone (string): 发货人电话:必填 ,
deliveryTime (integer): 提货时间:非必填 ,
deliveryType (integer): 提送类型:非必填 ,
deviceNumber (string): 绑定设备号:非必填 ,
endAddress (string): 目的地:非必填 ,
//发货方经纬度
consignerLocation {
lng (double), 经度
lat (double) 纬度
},
//收货方经纬度
consigneeLocation {
lng (double), 经度
lat (double) 纬度
},
note1 (string): 自定义备注1:非必填 ,
note10 (string): 自定义备注10:非必填 ,
note11 (string): 自定义备注11:非必填 ,
note12 (string): 自定义备注12:非必填 ,
note2 (string): 自定义备注2:非必填 ,
note3 (string): 自定义备注3:非必填 ,
note4 (string): 自定义备注4:非必填 ,
note5 (string): 自定义备注5:非必填 ,
note6 (string): 自定义备注6:非必填 ,
note7 (string): 自定义备注7:非必填 ,
note8 (string): 自定义备注8:非必填 ,
note9 (string): 自定义备注8:非必填 ,
organizationPath (string): 组织机构:非必填 ,
originalOrderNumber (string): 原始单号:非必填 ,
receiptCount (integer): 回单数:非必填 ,
remarks (string): 备注:非必填 ,
shipperPay (number): 上游运费:非必填 ,
shipperPayType (integer): 上游运费支付方式:非必填 ,
startAddress (string): 起始地:非必填
cargoList {
cargoNumber (string): 货物编号:用于货物相关接口,需要增/删/改货物的话需要传此字段,
name (string): 货物名称 ,
note1 (string): 自定义备注1 ,
note2 (string): 自定义备注2 ,
note3 (string): 自定义备注3 ,
note4 (string): 自定义备注4 ,
note5 (string): 自定义备注5 ,
note6 (string): 自定义备注6 ,
productModel (string): 货物备注 ,
quantity (string): 件数 ,
status (string): 货物状态 ,
value (string): 货值 ,
volume (string): 体积 ,
weight (string): 重量
}
}
返回示例
{
"code": 200,
"data": ["S1711151843619482"],
"message": null
}
{
"code": 500,
"message": "受理单创建失败"
}
简要描述: 修改受理单接口,没有传递的参数值将被清空
请求 URL: /customer_order/update_customer_order
请求方式: POST
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
number |
是 | string |
受理单号 |
order |
是 | CustomerOrderEntity |
受理单 |
返回示例
{
"code": 200,
"data": null,
"message": null
}
{
"code": 500,
"message": "受理单创建失败"
}
简要描述: 批量查询受理单
请求 URL: /customer_order/query_customer_orders
请求方式: POST, GET
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
page |
是 | int |
页码,1开始 |
size |
是 | int |
单页最大订单数 |
state |
否 | int |
受理单状态,0已撤销,1000待处理,2000进行中,3000已完成,不传则查询全部状态 |
number |
否 | string |
受理单号 |
originalOrderNumber |
否 | string |
客户单号 |
timeType |
否 | string |
查询时间类型,created录入时间,deliveryed提货时间,appointArrived预约提货时间,signed签收时间 |
startDate |
否 | string |
起始时间,格式"yyyy-MM-dd HH:mm:ss" |
endDate |
否 | string |
结束时间,格式"yyyy-MM-dd HH:mm:ss" |
deviceNumber |
否 | string |
设备号 |
consignerName |
否 | string |
发货人姓名,模糊搜索 |
consignerPhone |
否 | string |
发货人电话,模糊搜索 |
consignerAddress |
否 | string |
发货人地址,模糊搜索 |
consigneeName |
否 | string |
收货人姓名,模糊搜索 |
consigneePhone |
否 | string |
收货人电话,模糊搜索 |
consigneeAddress |
否 | string |
收货人地址,模糊搜索 |
organizationPaths |
否 | list |
组织机构 |
返回示例
{
"code": 200,
"message": null,
"data": {
"page": 1,
"size": 10,
"total": 11,
"elements": [
{
"order": {
"id": "5ab88c0d4b67620010302f58",
"uid": "558a2084e4b0ddab858a031e", // 用户id
"createUid": "558a2084e4b0ddab858a031e", // 制单人id
"createUserId": "15657103156", // 制单人账号
"createUsername": "冉涛12222221", // 制单人名称
"number": "S1803261358607938", // 受理单号
"originalOrderNumber": "112222", // 原始单号
"deliveryTime": 1520377500, // 提货时间
"deliveryType": null, // 提送类型,1提货,2送货
"appointArriveTime": 1520283960, // 预约送达时间
"startAddress": "洛阳", // 起始地址
"endAddress": "郑州", // 目的地址
"arrivedTime": null, //到达围栏时间
"consigner": { // 发货人
"name": "332洛阳润格商贸有限公司",
"phone": "123456789",
"address": {
"province": null,
"cityCode": null,
"city": null,
"district": null,
"name": "河南省洛阳市洛龙区36号",
"address": "河南省洛阳市洛龙区36号",
"lng": 30.2774986988,
"lat": 120.1257948758
}
},
"consignee": null, // 收货人
"cargo": { // 货物总计
"id": null,
"uid": null,
"customerOrderId": null,
"customerOrderNumber": null,
"name": "KFR-50LW/(50578)FNhAa-A2(含管)(皓雪白)(WIFI)",
"quantity": 2,
"weight": 3,
"volume": 4,
"value": 5,
"remarks": "6",
"note1": "7",
"note2": "8",
"note3": "",
"note4": "",
"note5": "",
"note6": "",
"created": null
},
"freightIn": { // 上游运费
"payType": 7,
"amount": 111
},
"uppay1": null, // 上游自定义费用1
"uppay2": null, // 上游自定义费用2
"uppay3": null, // 上游自定义费用3
"uppay4": null, // 上游自定义费用4
"uppay5": null, // 上游自定义费用5
"uppay6": null, // 上游自定义费用6
"paymentCollect": 111, // 代收货款
"receiptCount": 1, // 回单数
"remarks": "222", // 备注
"note1": null, // 自定义备注1
"note2": null, // 自定义备注2
"note3": null, // 自定义备注3
"note4": null, // 自定义备注4
"note5": null, // 自定义备注5
"note6": null, // 自定义备注6
"note7": null, // 自定义备注7
"note8": null, // 自定义备注8
"note9": null, // 自定义备注9
"note10": null, // 自定义备注10
"note11": null, // 自定义备注11
"note12": null, // 自定义备注12
"option1": null, // 自定义选项1
"option2": null, // 自定义选项2
"option3": null, // 自定义选项3
"createOrganizationPath": "0", // 开单组织机构
"ownerOrganizationPath": null, // 当前拥有者者组织机构
"assignOrganizationPaths": null, // 指派组织机构
"receiveOrganizationPath": null, // 接收方组织机构
"source": 1, // 来源 1手工录入,2批量导入,3客户下单,4接口导入
"batchNumber": null, // 导入批次号
"state": 1000, // 状态,1000待处理,2000进行中,3000已完成
"settlementParty": 2, // 上游运费结算方,1 发货人,2收货人
"totalFreightIn": 111, // 上游总运费
"freightInReceived": null,
"freightInUnreceived": 111,
"freightInState": null,
"freightInTime": null,
"paymentCollectState": null,
"paymentCollectReceived": null,
"paymentCollectTime": null,
"paymentCollectWriteoffTime": null,
"customerOrderPrintStatus": null,
"customerOrderTipsPrintStatus": null,
"receiptState": null,
"publishTime": null,
"firstSignTime": null,
"lastSignTime": null,
"currentSegmentType": null,
"reachStation": null,
"nextStation": null,
"mileage": null, //行驶里程
"mileageEstimated": 11, //预估里程
"lastUploadAddress": null,
"lastUploadTime": null,
"bindDevices": null,
"currentBindDevice": null,
"created": 1522043917,
"updated": 1522043917
},
"cargoes": [
{
"id": "5ab88c0d4b67620010302f59",
"uid": "558a2084e4b0ddab858a031e",
"customerOrderId": "5ab88c0d4b67620010302f58",
"customerOrderNumber": "S1803261358607938",
"name": "KFR-50LW/(50578)FNhAa-A2(含管)(皓雪白)(WIFI)", // 货物名称
"quantity": 2, // 数量
"weight": 3, // 重量
"volume": 4, // 体积
"value": 5, // 货值
"remarks": "6", // 备注
"note1": "7", // 货物自定义备注1
"note2": "8", // 货物自定义备注2
"note3": "", // 货物自定义备注3
"note4": "", // 货物自定义备注4
"note5": "", // 货物自定义备注5
"note6": "", // 货物自定义备注6
"created": 1522043917
}
]
}
]
}
}
{
"status": 500,
"message": ""
}
简要描述: 批量撤销受理单
请求 URL: /customer_order/cancel_customer_orders
请求方式: POST, GET
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
numbers |
是 | string |
订单number列表,多个订单用','隔开 |
返回示例
{
"code": 200,
"message": null
}
{
"code": 500,
"message": "撤销受理单失败原因"
}
简要描述: 批量解绑受理单设备,
请求 URL: /customer_order/batch_unbind_devices
请求方式: POST, GET
需要认证: 是
请求参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
orders |
是 | Array<受理单号> |
受理单号列表 |
返回示例
{
"code": 200,
"message": null,
"data": {}
}
1.受理单号列表中存在未绑定设备的受理单:
{
"message": "受理单S1811011025811886未绑定设备!",
"status": 500
}
2.受理单查询不到,请确认受理单是否存在,或者是否使用主账号调用的接口:
{
"message": "受理单不存在!",
"status": 500
}
错误码 | 说明 |
---|---|
200 | 成功 |
401 | 授权失败 |
404 | 接口不存在 |
10011 | 提货时间必填 |
10012 | 发货人姓名必填 |
10013 | 发货人手机必填 |
10014 | 发货人地址必填 |
10015 | 发货人城市必填 |
10016 | 城市或地址有误 |
10017 | 收货人姓名必填 |
10018 | 收货人手机必填 |
10019 | 收货人地址必填 |
10020 | 收货人城市必填 |
10021 | 订单号必填 |
10022 | 批次号必填 |
10023 | 订单创建失败 |
10024 | 传入订单列表不能为空 |
接口测试例子
TestMain.java
oauth授权例子
1:mvn clean jetty:run
2:用浏览器访问:http://localhost:9090