天天看點

對接快遞100&聚水潭API

對接快遞100&聚水潭API

       入我相思門,知我相思苦。

簡介:對接第三方平台快遞100&聚水潭API的簡要總結。

1、感悟

個人感覺快遞100的API更友好一些,比如有SDK可以調用;遇到阻塞要及時聯系第三方相關責任人。

首先要對接一個第三方平台,當然絕大多數情況下隻是對接其中的某些接口,接口開得多收費也就多。

第一步要到平台上的測試工具看,花錢買的一些協定參數是否能正常使用,簡而言之就是到平台上去測試要調用的API是否可以通路,這一步可以了再到代碼中去調用API。

2、快遞100平台調試工具

對接快遞100&聚水潭API

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并接收傳回:

對接快遞100&amp;聚水潭API
對接快遞100&amp;聚水潭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);      

View Code

4、聚水潭

聚水潭API 調用過程步驟亦是如此:

對接快遞100&amp;聚水潭API

       入我相思門

知我相思苦