順豐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