對接快遞100&聚水潭API
入我相思門,知我相思苦。
簡介:對接第三方平臺快遞100&聚水潭API的簡要總結。
1、感悟
個人感覺快遞100的API更友好一些,比如有SDK可以呼叫;遇到阻塞要及時聯絡第三方相關責任人。
首先要對接一個第三方平臺,當然絕大多數情況下只是對接其中的某些介面,介面開得多收費也就多。
第一步要到平臺上的測試工具看,花錢買的一些協議引數是否能正常使用,簡而言之就是到平臺上去測試要呼叫的API是否可以訪問,這一步可以了再到程式碼中去呼叫API。
2、快遞100平臺除錯工具
3、程式碼調API
平臺上的測試工具可以正常呼叫API後,到程式碼中調API。
首先要看平臺上是否有呼叫API的demo;在程式碼中引數傳遞的時候要注意參考測試工具呼叫示例,引數一定要傳遞夠,按照文件要求拼接請求地址URL,可以藉助Hutool工具直接呼叫URL得到返回。
整個業務主要包括三個環節:生產訊息,消費訊息,儲存訊息。
生產訊息:elactisearch上獲取資料,處理資料得到呼叫API需要的引數及格式;
消費訊息:消費訊息就是呼叫平臺API;
儲存訊息:呼叫平臺API後返回資訊,本地處理返回的資訊。
1 import lombok.AllArgsConstructor;
2 import lombok.extern.slf4j.Slf4j;
3 import org.springframework.scheduling.annotation.Scheduled;
4 import org.springframework.stereotype.Component;
5
6 import java.util.List;
7
8 /**
9 * 定時任務
10 */
11 @Component
12 @AllArgsConstructor
13 @Slf4j
14 public class OrderScheduledTask {
15
16 private OmsOrderService omsOrderService;
17 private OmsOrderRepository omsOrderRepository;
18
19
20 /**
21 * 平臺同步到本地定時任務
22 * 需要在啟動類中加入: @EnableScheduling 啟動定時任務
23 */
24 @Scheduled(fixedDelay = 10*60*1000) // 距離上次執行完10分鐘後執行
25 public void omsOrderUploadScheduledTask() {
26 try {
27 log.info("平臺同步到本地定時任務開始:{}", DateUtil.getCurDateTime());
28 //生產訊息: 取資料:已同步
29 List<OmsOrder> orderList = omsOrderRepository.findBySynStatusAndPayStatus("1", "1");
30 // 處理資料:每次同步20 條資料
31 if (!orderList.isEmpty() && orderList.size() > 0) {
32 if (orderList.size() >= 20) {
33 // 消費訊息 + 儲存訊息:
34 omsOrderService.updateDataToPool(orderList.subList(0, 20));
35 // 遞迴呼叫 omsOrderSearchScheduledTask
36 omsOrderSearchScheduledTask();
37 } else {
38 omsOrderService.updateDataToPool(orderList);
39 }
40 }else {
41 log.info("沒有符合條件的訂單,無需從平臺同步資料");
42 }
43 } catch (Exception e) {
44 log.info("平臺同步到本地定時任務exception: {}", e.getMessage());
45 }
46 log.info("平臺同步到本地定時任務結束:{}", DateUtil.getCurDateTime());
47 }
48
49 }
呼叫API並接收返回:
1 // 傳遞協商定義好的url、header、body
2 String response = HttpRequest.post(concatUrl)
3 .header(“Content-Type”, “application/x-www-form-urlencoded ”).body(String.valueOf(jsonObject)).execute().body();
4
5 JSONArray orders = (JSONArray) com.alibaba.fastjson.JSONObject.parseObject(response).get("data");
6 OrdersEntity entity = com.alibaba.fastjson.JSONObject.parseObject(String.valueOf(tempJson), OrdersEntity.class);
4、聚水潭
聚水潭API 呼叫過程步驟亦是如此:
入我相思門
知我相思苦