对接快递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 调用过程步骤亦是如此:
入我相思门
知我相思苦