德邦物流对接测试 springboot dop

本文详细介绍了如何使用SpringBoot进行德邦物流API的对接,包括注册、完善信息、获取SDK,以及对接过程中的新标准轨迹查询、估算价格、下单、运费查询、订单查询、撤销订单和网点查询等接口的实现和测试。
部署运行你感兴趣的模型镜像

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,直接官网下载,然后就是看接口文档,对应创建实体类

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值