• Stars
    star
    214
  • Rank 184,678 (Top 4 %)
  • Language
    Java
  • Created over 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

快递100API-Java快递查询接口主要应用在电商商城、ERP系统商、WMS系统商、独立站电商卖家、银行等企业。本Java快递查询接口目录提供:快递单号查询API接口、快递电子面单接口、寄快递接口、同城配送接口、快递地图跟踪接口等Java demo。接入只需要跟随Java快递查询接口示例即可,如需帮助,请点击下方官网链接,官网技术人员会免费帮助您接入接口。快递100API开放平台与国内外1500家快递公司合作提供快递单号查询API接口,快递电子面单接口,寄快递接口,快递地图跟踪接口等电商运营必备的物流快递工具.

java-demo Project

Introduce

java-demo 是由快递100官方提供的java sdk,方便调试使用。

java-demo 集成了实时查询、订阅推送、智能判断、云打印相关、电子面单相关、短信、商家寄件等接口。

Features

  • 提供了快递100接口请求参数实体类、返回实体类。
  • 提供测试类调试。
  • 支持maven、gradle引入

Getting started

java-demo使用和测试可参考java-demo-test

# git clone https://github.com/kuaidi100-api/java-demo.git

Add Config

使用sdk的可以先配置account.properties,账号信息可以登录快递100获取https://poll.kuaidi100.com/manager/page/myinfo/enterprise (注意不要泄露快递100的账号密码以及授权key等敏感信息,以防被他人盗用!!!)

Gradle

dependencies {
	implementation 'com.github.kuaidi100-api:sdk:1.0.12'
}

Maven

	<dependency>
            <groupId>com.github.kuaidi100-api</groupId>
            <artifactId>sdk</artifactId>
            <version>1.0.12</version>
        </dependency>

Use Junit Test

public class BaseServiceTest {

    private String key = PropertiesReader.get("key");
    private String customer = PropertiesReader.get("customer");
    private String secret = PropertiesReader.get("secret");
    private String siid = PropertiesReader.get("siid");
    private String userid = PropertiesReader.get("userid");
    private String tid = PropertiesReader.get("tid");
    private String secret_key = PropertiesReader.get("secret_key");
    private String secret_secret = PropertiesReader.get("secret_secret");
     /**
         * 实时快递查询接口
         */
        @Test
        public void testQueryTrack() throws Exception{
    
            QueryTrackReq queryTrackReq = new QueryTrackReq();
            QueryTrackParam queryTrackParam = new QueryTrackParam();
            queryTrackParam.setCom(CompanyConstant.YT);
            queryTrackParam.setNum("YT9383342193097");
            queryTrackParam.setPhone("17725390266");
            String param = new Gson().toJson(queryTrackParam);
    
            queryTrackReq.setParam(param);
            queryTrackReq.setCustomer(customer);
            queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
    
            IBaseClient baseClient = new QueryTrack();
            System.out.println(baseClient.execute(queryTrackReq));
        }
    
        /**
         * 快递查询地图轨迹
         */
        @Test
        public void testQueryMapView() throws Exception{
    
            QueryTrackReq queryTrackReq = new QueryTrackReq();
            QueryTrackParam queryTrackParam = new QueryTrackParam();
            queryTrackParam.setCom(CompanyConstant.YD);
            queryTrackParam.setNum("4311159956248");
            queryTrackParam.setPhone("17725390266");
            queryTrackParam.setFrom("河北保定市");
            queryTrackParam.setTo("湖南岳阳市");
            queryTrackParam.setResultv2("2");
            String param = new Gson().toJson(queryTrackParam);
    
            queryTrackReq.setParam(param);
            queryTrackReq.setCustomer(customer);
            queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
    
            IBaseClient baseClient = new QueryTrackMap();
            HttpResult result = baseClient.execute(queryTrackReq);
    
            QueryTrackMapResp queryTrackMapResp = new Gson().fromJson(result.getBody(),QueryTrackMapResp.class);
            System.out.println(queryTrackMapResp);
        }
    
        /**
         * 订阅接口
         */
        @Test
        public void testSubscribe() throws Exception{
            SubscribeParameters subscribeParameters = new SubscribeParameters();
            subscribeParameters.setCallbackurl("http://www.baidu.com");
            subscribeParameters.setPhone("17725390266");
    
            SubscribeParam subscribeParam = new SubscribeParam();
            subscribeParam.setParameters(subscribeParameters);
            subscribeParam.setCompany(CompanyConstant.ST);
            subscribeParam.setNumber("773039762404825");
            subscribeParam.setKey(key);
    
            SubscribeReq subscribeReq = new SubscribeReq();
            subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
            subscribeReq.setParam(new Gson().toJson(subscribeParam));
    
            IBaseClient subscribe = new Subscribe();
            System.out.println(subscribe.execute(subscribeReq));
        }
    
        /**
          * 地图轨迹订阅
          */
         @Test
         public void testSubscribe() throws Exception{
             SubscribeParameters subscribeParameters = new SubscribeParameters();
             subscribeParameters.setCallbackurl("http://www.baidu.com");
             subscribeParameters.setPhone("17725390266");
     
             SubscribeParam subscribeParam = new SubscribeParam();
             subscribeParam.setParameters(subscribeParameters);
             subscribeParam.setCompany(CompanyConstant.YT);
             subscribeParam.setNumber("YT5319615559666");
             subscribeParam.setFrom("湖北省孝感市大悟县公司");
             subscribeParam.setTo("浙江省宁波市");
             subscribeParam.setKey(key);
     
             SubscribeReq subscribeReq = new SubscribeReq();
             subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
             subscribeReq.setParam(new Gson().toJson(subscribeParam));
     
             IBaseClient subscribe = new SubscribeWithMap();
             System.out.println(subscribe.execute(subscribeReq));
         }

        /**
         * 智能识别接口(正式用户可以使用)
         */
        @Test
        public void testAutoNum() throws Exception{
            AutoNumReq autoNumReq = new AutoNumReq();
            autoNumReq.setKey(key);
            autoNumReq.setNum("773039762404825");
    
            IBaseClient baseClient = new AutoNum();
            System.out.println(baseClient.execute(autoNumReq));
        }
    
        /**
         * 电子面单下单接口(V2)
         *
         * @throws Exception
         */
        @Test
        public void  testLabelOrder() throws Exception {
    
            ManInfo recManInfo  = new ManInfo();
            recManInfo.setName("张三");
            recManInfo.setMobile("15999566666");
            recManInfo.setPrintAddr("广东省深圳市南山区科技南十二路");
    
            ManInfo sendManInfo = new ManInfo();
            sendManInfo.setName("李四");
            sendManInfo.setMobile("15999566666");
            sendManInfo.setPrintAddr("北京市海淀区xxx路");
    
            OrderReq orderReq = new OrderReq();
            orderReq.setKuaidicom(CompanyConstant.ZJS);
            orderReq.setCount(1);
            orderReq.setSiid(siid);
            orderReq.setTempId("60f6c17c7c223700131d8bc3");
            orderReq.setSendMan(sendManInfo);
            orderReq.setRecMan(recManInfo);
    
            orderReq.setPrintType(PrintType.CLOUD);
    
            String param = new Gson().toJson(orderReq);
            String t = System.currentTimeMillis() + "";
    
            PrintReq printReq = new PrintReq();
            printReq.setT(t);
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setMethod(ApiInfoConstant.ORDER);
            printReq.setParam(param);
    
            IBaseClient baseClient = new LabelV2();
            System.out.println(baseClient.execute(printReq));
    
        }
    
    
        /**
         * 云打印复打(V2)
         *
         * @throws Exception
         */
        @Test
        public void  testPrintOld() throws Exception {
            RepeatPrintReq repeatPrintReq = new RepeatPrintReq();
    
            repeatPrintReq.setTaskId("027B34AD22DE4F299643A13642B70D5F");
    
            String param = new Gson().toJson(repeatPrintReq);
            String t = System.currentTimeMillis() + "";
    
            PrintReq printReq = new PrintReq();
            printReq.setT(t);
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_OLD_METHOD);
            printReq.setParam(param);
    
            IBaseClient baseClient = new LabelV2();
            System.out.println(baseClient.execute(printReq));
        }
    
        /**
         * 自定义打印(V2)
         *
         * @throws Exception
         */
        @Test
        public void  testCustom() throws Exception {
            CustomReq customReq = new CustomReq();
    
            customReq.setPrintType(PrintType.IMAGE);
            customReq.setTempId("41b9d19ee56b45b5a23d7b6ace4f9029");
    
            Map<String,Object> customParam = new HashMap<>();
            customParam.put("qrcode","888888888");
            customReq.setCustomParam(customParam);
    
            String param = new Gson().toJson(customReq);
            String t = System.currentTimeMillis() + "";
    
            PrintReq printReq = new PrintReq();
            printReq.setT(t);
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setMethod(ApiInfoConstant.CUSTOM);
            printReq.setParam(param);
    
            IBaseClient baseClient = new LabelV2();
            System.out.println(baseClient.execute(printReq));
        }
    
        /**
         * 电子面单图片接口(v1版本示例,后续不维护新功能,建议使用v2)
         */
        @Test
        public void testPrintImg() throws Exception{
            PrintImgParam printImgParam = new PrintImgParam();
            printImgParam.setKuaidicom(CompanyConstant.ZJS);
            printImgParam.setSendManName("张三");
            printImgParam.setSendManMobile("15999566666");
            printImgParam.setSendManPrintAddr("广东省深圳市南山区科技南十二路");
            printImgParam.setRecManName("李四");
            printImgParam.setRecManMobile("15999566666");
            printImgParam.setRecManPrintAddr("北京市海淀区xxx路");
            printImgParam.setType("10");
            printImgParam.setTempid("180c7c8f646742ca871a92c976392b05");
            printImgParam.setCount("1");
    
            String param = new Gson().toJson(printImgParam);
            String t = System.currentTimeMillis() + "";
            String sign = SignUtils.printSign(param,t,key,secret);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_PIC_METHOD);
            printReq.setSign(sign);
            printReq.setParam(param);
            printReq.setT(t);
    
            IBaseClient printImg = new PrintImg();
            System.out.println(printImg.execute(printReq));
        }
    
        /**
         * 电子面单HTML接口(v1版本示例,后续不维护新功能,建议使用v2)
         */
        @Test
        public void testPrintHtml() throws Exception{
            ManInfo recManInfo  = new ManInfo();
            recManInfo.setName("张三");
            recManInfo.setMobile("15999566666");
            recManInfo.setPrintAddr("广东省深圳市南山区科技南十二路");
    
            ManInfo sendManInfo = new ManInfo();
            sendManInfo.setName("李四");
            sendManInfo.setMobile("15999566666");
            sendManInfo.setPrintAddr("北京市海淀区xxx路");
    
            PrintHtmlParam printHtmlParam = new PrintHtmlParam();
            printHtmlParam.setKuaidicom(CompanyConstant.ZJS);
            printHtmlParam.setCount("2");
            printHtmlParam.setNeedChild("1");
            //如果需要返回电子面单,需要设置
            printHtmlParam.setNeedTemplate("1");
            printHtmlParam.setSendMan(sendManInfo);
            printHtmlParam.setRecMan(recManInfo);
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(printHtmlParam);
            String sign = SignUtils.printSign(param,t,key,secret);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_HTML_METHOD);
            printReq.setT(t);
            printReq.setSign(sign);
            printReq.setParam(param);
    
            IBaseClient printHtml = new PrintHtml();
            System.out.println(printHtml.execute(printReq));
        }
    
        /**
         * 电子面单打印接口(v1版本示例,后续不维护新功能,建议使用v2)
         */
        @Test
        public void testPrintCloud() throws Exception{
            ManInfo recManInfo  = new ManInfo();
            recManInfo.setName("张三");
            recManInfo.setMobile("15999566666");
            recManInfo.setPrintAddr("广东省深圳市南山区科技南十二路");
    
            ManInfo sendManInfo = new ManInfo();
            sendManInfo.setName("李四");
            sendManInfo.setMobile("15999566666");
            sendManInfo.setPrintAddr("北京市海淀区xxx路");
    
            PrintCloudParam printCloudParam = new PrintCloudParam();
            printCloudParam.setKuaidicom(CompanyConstant.ZJS);
            printCloudParam.setCount("1");
            printCloudParam.setSiid(siid);
            printCloudParam.setTempid("180c7c8f646742ca871a92c976392b05");
            printCloudParam.setSendMan(sendManInfo);
            printCloudParam.setRecMan(recManInfo);
    
            String param = new Gson().toJson(printCloudParam);
            String t = System.currentTimeMillis() + "";
    
            PrintReq printReq = new PrintReq();
            printReq.setT(t);
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_PRINT_METHOD);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setParam(param);
    
            IBaseClient baseClient = new PrintCloud();
            System.out.println(baseClient.execute(printReq));
        }
    
        /**
         * 云打印自定义(v1版本示例,后续不维护新功能,建议使用v2)
         */
        @Test
        public void testCloudCustom() throws Exception{
            CloudPrintCustomParam cloudPrintCustomParam = new CloudPrintCustomParam();
            cloudPrintCustomParam.setSiid(siid);
            cloudPrintCustomParam.setCallBackUrl("http://www.baidu.com");
            cloudPrintCustomParam.setTempid("180c7c8f646742ca871a92c976392b05");
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(cloudPrintCustomParam);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_CUSTOM_METHOD);
            printReq.setT(t);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setParam(param);
    
            IBaseClient baseClient = new CloudPrintCustom();
            System.out.println(baseClient.execute(printReq));
        }
    
        /**
         * 附件打印接口
         */
        @Test
        public void testCloudAttachment() throws Exception{
            CloudPrintAttachmentParam cloudPrintAttachmentParam = new CloudPrintAttachmentParam();
            cloudPrintAttachmentParam.setSiid(siid);
            cloudPrintAttachmentParam.setCallBackUrl("http://www.baidu.com");
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(cloudPrintAttachmentParam);
            CloudAttachmentReq cloudPrintAttachmentReq = new CloudAttachmentReq();
    
            cloudPrintAttachmentReq.setKey(key);
            cloudPrintAttachmentReq.setMethod(ApiInfoConstant.CLOUD_PRINT_ATTACHMENT_METHOD);
            cloudPrintAttachmentReq.setT(t);
            cloudPrintAttachmentReq.setSign(SignUtils.printSign(param,t,key,secret));
            cloudPrintAttachmentReq.setParam(param);
            cloudPrintAttachmentReq.setFile(new File("C:\\Users\\Administrator.-20171106WFEKLN\\Desktop\\1.jpg"));
    
            IBaseClient baseClient = new CloudPrintAttachment();
            System.out.println(baseClient.execute(cloudPrintAttachmentReq));
        }
    
        /**
         * 复打(v1版本示例,建议使用v2)
         */
        @Test
        public void testCloudPrintOld() throws Exception{
            PrintReq printReq = new PrintReq();
            CloudPrintOldParam cloudPrintOldParam = new CloudPrintOldParam();
            cloudPrintOldParam.setTaskId("A32AA6754669C14CBE26EB79664D2266");
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(cloudPrintOldParam);
    
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_OLD_METHOD);
            printReq.setT(t);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setParam(param);
    
            IBaseClient cloudPrintOld = new CloudPrintOld();
            System.out.println(cloudPrintOld.execute(printReq));
        }
    
        /**
         * 第三方平台账号授权
         */
        @Test
        public void testThirdAuth() throws Exception{
            PrintReq printReq = new PrintReq();
            ThirdAuthReq thirdAuthReq = new ThirdAuthReq();
            thirdAuthReq.setNet("taobao");
            thirdAuthReq.setCallBackUrl("http://www.baidu.com");
            thirdAuthReq.setView("web");
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(thirdAuthReq);
    
            printReq.setKey(key);
            printReq.setT(t);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setParam(param);
    
            IBaseClient thirdAuth = new ThirdAuth();
            System.out.println(thirdAuth.execute(printReq));
        }
    
        /**
         * 快递100短信发送接口
         */
        @Test
        public void testSendSms() throws Exception{
            SendSmsReq sendSmsReq = new SendSmsReq();
            sendSmsReq.setCallback("http://www.baidu.com");
            Map<String,String> content = new HashMap<String, String>();
            content.put("username","测试用户");
            sendSmsReq.setContent(new Gson().toJson(content));
            sendSmsReq.setPhone("15994708912");
            sendSmsReq.setSeller("贵司名称");
            sendSmsReq.setUserid(userid);
            sendSmsReq.setTid(tid);
            sendSmsReq.setSign(SignUtils.smsSign(key,userid));
    
            IBaseClient sendSms = new SendSms();
            System.out.println(sendSms.execute(sendSmsReq));
        }
    
        /**
         * C端查询运力(云平台接口)
         */
        @Test
        public void testCOrderQuery() throws Exception {
            COrderQueryReq cOrderQueryReq = new COrderQueryReq();
            cOrderQueryReq.setAddress("广东省深圳市南山区华强南");
            cOrderQueryReq.setSecret_key(secret_key);
            cOrderQueryReq.setSecret_code(CloudApiCodeConstant.ORDER_QUERY_EXPRESS);
            cOrderQueryReq.setSecret_sign(SignUtils.cloudSign(secret_key, secret_secret));
    
            IBaseClient cloudBase = new CloudBase();
            System.out.println(cloudBase.execute(cOrderQueryReq));
        }
    
        /**
         * c端寄件(云平台接口)
         */
        @Test
        public void testCOrder() throws Exception {
            COrderReq cOrderReq = new COrderReq();
            cOrderReq.setCom(CompanyConstant.SF);
            cOrderReq.setSendManName("张三");
            cOrderReq.setSendManMobile("15966666666");
            cOrderReq.setSendManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
            cOrderReq.setRecManName("李四");
            cOrderReq.setRecManMobile("15966666666");
            cOrderReq.setRecManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
            cOrderReq.setCallBackUrl("http://www.baidu.com");
            cOrderReq.setCargo("文件");
            cOrderReq.setRemark("测试下单,待会取消");
            cOrderReq.setWeight("1");
            cOrderReq.setSalt("123456");
            cOrderReq.setSecret_key(secret_key);
            cOrderReq.setSecret_code(CloudApiCodeConstant.ORDER);
            cOrderReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));
    
            IBaseClient cloudBase = new CloudBase();
            System.out.println(cloudBase.execute(cOrderReq));
        }
    
        /**
         * c端取消寄件(云平台接口)
         */
        @Test
        public void testCOrderCancel() throws Exception {
            COrderCancelReq cOrderCancelReq = new COrderCancelReq();
            cOrderCancelReq.setTaskId("B9D3FF44B7439F298BA62211E3AC7126");
            cOrderCancelReq.setOrderId("17561388");
            cOrderCancelReq.setCancelMsg("测试单");
            cOrderCancelReq.setSecret_key(secret_key);
            cOrderCancelReq.setSecret_code(CloudApiCodeConstant.ORDER_CANCEL);
            cOrderCancelReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));
    
            IBaseClient cloudBase = new CloudBase();
            System.out.println(cloudBase.execute(cOrderCancelReq));
        }
    
        /**
         * 发货单接口
         *
         * @throws Exception
         */
        @Test
        public void  testCloudPrintParcelsBill() throws Exception {
    
            CloudPrintParcelsBillReq cloudPrintParcelsBillReq = new CloudPrintParcelsBillReq();
    
            cloudPrintParcelsBillReq.setCallBackUrl("http://www.baidu.com");
            cloudPrintParcelsBillReq.setTempid("164509714515858026");
            cloudPrintParcelsBillReq.setSiid(siid);
    
    
            String t = System.currentTimeMillis() + "";
            String param = new Gson().toJson(cloudPrintParcelsBillReq);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.BILL_PARCELS_METHOD);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setT(t);
            printReq.setParam(param);
    
            IBaseClient parcelsBill = new CloudPrintParcelsBill();
            System.out.println(parcelsBill.execute(printReq));
        }
    
        /**
         * 快递面单OCR识别接口
         *
         * @throws Exception
         */
        @Test
        public void  testElecDetocr() throws Exception {
    
            OrcParam orcParam = new OrcParam();
            orcParam.setImageUrl("https://cdn.kuaidi100.com/images/openapi/document/ocr_tem.png");
            String param = new Gson().toJson(orcParam);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setParam(param);
    
            IBaseClient orc = new ElecDetocr();
            System.out.println(orc.execute(printReq));
    
        }
        /**
         * 国际电子面单下单API
         * 
         * @throws Exception
         */
        @Test
        public void testShipment() throws Exception {
            ShipmentReq shipmentReq = new ShipmentReq();
            shipmentReq.setPartnerId("");
            shipmentReq.setPartnerKey("");
            shipmentReq.setPartnerSecret("");
            shipmentReq.setCode("");
            shipmentReq.setKuaidicom("fedex");
            shipmentReq.setCargo("invoice");
            shipmentReq.setExpType("FedEx International First®");
            shipmentReq.setUnitOfMeasurement("SU");
            shipmentReq.setWeight(50.00);
            shipmentReq.setCustomsValue(1000.00);
    
            ManInfo sendMan = new ManInfo();
            sendMan.setName("test");
            sendMan.setMobile("16888888888");
            sendMan.setCountryCode("CN");
            sendMan.setCity("SHENZHEN");
            sendMan.setAddr("Kingdee Software Park");
            sendMan.setDistrict("Hi-tech Park,Nanshang District");
            sendMan.setZipcode("518057");
            sendMan.setEmail("[email protected]");
            shipmentReq.setSendMan(sendMan);
    
            ManInfo recMan = new ManInfo();
            recMan.setName("test");
            recMan.setMobile("16888888888");
            recMan.setCountryCode("US");
            recMan.setCity("NEW YORK");
            recMan.setAddr(" 70 Washington Square South");
            recMan.setZipcode("10012");
            recMan.setEmail("[email protected]");
            recMan.setStateOrProvinceCode("NY");
            shipmentReq.setRecMan(recMan);
    
            List<PackageInfo> packageInfoList = new ArrayList<>();
            PackageInfo packageInfo = new PackageInfo();
            packageInfo.setLength(10.00);
            packageInfo.setWidth(20.00);
            packageInfo.setHeight(10.00);
            packageInfo.setWeight(50.00);
            packageInfoList.add(packageInfo);
            shipmentReq.setPackageInfos(packageInfoList);
    
            List<ExportInfo> exportInfoList = new ArrayList<>();
            ExportInfo exportInfo = new ExportInfo();
            exportInfo.setDesc("test");
            exportInfo.setGrossWeight(50.00);
            exportInfo.setQuantity(1);
            exportInfo.setUnitPrice(1000.00);
            exportInfo.setQuantityUnitOfMeasurement("PCS");
            exportInfo.setManufacturingCountryCode("CN");
            exportInfoList.add(exportInfo);
            shipmentReq.setExportInfos(exportInfoList);
    
            CustomsClearance customsClearance = new CustomsClearance();
            customsClearance.setPurpose("GIFT");
            customsClearance.setDocument(true);
    
            String param = new Gson().toJson(shipmentReq);
            String t = System.currentTimeMillis() + "";
            String sign = SignUtils.printSign(param,t,key,secret);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_PIC_METHOD);
            printReq.setSign(sign);
            printReq.setParam(param);
            printReq.setT(t);
    
            IBaseClient baseClient = new InternationalShipment();
            //国际面单耗时比较长,尽量调整10s以上
            baseClient.setTimeOut(1000,10000);
            System.out.println(baseClient.execute(printReq));
        }
        /**
         * 获取店铺授权超链接接口
         *
         * @throws Exception
         */
        @Test
        public void testStoreAuth() throws Exception {
            StoreAuthReq storeAuthReq = new StoreAuthReq();
            storeAuthReq.setShopType(ThirdPlatformConstant.TAO_BAO);
            storeAuthReq.setCallbackUrl("http://www.baidu.com");
            storeAuthReq.setSalt("12345678");
            String param = new Gson().toJson(storeAuthReq);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setSign(SignUtils.sign(param + key + secret));
            printReq.setParam(param);
    
            IBaseClient baseClient = new ThirdPlatformStoreAuth();
            HttpResult result = baseClient.execute(printReq);
            System.out.println(result);
            if (result!=null && result.getStatus() == HttpStatus.SC_OK && result.getBody()!= null){
                ThirdPlatformBaseResp<StoreAuthResp> storeAuthResp = new Gson().fromJson(result.getBody(),new TypeToken<ThirdPlatformBaseResp<StoreAuthResp>>(){}.getType());
            }
        }
    
        /**
         * 提交订单获取任务接口
         *
         * @throws Exception
         */
        @Test
        public void testCommitTask() throws Exception {
            CommitTaskReq commitTaskReq = new CommitTaskReq();
            commitTaskReq.setShopType(ThirdPlatformConstant.TAO_BAO);
            commitTaskReq.setShopId("21231");
            commitTaskReq.setOrderStatus(OrderStatus.UNSHIP.toString());
            commitTaskReq.setUpdateAtMin("2022-02-17 16:00:00");
            commitTaskReq.setUpdateAtMax("2022-02-17 16:30:00");
            commitTaskReq.setCallbackUrl("http://www.baidu.com");
            commitTaskReq.setSalt("12345678");
            String param = new Gson().toJson(commitTaskReq);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setSign(SignUtils.sign(param + key + secret));
            printReq.setParam(param);
    
            IBaseClient baseClient = new ThirdPlatformOrderCommitTask();
            HttpResult result = baseClient.execute(printReq);
            System.out.println(result);
            if (result!=null && result.getStatus() == HttpStatus.SC_OK && result.getBody()!= null){
                ThirdPlatformBaseResp<CommitTaskResp> commitTaskResp = new Gson().fromJson(result.getBody(),new TypeToken<ThirdPlatformBaseResp<CommitTaskResp>>(){}.getType());
            }
        }
    
        /**
         * 快递单号回传及订单发货接口
         *
         * @throws Exception
         */
        @Test
        public void testUploadNum() throws Exception {
            UploadNumReq uploadNumReq = new UploadNumReq();
            uploadNumReq.setShopType(ThirdPlatformConstant.TAO_BAO);
            uploadNumReq.setShopId("2333");
            uploadNumReq.setOrderNum("1232321");
            uploadNumReq.setKuaidiCom(CompanyConstant.YD);
            uploadNumReq.setKuaidiNum("12345678");
            String param = new Gson().toJson(uploadNumReq);
    
            PrintReq printReq = new PrintReq();
            printReq.setKey(key);
            printReq.setSign(SignUtils.sign(param + key + secret));
            printReq.setParam(param);
    
            IBaseClient baseClient = new ThirdPlatformOrderUploadNum();
            HttpResult result = baseClient.execute(printReq);
            System.out.println(result);
            if (result!=null && result.getStatus() == HttpStatus.SC_OK && result.getBody()!= null){
                ThirdPlatformBaseResp baseResp = new Gson().fromJson(result.getBody(),new TypeToken<ThirdPlatformBaseResp>(){}.getType());
            }
        }
        /**
         * 商家寄件下单接口
         */
        @Test
        public void testBorderOfficial() throws Exception {
            PrintReq printReq = new PrintReq();
            BOrderReq bOrderReq = new BOrderReq();
            bOrderReq.setKuaidicom(CompanyConstant.JD);
            bOrderReq.setSendManName("张三");
            bOrderReq.setSendManMobile("15966666666");
            bOrderReq.setSendManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
            bOrderReq.setRecManName("李四");
            bOrderReq.setRecManMobile("18888888888");
            bOrderReq.setRecManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
            bOrderReq.setCallBackUrl("http://www.baidu.com");
            bOrderReq.setWeight("1");
    
            String t = String.valueOf(System.currentTimeMillis());
            String param = new Gson().toJson(bOrderReq);
    
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setT(t);
            printReq.setParam(param);
            printReq.setMethod(ApiInfoConstant.B_ORDER_OFFICIAL_ORDER_METHOD);
            System.out.println(printReq);
            IBaseClient bOrder = new BOrderOfficial();
            System.out.println(bOrder.execute(printReq));
        }
    
        /**
         * 商家寄件下单取消接口
         */
        @Test
        public void testBorderOfficialCancel() throws Exception {
            PrintReq printReq = new PrintReq();
            BOrderCancelReq bOrderCancelReq = new BOrderCancelReq();
            bOrderCancelReq.setTaskId("2DB69EAE2F48F8AEF00C4BB6F57BF79E");
            bOrderCancelReq.setOrderId("17390954");
            bOrderCancelReq.setCancelMsg("测试单取消");
    
            String t = String.valueOf(System.currentTimeMillis());
            String param = new Gson().toJson(bOrderCancelReq);
    
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setT(t);
            printReq.setParam(param);
            printReq.setMethod(ApiInfoConstant.B_ORDER_OFFICIAL_CANCEL_METHOD);
    
            IBaseClient bOrder = new BOrderOfficial();
            System.out.println(bOrder.execute(printReq));
        }
        /**
         * 商家寄件下单价格接口
         */
        @Test
        public void testBorderOfficialQueryPrice() throws Exception {
            PrintReq printReq = new PrintReq();
            BOrderOfficialQueryPriceReq officialQueryPriceReq = new BOrderOfficialQueryPriceReq();
    
            officialQueryPriceReq.setKuaidiCom("jtexpress");
            officialQueryPriceReq.setSendManPrintAddr("广东省深圳市");
            officialQueryPriceReq.setRecManPrintAddr("福建省厦门市");
    
            String t = String.valueOf(System.currentTimeMillis());
            String param = new Gson().toJson(officialQueryPriceReq);
    
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setT(t);
            printReq.setParam(param);
            printReq.setMethod(ApiInfoConstant.B_ORDER_OFFICIAL_PRICE_METHOD);
    
            IBaseClient bOrder = new BOrderOfficial();
            System.out.println(bOrder.execute(printReq));
        }
        /**
         * 商家寄件订单详情查询接口
         */
        @Test
        public void testBorderOfficialQueryDetail() throws Exception {
            PrintReq printReq = new PrintReq();
            BOrderOfficialQueryDetailReq officialQueryPriceReq = new BOrderOfficialQueryDetailReq();
    
            officialQueryPriceReq.setTaskId("8CE30D*******4E2F5F");
    
            String t = String.valueOf(System.currentTimeMillis());
            String param = new Gson().toJson(officialQueryPriceReq);
    
            printReq.setKey(key);
            printReq.setSign(SignUtils.printSign(param,t,key,secret));
            printReq.setT(t);
            printReq.setParam(param);
            printReq.setMethod(ApiInfoConstant.DETAIL);
    
            IBaseClient bOrder = new BOrderOfficial();
            System.out.println(bOrder.execute(printReq));
        }

         /**
             * 快递可用性查询
             *
             * @throws Exception
             */
        @Test
         public void  testExpressReachable() throws Exception {
     
             PrintReq printReq = new PrintReq();
             ExpressReachableReq expressReachableReq = new ExpressReachableReq();
             expressReachableReq.setKuaidicom("ems");
             expressReachableReq.setRecManName("张三");
             expressReachableReq.setRecManMobile("12345678910");
             expressReachableReq.setRecManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
             expressReachableReq.setSendManName("李四");
             expressReachableReq.setSendManMobile("12345678910");
             expressReachableReq.setSendManPrintAddr("西藏日喀则市定日县珠穆朗玛峰");
     
     
             String t = System.currentTimeMillis() + "";
             String param = new Gson().toJson(expressReachableReq);
     
             printReq.setKey(key);
             printReq.setMethod(ApiInfoConstant.REACHABLE_METHOD);
             printReq.setT(t);
             printReq.setSign(SignUtils.printSign(param,t,key,secret));
             printReq.setParam(param);
     
             IBaseClient baseClient = new ExpressReachable();
             System.out.println(baseClient.execute(printReq));
     
         }

    /**
     * 同城寄件-预下单
     *
     * @throws Exception
     */
    @Test
    public void  testBsamecityPrice() throws Exception {

        PrintReq printReq = new PrintReq();
        BsamecityOrderReq bsamecityOrderReq = new BsamecityOrderReq();
        bsamecityOrderReq.setKuaidicom("shunfengtongcheng");
        bsamecityOrderReq.setLbsType(2);
        bsamecityOrderReq.setRecManName("张三");
        bsamecityOrderReq.setRecManMobile("12345678910");
        bsamecityOrderReq.setRecManProvince("北京市");
        bsamecityOrderReq.setRecManCity("北京市");
        bsamecityOrderReq.setRecManDistrict("海淀区");
        bsamecityOrderReq.setRecManAddr("学清嘉创大厦A座15层");
        bsamecityOrderReq.setRecManLat("40.014838");
        bsamecityOrderReq.setRecManLng("116.352569");
        bsamecityOrderReq.setSendManName("李四");
        bsamecityOrderReq.setSendManMobile("12345678910");
        bsamecityOrderReq.setSendManProvince("北京市");
        bsamecityOrderReq.setSendManCity("北京市");
        bsamecityOrderReq.setSendManDistrict("海淀区");
        bsamecityOrderReq.setSendManAddr("清华大学");
        bsamecityOrderReq.setSendManLat("40.002436");
        bsamecityOrderReq.setSendManLng("116.326582");
        bsamecityOrderReq.setWeight("1");
        bsamecityOrderReq.setRemark("测试下单");
        bsamecityOrderReq.setVolume("");
        bsamecityOrderReq.setOrderType(0);
        bsamecityOrderReq.setExpectPickupTime("");
        bsamecityOrderReq.setExpectFinishTime("");
        bsamecityOrderReq.setInsurance("");
        bsamecityOrderReq.setPrice("0");
        Goods goods = new Goods("外卖", "食品", 1);
        ArrayList<Goods> goods_list = new ArrayList<Goods>();
        goods_list.add(goods);
        bsamecityOrderReq.setGoods(goods_list);

        String t = System.currentTimeMillis() + "";
        String param = new Gson().toJson(bsamecityOrderReq);

        printReq.setKey(key);
        printReq.setMethod(ApiInfoConstant.BSAMECITY_PRICE);
        printReq.setT(t);
        printReq.setSign(SignUtils.printSign(param,t,key,secret));
        printReq.setParam(param);

        IBaseClient bsamecityPrice = new BsameCityExpress();
        System.out.println(bsamecityPrice.execute(printReq));
    }

    /**
     * 同城寄件-下单
     *
     * @throws Exception
     */
    @Test
    public void  testBsamecityOrder() throws Exception {

        PrintReq printReq = new PrintReq();
        BsamecityOrderReq bsamecityOrderReq = new BsamecityOrderReq();
        bsamecityOrderReq.setKuaidicom("shunfengtongcheng");
        bsamecityOrderReq.setLbsType(2);
        bsamecityOrderReq.setRecManName("张三");
        bsamecityOrderReq.setRecManMobile("12345678910");
        bsamecityOrderReq.setRecManProvince("北京市");
        bsamecityOrderReq.setRecManCity("北京市");
        bsamecityOrderReq.setRecManDistrict("海淀区");
        bsamecityOrderReq.setRecManAddr("学清嘉创大厦A座15层");
        bsamecityOrderReq.setRecManLat("40.014838");
        bsamecityOrderReq.setRecManLng("116.352569");
        bsamecityOrderReq.setSendManName("李四");
        bsamecityOrderReq.setSendManMobile("12345678910");
        bsamecityOrderReq.setSendManProvince("北京市");
        bsamecityOrderReq.setSendManCity("北京市");
        bsamecityOrderReq.setSendManDistrict("海淀区");
        bsamecityOrderReq.setSendManAddr("清华大学");
        bsamecityOrderReq.setSendManLat("40.002436");
        bsamecityOrderReq.setSendManLng("116.326582");
        bsamecityOrderReq.setWeight("1");
        bsamecityOrderReq.setRemark("测试下单");
        bsamecityOrderReq.setVolume("");
        bsamecityOrderReq.setOrderType(0);
        bsamecityOrderReq.setExpectPickupTime("");
        bsamecityOrderReq.setExpectFinishTime("");
        bsamecityOrderReq.setInsurance("");
        bsamecityOrderReq.setPrice("0");
        Goods goods = new Goods("外卖", "食品", 1);
        ArrayList<Goods> goods_list = new ArrayList<Goods>();
        goods_list.add(goods);
        bsamecityOrderReq.setGoods(goods_list);
        bsamecityOrderReq.setCallbackUrl("http://baidu.com");
        bsamecityOrderReq.setSalt("");

        String t = System.currentTimeMillis() + "";
        String param = new Gson().toJson(bsamecityOrderReq);

        printReq.setKey(key);
        printReq.setMethod(ApiInfoConstant.BSAMECITY_ORDER);
        printReq.setT(t);
        printReq.setSign(SignUtils.printSign(param,t,key,secret));
        printReq.setParam(param);

        IBaseClient bsamecityPrice = new BsameCityExpress();
        System.out.println(bsamecityPrice.execute(printReq));
    }

    /**
     * 同城寄件-预取消
     *
     * @throws Exception
     */
    @Test
    public void  testBsamecityPrecancel() throws Exception {

        PrintReq printReq = new PrintReq();
        BsamecityCancelReq bsamecityCancelReq = new BsamecityCancelReq();
        bsamecityCancelReq.setOrderId("100094");
        bsamecityCancelReq.setCancelMsgType(1);
        bsamecityCancelReq.setCancelMsg("测试寄件");
        bsamecityCancelReq.setTaskId("3B8E825DCCEE4F28B4A93685DA62F7F2");

        String t = System.currentTimeMillis() + "";
        String param = new Gson().toJson(bsamecityCancelReq);

        printReq.setKey(key);
        printReq.setMethod(ApiInfoConstant.BSAMECITY_PRECANCEL);
        printReq.setT(t);
        printReq.setSign(SignUtils.printSign(param,t,key,secret));
        printReq.setParam(param);

        IBaseClient bsamecityPrice = new BsameCityExpress();
        System.out.println(bsamecityPrice.execute(printReq));
    }

    /**
     * 同城寄件-取消
     *
     * @throws Exception
     */
    @Test
    public void  testBsamecityCancel() throws Exception {

        PrintReq printReq = new PrintReq();
        BsamecityCancelReq bsamecityCancelReq = new BsamecityCancelReq();
        bsamecityCancelReq.setOrderId("100239");
        bsamecityCancelReq.setCancelMsgType(1);
        bsamecityCancelReq.setCancelMsg("测试寄件");
        bsamecityCancelReq.setTaskId("BEA8285B6A014A1A94707CE3CF484D0A");

        String t = System.currentTimeMillis() + "";
        String param = new Gson().toJson(bsamecityCancelReq);

        printReq.setKey(key);
        printReq.setMethod(ApiInfoConstant.BSAMECITY_CANCEL);
        printReq.setT(t);
        printReq.setSign(SignUtils.printSign(param,t,key,secret));
        printReq.setParam(param);

        IBaseClient bsamecityPrice = new BsameCityExpress();
        System.out.println(bsamecityPrice.execute(printReq));
    }

    /**
     * 同城寄件-加小费
     *
     * @throws Exception
     */
    @Test
    public void  testBsamecityAddfee() throws Exception {

        PrintReq printReq = new PrintReq();
        BsamecityAddfeeReq bsamecityAddfeeReq = new BsamecityAddfeeReq();
        bsamecityAddfeeReq.setOrderId("100240");
        bsamecityAddfeeReq.setRemark("加钱");
        bsamecityAddfeeReq.setTaskId("1F495CE0E58B40A296694116CFBCE347");
        bsamecityAddfeeReq.setTips("10");

        String t = System.currentTimeMillis() + "";
        String param = new Gson().toJson(bsamecityAddfeeReq);

        printReq.setKey(key);
        printReq.setMethod(ApiInfoConstant.BSAMECITY_ADDFEE);
        printReq.setT(t);
        printReq.setSign(SignUtils.printSign(param,t,key,secret));
        printReq.setParam(param);

        IBaseClient bsamecityPrice = new BsameCityExpress();
        System.out.println(bsamecityPrice.execute(printReq));
    }
}

FAQ

问题1.快递100api接口里sign该如何处理?

快递100加密方式统一为MD5后转大写,可以参考签名

org.apache.commons.codec.digest.DigestUtils.md5Hex(msg).toUpperCase();

问题2.使用了快递100订阅接口后,该如何处理回调接口?

可以参考推送订阅回调

public SubscribeResp callBackUrl(HttpServletRequest request){
        String param = request.getParameter("param");
        String sign = request.getParameter("sign");
        //建议记录一下这个回调的内容,方便出问题后双方排查问题
        log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
        //订阅时传的salt,没有可以忽略
        String salt = "";
        String ourSign = SignUtils.sign(param + salt);
        SubscribeResp subscribeResp = new SubscribeResp();
        subscribeResp.setResult(Boolean.TRUE);
        subscribeResp.setReturnCode("200");
        subscribeResp.setMessage("成功");
        //加密如果相等,属于快递100推送;否则可以忽略掉当前请求
        if (ourSign.equals(sign)){
            //TODO 业务处理
            return subscribeResp;
        }
        return null;
    }

问题3.使用电子面单图片接口,该如何处理返回的base64图片?

返回的是一个字符串json数组,多个子单时会有多个。

添加前缀“data:image/png;base64,”,把“\\\\n”替换成“”;可以参考处理返回的base64字符串

public List<String> getBase64Img(String imgBase64){
        List<String> stringList= new Gson().fromJson(imgBase64,
                                 new TypeToken<List<String>>() {}.getType());
        List<String> base64Img = new ArrayList<String>();
        if (stringList != null && stringList.size()>0){
            for (String s : stringList) {
                s = "data:image/png;base64,"+s.replace("\\\\n","");
                base64Img.add(s);
            }
        }
        return base64Img;
    }

问题4.云平台其他接口该如何对接?

第一步:根据对应接口新增对应的请求参数类,继承CloudBaseReq,类似快递寄件接口取消寄件请求参数类

public class COrderCancelReq extends CloudBaseReq{
    /**
     * 任务ID
     */
    private String taskId;
    /**
     * 订单ID
     */
    private String orderId;
    /**
     * 取消原因,例:暂时不寄件了
     */
    private String cancelMsg;
}

第二步:调用时只需要更换成第一步新建的实体

public void testCOrderCancel() throws Exception {
    COrderCancelReq cOrderCancelReq = new COrderCancelReq();
    cOrderCancelReq.setTaskId("B19BB4C6F33BE9E735A63D4142557751");
    cOrderCancelReq.setOrderId("11115207");
    cOrderCancelReq.setCancelMsg("测试单");
    cOrderCancelReq.setSecret_key(secret_key);
    cOrderCancelReq.setSecret_code(CloudApiCodeConstant.ORDER_CANCEL);
    cOrderCancelReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));

    IBaseClient cloudBase = new CloudBase();
    System.out.println(cloudBase.execute(cOrderCancelReq));
}

tips:key、secret、code等账号信息获取,云平台->买家中心-我的接口

image-20201207190323327

More Repositories

1

php-demo

快递100php快递查询接口-此php接口目录内容包括:对接快递电子面单制作和打印接口、 快递公司寄件接口、快递公司物流轨迹地图接口、包裹到达和派件时间预估接口、实时查询物流状态接口和订阅物流状态提醒接口。php快递查询接口示例仅用于展示快递100物流查询接口的对接流程,其中的API密钥需要注册获取,您可点击下方官网链接申请免费接口,如果需要人工帮助,可以咨询快递100API官网运营,此服务不收取任何费用。
PHP
106
star
2

python-demo

快递100python快递查询api接口示例,本快递查询接口示例包括以下内容:物流查询接口、快递单号智能识别接口、物流电子面单接口、快递发货单接口、快递电子面单云打印接口、快递寄件接口、同城配送api接口。接入快递100的物流接口只需要将示例中的参数换为您的专属参数即可。您可以点击下方官方链接申请免费试用账户,如果在对接过程中或者需求评估中遇到问题,可咨询我们的产品运营,此服务不收取任何服务费。
Python
75
star
3

.net-demo

快递100.NET快递单号查询API接口。本.NET快递接口文档内容涵盖:NET快递电子面单接口、NET寄快递接口、NET同城配送接口、NET快递地图跟踪接口。对接此物流查询接口只需申请快递100API免费账户,获取专属API-KEY,将代码示例中的通用参数替换成专属API-KEY即可完成对接。如需对接技术支持和需求评估支持,请点击下方官网链接联系工作人员,此服务不收取任何服务费用。
C#
56
star
4

uniapp

uniapp多端构建框架搭建
Vue
42
star