对接快递100&聚水潭API

对接快递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);

View Code

4、聚水潭

聚水潭API 调用过程步骤亦是如此:

 

 

 

       入我相思门

知我相思苦

 

 

Tags: