日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对接第三方顺丰丰桥下单Api接口实战教程java

發布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对接第三方顺丰丰桥下单Api接口实战教程java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對接第三方順豐豐橋下單接口實戰

  • 前言
    • pom文件順豐依賴
    • Controller層
    • Service層
    • ServiceImpl實現類層
    • 封裝請求參數
    • 順豐豐橋下單響應參數

前言

在接入第三方順豐Api之前要先登錄LaaS開放平臺,如果您是首次與順豐合作,可通過注冊平臺賬號后登錄。
如果您已有開放平臺賬號,可直接使用賬號密碼登錄。如果您已有月結管家/速打平臺/數據燈塔賬號,可選擇對應登錄方式直接登錄。如果您是順豐內部員工,可選擇順豐工號登錄方式完成域賬號登錄。
登錄完成后需要進行個人認證或企業認證,如何進行認證小伙伴在順豐控制臺首頁認證,認證完成后,需要審核月結卡號哦,如果已經有月結卡號就自行綁定即可,把這些相關信息都完成了,就可以對接順豐接口啦,話不多說,接下來直接上代碼。如果不還有不了解的可以給博主留言哦

pom文件順豐依賴

pom文件引入順豐sdk依賴,如何引入外部依賴到內部maven倉庫之前的文件有教程,不懂如何引入外部依賴的可以去看我其他文章

Controller層

/*** 生成順豐豐橋快遞訂單* @param keys* @return*/@PostMapping("createSfOrder")public Result<FhhzdH> createSfOrder (@RequestBody List<Long> keys) throws UnsupportedEncodingException {return service.createSfOrder(keys);}

Service層

/*** 生成順豐豐橋快遞訂單* @param keys* @return* @throws UnsupportedEncodingException*/Result<FhhzdH> createSfOrder (List<Long> keys) throws UnsupportedEncodingException;

ServiceImpl實現類層

/*** 生成訂單*/@SuppressWarnings("static-access")@Override@Transactionalpublic Result<FhhzdH> createSfOrder(List<Long> keys) throws UnsupportedEncodingException {if (keys == null || keys.size() == 0) {return new Result<FhhzdH>().setCode(BussErrorCode.ARGUMENT_NOT_VALID).setReason("請求參數不能為空!");}for (int i = 0; i < keys.size(); i++) {Long key = keys.get(i);FhhzdH fhhzdH = mapper.selectByPrimaryKey(key);if (Common.isNull(fhhzdH)) {return new Result<FhhzdH>().setCode(BussErrorCode.ARGUMENT_NOT_VALID).setReason("單號為" + key + "發貨匯總單數據不存在!");}if (Common.isNotEmpty(fhhzdH.getKddh())) {throw new RuntimeException(String.format("單據號為[%s],快遞單號為[%s]已發貨", fhhzdH.getDjh(), fhhzdH.getKddh()));}//讀取順豐配置文件loadSfProperties();// 獲取發貨人信息FhrywhH fhrywhH = Common.requiredFirst(fhrywhHMapper.select(new RmFhrywhHQuery().letBm(fhhzdH.getFhr())),String.format("該%s編碼發貨人員配置不存在!", fhhzdH.getFhr())); // 封裝下單信息String msgData = orderInfo(fhhzdH, fhrywhH, SF_CARD_NO);CallExpressServiceTools tools = CallExpressServiceTools.getInstance();Map<String, String> params = new HashMap<String, String>();String timeStamp = String.valueOf(System.currentTimeMillis()); // String msgData =tools.packageMsgData(standardService);params.put("partnerID", CLIENT_CODE); // 顧客編碼 ,對應豐橋上獲取的clientCodeparams.put("requestID", UUID.randomUUID().toString().replace("-", ""));params.put("serviceCode", EXP_RECE_CREATE_ORDER);// 接口服務碼params.put("timestamp", timeStamp);params.put("msgData", msgData);params.put("msgDigest", tools.getMsgDigest(msgData, timeStamp, CHECK_WORD));String result = HttpClientUtil.post(CALL_URL_BOX, params);ShunFengResponse res = new Gson().fromJson(result, ShunFengResponse.class);String apiResultData = res.getApiResultData();ResultData data = new Gson().fromJson(apiResultData, ResultData.class);if (data.getSuccess() == true) {// 成功String sfdh = data.getMsgData().getWaybillNoInfoList().get(0).getWaybillNo();// 順豐單號FhhzdH temp = new FhhzdH();temp.setDjlsh(key);temp.setKddh(sfdh);//順豐下單返回的順豐單號更新到自己的數據庫,方便后續查詢訂單mapper.updateByPrimaryKeySelective(temp);} else {throw new RuntimeException(String.format("單據號為[%s],[%s]", fhhzdH.getDjh(), data.getErrorMsg()));}}return new Result<FhhzdH>().setCode(BussErrorCode.SUCCESS).setReason("順豐下單成功!");}

封裝請求參數

我自己是使用json格式,也可以使用xml格式,這個可以根據實際情況使用即可,請求參數不需要都要和我的一樣,可根據實際開發需要去定義,這只是一個范例,有不了解的小伙伴可留言

*** 順豐豐橋下單請求參數* @param fhhzdH* @param fhrywhH* @param sfCardNo* @return*/private String orderInfo(FhhzdH fhhzdH, FhrywhH fhrywhH,String sfCardNo) {SfOrderParam param = new SfOrderParam();List<CargoDetail> cargoList = new ArrayList<CargoDetail>();CargoDetail cargo = new CargoDetail();//拖寄物信息cargo.setName("工藝品");//貨物名稱,如果需要生成電子運 單,則為必填。cargo.setCount(1L);//貨物數量 跨境件報關需要填寫cargo.setUnit("件");//貨物單位,如:個、臺、本,跨境 件報關需要填寫。cargoList.add(cargo); param.setCargoDetails(cargoList);//拖寄物信息 List<ContactInfo> contactInfoList = new ArrayList<ContactInfo>();ContactInfo info = new ContactInfo();// 獲取發貨方 省份,城市,縣Map<String, String> map = addressResolution(fhrywhH.getJfdz());info.setContactType(1L);//地址類型: 1,寄件方信息 2,到件方信息info.setAddress(fhrywhH.getJfdz());//詳細地址info.setCity(map.get("city"));info.setCompany(fhrywhH.getGsmc());info.setContact(fhrywhH.getJjr());// 聯系人info.setCounty(map.get("county"));//所在縣/區級行政區名稱info.setMobile(fhrywhH.getJfdh());//寄方電話info.setProvince(map.get("province"));//所在省級行政區名稱 contactInfoList.add(info);map.clear();// 獲取收貨方 省份,城市,縣map = addressResolution(fhhzdH.getShdz());ContactInfo contactInfo = new ContactInfo();contactInfo.setContactType(2L);//地址類型: 1,寄件方信息 2,到件方信息contactInfo.setAddress(fhhzdH.getShdz());//詳細地址收貨地址contactInfo.setCity(map.get("city"));contactInfo.setCompany(fhhzdH.getMdmc());contactInfo.setContact(fhhzdH.getShouhr());// 收貨人contactInfo.setCounty(map.get("county"));//所在縣/區級行政區名稱contactInfo.setMobile(fhhzdH.getLxdh());//收 聯系電話contactInfo.setProvince(map.get("province"));//所在省級行政區名稱contactInfoList.add(contactInfo); param.setContactInfoList(contactInfoList);//收寄雙方信息 param.setExpressTypeId(2L);param.setIsOneselfPickup(0L);//快件自取,支持以下值: 1:客戶同意快件自取 0:客戶不同意快件自取param.setLanguage("zh-CN");//語言param.setOrderId(fhhzdH.getDjh());//客戶訂單號param.setParcelQty(1L);//包裹數if ("1".equals(fhhzdH.getSfby())) {//付款方式,支持以下值: 1:寄方付 2:收方付 3:第三方付param.setPayMethod(1L); //包郵寄方付}else {param.setPayMethod(2L); //不包郵收方付} param.setMonthlyCard(sfCardNo);//月結卡號param.setRemark(fhhzdH.getBz()); String msgData = new Gson().toJson(param).toString(); //把請求參數轉成json格式log.info("順豐豐橋下單請求參數:{}", msgData);return msgData;}

下單請求參數json參數示例

順豐豐橋下單響應參數

拿到響應參數需要自己處理,因為順豐返回的是json對象需要自己處理成自己需要的數據,就不一一演示了

以上代碼看起來很多很復雜,其實是很簡單的,實際還可以優化,如果對您有幫助勞煩幫忙點個贊,收藏關注一下,可以相互學習共同進步。

總結

以上是生活随笔為你收集整理的对接第三方顺丰丰桥下单Api接口实战教程java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。