之前做有一個快遞查詢的功能,現在順便貼個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\"}]}]}}" }

