dop德邦物流
1 对接准备
1.1 注册
登录地址:http://dop.deppon.com/#/login/loginTab
1.2 完善信息
完善企业信息,获取测试环境信息,如companyCode,appkey,sign值
1.3 获取jdk
选择对应语言,下载sdk
http://dop.deppon.com/#/apiDocs/downloads/relatedDownloads
2 开发
2.1 依赖注入
在resources下新建lib文件夹,将dop-sdk-1.0-SNAPSHOT.jar导入
pom.xml中注入依赖
<!--尝试对接德邦-->
<dependency>
<groupId>db.sdk</groupId>
<artifactId>dop</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/dop-sdk-1.0-SNAPSHOT.jar</systemPath>
</dependency>
接下来,看文档,看接口说明,开始测试。
2.2 新标准轨迹查询
2.2.1 报文校验
在dop平台配置接口,并进行报文校验
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/newTraceQuery.action
消息类型:NEW_TRACE_QUERY
2.2.2 后台@Test
@Test
public void mailNoQuery() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/newTraceQuery.action";
String params = "{\"mailno\":\"DPK6546599321298\"}";
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
成功返回:(之前下单测试)
uniquerRequestNumber:唯一值
{
"result":"true",
"reason":"",
"resultCode":"1000",
"responseParam":{
"trace_list":[
{
"city":"**市(测试)",
"description":"正常签收,签收人类型:本人/同事/门卫 等",
"site":"【***】营业部",
"status":"SIGNED",
"time":"2022-04-14 03:05:28"
},
{
"city":"**市(测试)",
"description":"此货已滞留,与客户预约改日派送",
"site":"【***】营业部",
"status":"ERROR",
"time":"2022-04-14 06:05:28"
},
{
"city":"**市(测试)",
"description":"拒绝签收:原因",
"site":"【***】营业部",
"status":"FAILED",
"time":"2022-04-14 03:05:28"
},
{
"city":"**市(测试)",
"description":"派送中,派送人:**,派送人电话:***********",
"site":"【***】营业部",
"status":"SENT_SCAN",
"time":"2022-04-14 00:05:28"
},
{
"city":"**市(测试)",
"description":"货物已到达【***营业部】部门",
"site":"【***】营业部",
"status":"ARRIVAL",
"time":"2022-04-13 21:05:28"
},
{
"city":"**市(测试)",
"description":"运输中,离开【上海市转运中心】,下一站【***营业部】(出发到达对应多个)",
"site":"****转运中心/营业部/枢纽中心",
"status":"DEPARTURE",
"time":"2022-04-13 18:05:28"
},
{
"city":"**市(测试)",
"description":"您的订单已被收件员揽收,【上海市青浦区***营业部】库存中",
"site":"上海市转运中心/营业部/枢纽中心",
"status":"GOT",
"time":"2022-04-13 16:05:28"
}
],
"tracking_number":"DPK6546599321298"
},
"uniquerRequestNumber":"26049436618692637"
}
2.3 估算价格接口
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/queryPriceTime.action
消息类型:QUERY_PRICE_TIME
2.3.1 估算参数
估算价格、时效参数如下
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 10:49
*/
@Data
@ApiModel("估算价格、时效参数")
public class DbEstimatedPriceVO {
@ApiModelProperty(value = "提货方式", notes = "DELIVER_NOUP汽运送货(不含上楼);DELIVER_UP汽运送货(上楼);SELF_PICKUP汽运自提;DELIVER_INGA汽运送货进仓;LARGE_DELIVER_UP大件上楼费;DELIVER_NOUP_AIR送货不上楼")
private String receiveMethod;
@ApiModelProperty(value = "物流公司id", notes = "唯一值:DEPPON", required = true)
private String logisticCompanyID;
@ApiModelProperty(value = "出发城市", required = true)
private String originalsaddress;
@ApiModelProperty(value = "目标城市", required = true)
private String originalsStreet;
@ApiModelProperty(value = "寄件时间", required = true)
private String sendDateTime;
@ApiModelProperty(value = "总体积", required = true)
private String totalVolume;
@ApiModelProperty(value = "总重量", required = true)
private String totalWeight;
@ApiModelProperty(value = "保价", notes = "无值时默认为0")
private String insuredAmount;
}
2.3.2 @Test
@Test
public void tests() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/queryPriceTime.action";
for (int i = 0; i < 10; i++) {
DbEstimatedPriceVO db = new DbEstimatedPriceVO();
db.setOriginalsaddress("上海市-上海市-青浦区,上海上海市青浦区徐泾镇明珠路");
db.setOriginalsStreet("上海市-上海市-青浦区,上海上海市青浦区徐泾镇崧建路");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
db.setSendDateTime(simpleDateFormat.format(new Date()));
db.setTotalVolume("0.001");
db.setTotalWeight("500");
db.setLogisticCompanyID("DEPPON");
String params = JSONObject.toJSONString(db);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
}
成功返回结果:
{
"result":"true",
"reason":"以下数据为测试数据,仅供接口联调",
"resultCode":"1000",
"responseParam":[],
"uniquerRequestNumber":"26048605153308228"
}
2.4 【新】下单服务接口
请求路径:http://dpsanbox.deppon.com/sandbox-web/dop-standard-ewborder/createOrderNotify.action
消息类型:CREATE_ORDER_NOTIFY
2.4.1 下单参数
下单参数如下:
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 14:28
*/
@Data
@ApiModel("德邦下单参数")
public class DbOrderVO {
//由第三方接入商产生的订单号(生成规则为sign+数字,sign值由双方约定),注意:同一票子母件(一票多货),logisticId必须要保持一致
@ApiModelProperty(value = "订单号", notes = "由第三方接入商产生的订单号(生成规则为sign+数字,sign值由双方约定)")
private String logisticID;
//客户订单号
@ApiModelProperty("客户订单号")
private String custOrderNo;
//运单号 预埋单号时传运单号,不传时会返回运单号给客户,仅支持单个单号
@ApiModelProperty("运单号")
private String mailNo;
//报关信息
//private CustomsInfo province;
//是否需要订阅轨迹 1:是(为是时要对接轨迹推送接口) 2:否 默认否
@ApiModelProperty("是否订阅轨迹")
private Integer needTraceInfo;
//第三方接入商的公司编码 登录德邦开放平台-我要接入-基本信息
@ApiModelProperty("公司编码")
private String companyCode;
//下单模式 1、 散客模式(单量较小,平台类,异地调货,退换货等发货地址不固定-需要通知快递员或者司机上门取件打单;整车订单也选此模式); 2、 大客户模式(仓库发货,固定点出货,单量较大客户自行打印标签,快递员直接盲扫走货)3、同步筛单下单(只支持大客户模式快递下单)
@ApiModelProperty(value = "下单模式", notes = "1.散客模式,2.大客户模式,3.同步筛单下单")
private String orderType;
//运输方式/产品类型 (具体传值请与月结合同签订约定的为准,否则可能影响计费) 快递运输方式 : RCP:大件快递360; NZBRH:重包入户; ZBTH:重包特惠; WXJTH:微小件特惠; JJDJ:经济大件; PACKAGE:标准快递;HKDJC:航空大件次日达; HKDJG:航空大件隔日达; TZKJC:特快专递; 零担运输方式: JZKY:精准空运(仅散客模式支持该运输方式); JZQY_LONG:精准汽运; JZKH:精准卡航; 整车运输方式 1.整车配送 ZCPS 2.精准专车 JZZHC
@ApiModelProperty("运输方式")
private String transportType;
//客户编码/月结账号
//德邦一线营业部给到客户的月结客户编码,由营业部给出。
// 沙箱环境,下子母件订单必须传值 219401 或者219402
@ApiModelProperty("月结账号")
private String customerCode;
//寄货方
@ApiModelProperty("寄件方")
private DbAddressVO sender;
//收货方
@ApiModelProperty("收件方")
private DbAddressVO receiver;
//快件产品
@ApiModelProperty("产品信息")
private DbPackageInfoVO packageInfo;
//订单提交时间 系统当前时间,格式为 yyyy-MM-dd HH:mm:ss 如 2020-11-07 18:44:19
@ApiModelProperty("订单提交时间")
private String gmtCommit;
//支付方式 0:发货人付款(现付) 1:收货人付款(到付) 2:发货人付款(月结) (电子运单客户不支持寄付)
@ApiModelProperty(value = "支付方式", notes = "一般为月结")
private String payType;
//增值服务
//private AddServices(insuranceValue,codType,reciveLoanAccount,
// accountName,codValue,backSignBill)
//短信通知 Y:需要 N: 不需要
@ApiModelProperty("短信通知")
private String smsNotify;
//上门接货开始时间 yyyy-MM-dd HH:mm:ss
@ApiModelProperty("上门接货开始时间")
private String sendStartTime;
//上门接货结束时间 yyyy-MM-dd HH:mm:ss
@ApiModelProperty("上门接货结束时间")
private String sendEndTime;
//原运单号 异地调货退货场景可能用到
@ApiModelProperty("原运单号")
private String originalWaybillNumber;
//注意事项(备注)
@ApiModelProperty("备注")
private String remark;
//是否外发 Y:需要 N: 不需要(仅适用于下单模式为2且是零担运输方式;或者下单模式为3时)
@ApiModelProperty("是否外发")
private String isOut;
//是否口令签收
//仅适用于快递,Y:需要 N: 不需要;若为Y,
// 必须收货人提供验证码给快递员才能签收,
// 该服务是有偿的,具体费用请咨询我司门店
@ApiModelProperty("是否口令签收")
private String passwordSigning;
//是否可派送 Y:是 N:否
@ApiModelProperty("是否可派送")
private String isdispatched;
//是否预售单
@ApiModelProperty("是否预售单")
private String ispresaleorder;
//是否合伙人自提 Y:是N: 否(只适用于同步筛单下单模式)
@ApiModelProperty("是否合伙人自提")
private String isPickupSelf;
//是否接受仅镇中心派送
//Y:是 N:否,若空时,默认为Y(只适用于同步筛单下单模式)
@ApiModelProperty("是否接受仅镇中心派送")
private String isCenterDelivery;
//扩展字段
//private List orderExtendFields;
}
2.4.2 收寄双方信息
寄件、收件方信息如下:
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 14:09
*/
@Data
@ApiModel("德邦 收发地址参数")
public class DbAddressVO {
//收发公司
@ApiModelProperty("公司")
private String companyName;
//部门编码
@ApiModelProperty("部门编码")
private String usinessNetworkNo;
//姓名 (必填)
@ApiModelProperty("姓名")
private String name;
//省份
@ApiModelProperty("省份")
private String province;
//发货人手机
@ApiModelProperty("电话")
private String phone;
//发货人电话
@ApiModelProperty("手机")
private String mobile;
//发货人邮编
@ApiModelProperty("邮编")
private String postCode;
//城市
@ApiModelProperty("城市")
private String city;
//发货人区县
@ApiModelProperty("区县")
private String county;
@ApiModelProperty("镇街道")
private String town;
//详细地址,此详细地址需包含省市信息,以提高地址识别的成功率,示例:“广东省深圳市福田区新洲十一街万基商务大厦10楼
@ApiModelProperty("详细地址")
private String address;
}
2.4.3 产品信息
产品信息如下:
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 14:29
*/
@Data
@ApiModel("货物信息")
public class DbPackageInfoVO {
//货物名称
@ApiModelProperty("名称")
private String cargoName;
//总件数(包裹数)
@ApiModelProperty("总件数")
private Integer totalNumber;
//总重量(单位:千克)
@ApiModelProperty("总重量")
private double totalWeight;
//总体积
@ApiModelProperty("总体积")
private double totalVolume;
//包装(直接用中文) : 纸、纤、木箱、木架、托膜、托木(大客户模式下运输方式为零担时必填)
@ApiModelProperty(value = "包装", notes = "(直接用中文) : 纸、纤、木箱、木架、托膜、托木(大客户模式下运输方式为零担时必填)")
private String packageServic;
//送货方式 1、自提; 2、送货进仓; 3、送货(不含上楼); 4、送货上楼; 5、大件上楼
@ApiModelProperty(value = "送货方式", notes = "1、自提; 2、送货进仓; 3、送货(不含上楼); 4、送货上楼; 5、大件上楼")
private String deliveryType;
}
增值服务信息(AddServices),扩展信息(orderExtendFields)暂不填写
2.4.4 @Test
@Test
public void createOrderNotify() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/dop-standard-ewborder/createOrderNotify.action";
/**
* {"companyCode":"EWBTJW",
* "custOrderNo":"QA1111113",
* "customerCode":"219401",
* "logisticID":"ULUIP3391113",
* "needTraceInfo":1,
* "orderType":"2",
* "packageInfo":
* {"cargoName":"货物名","deliveryType":"4","totalNumber":2,"totalVolume":0.01,"totalWeight":10,"packageService":"纸"},
*
* "receiver":{"address":"徐泾镇明珠路1018号","city":"上海市","companyName":"德邦快递",
* "county":"青浦区","mobile":"180****2531","name":"AAA","province":"上海","town":"徐泾镇"},
*
* "sender":{"address":"崧建路688弄","city":"上海市","companyName":"",
* "county":"青浦区","mobile":"180****3451","name":"AAA","province":"上海","town":"重固镇"},
*
* "transportType":"PACKAGE",
* "gmtCommit":"2019-05-20 18:44:19",
* "payType":"1",
* "isOut":"N"}
*/
DbOrderVO dbOrderVO = new DbOrderVO();
dbOrderVO.setCompanyCode(companyCode);
dbOrderVO.setCustOrderNo("QA1111113");
dbOrderVO.setCustomerCode("219401");
dbOrderVO.setLogisticID("XUUU3391113");
dbOrderVO.setNeedTraceInfo(1);
dbOrderVO.setOrderType("2");
dbOrderVO.setTransportType("PACKAGE");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dbOrderVO.setGmtCommit(simpleDateFormat.format(new Date()));
dbOrderVO.setPayType("1");
dbOrderVO.setIsOut("N");
//{"cargoName":"货物名","deliveryType":"4","totalNumber":2,"totalVolume":0.01,"totalWeight":10,"packageService":"纸"}
DbPackageInfoVO packageInfo = new DbPackageInfoVO();
packageInfo.setCargoName("货物名");
packageInfo.setDeliveryType("4");
packageInfo.setTotalNumber(2);
packageInfo.setTotalVolume(0.01);
packageInfo.setTotalWeight(10);
packageInfo.setPackageServic("纸");
//{"address":"徐泾镇明珠路1018号","city":"上海市","companyName":"德邦快递",
//"county":"青浦区","mobile":"180****2531","name":"AAA","province":"上海","town":"徐泾镇"}
DbAddressVO receiver = new DbAddressVO();
receiver.setAddress("徐泾镇明珠路1018号");
receiver.setCity("上海市");
receiver.setCompanyName("德邦快递");
receiver.setCounty("青浦区");
receiver.setMobile("18336539027");
receiver.setName("AAA");
receiver.setProvince("上海");
receiver.setTown("徐泾镇");
//"sender":{"address":"崧建路688弄","city":"上海市","companyName":"",
//"county":"青浦区","mobile":"180****3451","name":"AAA","province":"上海","town":"重固镇"},
DbAddressVO sender = new DbAddressVO();
sender.setAddress("崧建路688弄");
sender.setCity("上海市");
sender.setCompanyName("");
sender.setCounty("青浦区");
sender.setMobile("19103831847");
sender.setName("DDD");
sender.setProvince("上海");
sender.setTown("重固镇");
dbOrderVO.setPackageInfo(packageInfo);
dbOrderVO.setReceiver(receiver);
dbOrderVO.setSender(sender);
System.out.println(dbOrderVO);
String params = JSON.toJSONString(dbOrderVO);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
2.4.5 返回结果
{
"result":"true",
"reason":"成功",
"mailNo":"DPK6397317351356,DPK6527316294915",
"logisticID":"XUUU3391113",
"arrivedOrgSimpleName":"上海上海市",
"resultCode":"1000",
"parentMailNo":"DPK6507507093717",
"uniquerRequestNumber":"26049248717361295"
}
2.5 运费查询接口
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/queryWaybillDetail.action
消息类型:QUERY_WAYBILL_DETAIL
2.5.1 运费查询参数
参数如下:mailNo(需要sign值+数字+运单号)
2.5.2 @Test
@Test
public void waybillDetailQuery() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/queryWaybillDetail.action";
String params = "{\"mailNo\":\"XUUU3391113_DPK6546599321298\"}";
System.out.println(params);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
2.5.3 返回结果
{
"result":"true",
"reason":"成功(沙箱环境仅供参考)",
"resultCode":"1000",
"responseParam":"{\"result\": \"true\",\"resultCode\": \"1000\",\"responseParam\": {\"arriveCharge\": 0,\"backSignBill\": \"NOT_RETURN_BILL\",\"bigUpstairsFee\": 0,\"cargoName\": \"***\",\"chargeForDelivery\": 0,\"chargedWeight\": 22.5,\"codPrice\": 0,\"codType\": \"0\",\"codValue\": 0,\"deliveryInboundFee\": 0,\"departureDeptAddr\": \"***\",\"departureDeptName\": \"广州白云区张村快递分部\",\"departureDeptPhone\": \"***\",\"easyInstallAtionFee\": 0,\"extraDeliveryFee\": 0,\"extraFareDeliveryServiceFee\": 0,\"installationFee\": 0,\"insurance\": 0,\"insuranceValue\": 0,\"interceptFee\": 0,\"isSlave\": 0,\"ladingStationName\": \"东莞常平镇快递分部\",\"loadUnloadFee\": 0,\"mailNo\": \"DPK200055023425\",\"mattressFee\": 0,\"otherPayment\": 0,\"otherWarehouseCharge\": 0,\"overWeightOperationFee\": 0,\"overweightHandlingServiceFee\": 0,\"packing\": \"***\",\"passSignFee\": 0,\"payType\": \"月结\",\"pickCharge\": 0,\"preCharge\": 38.9,\"presellFee\": 0,\"resourceRegulationFee\": 0,\"returnFee\": 0,\"toNetworkNo\": \"***\",\"totalNumber\": \"1\",\"totalPrice\": 38.9,\"totalVolume\": 0.18,\"totalWeight\": 18.5,\"transferFee\": 0,\"transportPrice\": 38.9,\"transportType\": \"大件快递3.60\",\"unpackingFee\": 0,\"valuablePackagFee\": 0,\"vistReceivePrice\": 0,\"woodenFrameFee\": 0 }, \"uniquerRequestNumber\": \"44303515310895923\"}",
"uniquerRequestNumber":"26056818546218035"
}
2.6 查询订单接口
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/queryOrder.action
消息类型:QUERY_LOGISTICS_ORDER
2.6.1 参数
{"logisticCompanyID":"DEPPON", "logisticID":"XUUU3391113_DPK6397317351356" }
2.6.2 @Test
@Test
public void queryOrderLog() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/queryOrder.action";
String params = "{\"logisticCompanyID\":\"DEPPON\", \"logisticID\":\"XUUU3391113_DPK6397317351356\" }";
System.out.println(params);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
2.6.3 返回结果
{
"result":"true",
"reason":"",
"resultCode":"1000",
"responseParam":{
"cargoName":"货物名",
"codPrice":0.0,
"codType":"0",
"codValue":0.0,
"insurancePrice":0.0,
"insuranceValue":0.0,
"logisticCompanyID":"DEPPON",
"logisticID":"XUUU3391113_DPK6397317351356",
"mailNo":"DPK6397317351356",
"receiver":{
"address":"徐泾镇明珠路1018号",
"city":"上海市",
"country":"青浦区",
"mobile":"18336539027",
"name":"AAA",
"originalAddress":"",
"postCode":"",
"province":"上海",
"street":""
},
"sender":{
"address":"崧建路688弄",
"city":"上海市",
"country":"青浦区",
"mobile":"19103831847",
"name":"DDD",
"originalAddress":"",
"postCode":"",
"province":"上海",
"street":""
},
"smsNotify":"YES",
"statusType":"已开单",
"totalNumber":2,
"totalVolume":0.01,
"totalWeight":10.0,
"transportType":"PACKAGE",
"vistReceive":"YES",
"waitNotifySend":"NO"
},
"uniquerRequestNumber":"26050057726461717"
}
2.7 撤销订单
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/cancelOrder.action
消息类型:CANCEL_LOGISTICS_ORDER
2.7.1 撤销订单参数
参数如下:
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 15:39
*/
@Data
@ApiModel("德邦-取消订单参数")
public class DbCancelVO {
@ApiModelProperty(value = "物流公司ID", notes = "固定值(DEPPON)")
private String logisticCompanyID;
@ApiModelProperty(value = "渠道单号", notes = "格式如 渠道单号_运单号 注:渠道单号和运单号不可同时为空")
private String logisticID;
@ApiModelProperty(value = "运单号", notes = "下单时或下单后我司系统生成的运单号 注:渠道单号和运单号不可同时为空")
private String mailNo;
@ApiModelProperty(value = "撤销时间", notes = "格式为 yyyy-MM-dd HH:mm:ss 如 2012-11-27 18:44:19")
private String cancelTime;
@ApiModelProperty(value = "备注", notes = "撤销原因")
private String remark;
}
2.7.2 @Test
@Test
public void cancel() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/cancelOrder.action";
DbCancelVO dbCancelVO = new DbCancelVO();
dbCancelVO.setLogisticCompanyID("DEPPON");
dbCancelVO.setLogisticID("XUUU3391113_DPK6397317351356");
//dbCancelVO.setMailNo("DPK6546599321298");
dbCancelVO.setCancelTime(SimpleDateUtil.simpleToDate(new Date()));
dbCancelVO.setRemark("测试撤单");
String params = JSON.toJSONString(dbCancelVO);
System.out.println(params);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
2.7.3 返回
{
"logisticID":"XUUU3391113_DPK6397317351356",
"result":"true",
"reason":"成功(沙箱环境仅供参考)",
"resultCode":"1000",
"uniquerRequestNumber":"26057670583973176"
}
2.8 网点查询接口
请求路径:http://dpsanbox.deppon.com/sandbox-web/standard-order/queryDeptByAddress.action
消息类型:QUERY_DEPT_BY_ADDRESS
2.8.1 网点查询所需参数
参数如下:
package com.hc.store.dop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chajintao
* @date 2022/4/13 17:13
*/
@Data
@ApiModel("德邦网点查询参数")
public class DbNetWorkQueryVO {
//收发公司
@ApiModelProperty("公司")
private String logisticCompanyID;
//省份
@ApiModelProperty("省份")
private String province;
//城市
@ApiModelProperty("城市")
private String city;
//发货人区县
@ApiModelProperty("区县")
private String county;
//详细地址,此详细地址需包含省市信息,以提高地址识别的成功率,示例:“广东省深圳市福田区新洲十一街万基商务大厦10楼
@ApiModelProperty("详细地址")
private String address;
@ApiModelProperty("经度")
private String longitude;
@ApiModelProperty("纬度")
private String latitude;
@ApiModelProperty("匹配类型")
private Integer matchType;
}
2.8.2 @Test
@Test
public void match() throws UnsupportedEncodingException {
String url = "http://dpsanbox.deppon.com/sandbox-web/standard-order/queryDeptByAddress.action";
DbNetWorkQueryVO dbNetWorkQueryVO = new DbNetWorkQueryVO();
dbNetWorkQueryVO.setLogisticCompanyID("DEPPON");
dbNetWorkQueryVO.setProvince("湖北省");
dbNetWorkQueryVO.setCity("武汉市");
dbNetWorkQueryVO.setCounty("武昌区");
dbNetWorkQueryVO.setAddress("南湖李纸路72号");
dbNetWorkQueryVO.setMatchType(2);
String params = JSON.toJSONString(dbNetWorkQueryVO);
System.out.println(params);
String result = DBUtils.postHttp(url,params,companyCode,appkey);
System.out.println(result);
}
2.8.3 返回结果
{
"result":"true",
"reason":"以下数据为测试数据,仅供接口联调",
"resultCode":"1000",
"responseParam":{
"deptInfoList":[
{
"deptAddress":"武汉市武昌区***路**号德邦物流,可直接地图导航我部。",
"deptCode":"W011306040501",
"deptName":"武汉市武昌区**派送部",
"deptTel":"送货:027-59625501/2/3 自提:59625500",
"distance":"15.2934180942356",
"isDelivery":"true",
"isInside":"0",
"isPickup":"true",
"isReceive":"flase"
}
],
"logisticCompanyID":"DEPPON"
},
"uniquerRequestNumber":"26057947950896752"
}
3 工具类
贴出德邦物流自己的工具类,谨防删除。
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.deppon.dop.module.sdk.shared.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
public class DBUtils {
public DBUtils() {
}
public static final String postHttp(String url, String params, String companyCode, String appkey) throws UnsupportedEncodingException {
String timestamp = String.valueOf(System.currentTimeMillis());
String plaitText = params + appkey + timestamp;
String digest = Base64.encodeBase64String(DigestUtils.md5Hex(plaitText).getBytes());
NameValuePair[] nameValuePairs = new NameValuePair[]{new NameValuePair("companyCode", companyCode), new NameValuePair("digest", digest), new NameValuePair("timestamp", timestamp), new NameValuePair("params", params)};
String responseMsg = "";
HttpClient httpClient = new HttpClient(new HttpClientParams(), new SimpleHttpConnectionManager(true));
httpClient.getParams().setContentCharset("UTF-8");
PostMethod postMethod = new PostMethod(url);
postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
postMethod.setRequestBody(nameValuePairs);
postMethod.setRequestHeader("Connection", "close");
try {
httpClient.executeMethod(postMethod);
responseMsg = postMethod.getResponseBodyAsString();
} catch (HttpException var16) {
var16.printStackTrace();
throw new UnsupportedEncodingException(var16.getClass().getName());
} catch (IOException var17) {
var17.printStackTrace();
throw new UnsupportedEncodingException(var17.getClass().getName());
} finally {
postMethod.releaseConnection();
httpClient.getHttpConnectionManager().closeIdleConnections(0L);
}
return responseMsg;
}
}
4 总结
首先是选对sdk,直接官网下载,然后就是看接口文档,对应创建实体类
本文详细介绍了如何使用SpringBoot进行德邦物流API的对接,包括注册、完善信息、获取SDK,以及对接过程中的新标准轨迹查询、估算价格、下单、运费查询、订单查询、撤销订单和网点查询等接口的实现和测试。
3589

被折叠的 条评论
为什么被折叠?



