之前做有一个快递查询的功能,现在顺便贴个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\"}]}]}}" }