顺丰API的调用demo


之前做有一个快递查询的功能,现在顺便贴个demo出来,是查询顺丰的。

首先,要去丰桥里面申请一个顾客编码,和一个校验码,不过顺丰做的不错,嫌麻烦的,这里直接贴一个沙箱的顾客编码和校验码(吐槽一下,微信支付开发真的蛋疼,对开发真的很不友好)

丰桥新沙箱测试顾客编码 Yg4Zf06w_sxZs3A5D
校验码 3Xdk1jqeG1Xod9nUXus8Op7DNOkchTnw


然后下载一个顺丰的jar包,顺丰官网有,文档也有。

 

然后就简单了,这里有个点要注意,把需要查询的参数写进msgData,在msgDigest里面也要拿msgData进去一起做签名

 

 

代码如下:

    String CLIENT_CODE = "Yg4Zf06w_sxZs3A5D";  //此处替换为您在丰桥平台获取的顾客编码
        String CHECK_WORD = "3Xdk1jqeG1Xod9nUXus8Op7DNOkchTnw";//此处替换为您在丰桥平台获取的校验码


        //沙箱环境的地址 -PRO
        String CALL_URL_BOX = "https://sfapi-sbox.sf-express.com/std/service";
        //生产环境的地址 -PRO
       String CALL_URL_PROD = "https://sfapi.sf-express.com/std/service";
       ExpressServiceCodeEnum testService= ExpressServiceCodeEnum.EXP_RECE_SEARCH_ROUTES;
       // ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_SEARCH_ROUTES;//查路由
      // IServiceCodeStandard testService = ExpressServiceCodeEnum.EXP_RECE_CREATE_ORDER; //下订单
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_SEARCH_ORDER_RESP; //查订单
        //  ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_UPDATE_ORDER;//订单取消
        //     ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_FILTER_ORDER_BSP;//订单筛选
      // ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_SEARCH_ROUTES;//查路由
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_GET_SUB_MAILNO;//子单号
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_QUERY_SFWAYBILL;//查运费
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_REGISTER_ROUTE;//注册路由
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_CREATE_REVERSE_ORDER;//退货下单
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_CANCEL_REVERSE_ORDER;//退货消单
        //    ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_WANTED_INTERCEPT;//截单转寄
        //     ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_QUERY_DELIVERTM;//时效标准及价格查询
        //  ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.COM_RECE_CLOUD_PRINT_WAYBILLS;//面单打印
        //  ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_UPLOAD_ROUTE;//路由上传
        //   ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_SEARCH_PROMITM;//预计派送时间查询
        //  ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_EXCE_CHECK_PICKUP_TIME;//揽件服务时间查询
        //  ExpressServiceCodeCodeEnum testService = ExpressServiceCodeCodeEnum.EXP_RECE_VALIDATE_WAYBILLNO;//运单号合法性校验


        CallExpressServiceTools client=CallExpressServiceTools.getInstance();

        // set common header
        Map<String, String> params = new HashMap<String, String>();

        String timeStamp = String.valueOf(System.currentTimeMillis());
        String msgData =client.packageMsgData(testService);

        String data="{\n\"language\": \"0\", \"trackingType\": \"1\", \"trackingNumber\": [\"444003077898\", \"441003077850\"], \"methodType\": \"1\" }";

        params.put("language","0");
        params.put("trackingType","1");
        params.put("trackingNumber","[\"444003077898\"]");
        params.put("methodType","1");

        params.put("partnerID", CLIENT_CODE);  // 顾客编码 ,对应丰桥上获取的clientCode
        params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
        params.put("serviceCode",testService.getCode());// 接口服务码
        params.put("timestamp", timeStamp);
        params.put("msgData", data);
        params.put("msgDigest", client.getMsgDigest(data,timeStamp,CHECK_WORD));



        // System.out.println(params.get("requestID"));
        long startTime = System.currentTimeMillis();

          System.out.println("====调用请求:" + params.get("msgData"));
        System.out.println("====调用实际请求:" + params);
        String result = HttpClientUtil.post(CALL_URL_BOX, params);



        System.out.println("====调用丰桥的接口服务代码:" + String.valueOf(testService.getCode()) + " 接口耗时:"+ String.valueOf(System.currentTimeMillis()-startTime)+"====");
        System.out.println("===调用地址 ==="+CALL_URL_BOX);
        System.out.println("===顾客编码 ==="+CLIENT_CODE);
        System.out.println("===返回结果:" +result);

        return result;

 

这个是返回的json字符串,后续想怎么操作都可以
{
    "apiErrorMsg": "",
    "apiResponseID": "00017D3B9EC8173FC94113B467CF503F",
    "apiResultCode": "A1000",
    "apiResultData": "{\"success\":true,\"errorCode\":\"S0000\",\"errorMsg\":null,\"msgData\":{\"routeResps\":[{\"mailNo\":\"444003077898\",\"routes\":[{\"acceptAddress\":\"深圳市\",\"acceptTime\":\"2021-11-20 12:33:21\",\"remark\":\"顺丰速运 已收取快件\",\"opCode\":\"50\"}]},{\"mailNo\":\"441003077850\",\"routes\":[{\"acceptAddress\":\"深圳市\",\"acceptTime\":\"2021-11-20 12:33:21\",\"remark\":\"顺丰速运 已收取快件\",\"opCode\":\"50\"}]}]}}"
}
 

 






免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM