对接快递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 调用过程步骤亦是如此:

      入我相思门

知我相思苦

对接快递100&聚水潭API的更多相关文章

  1. 快速上手微信小程序-快递100

    2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...

  2. 在Asp.Net MVC中利用快递100接口实现订阅物流轨迹功能

    前言 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递100做为数据来源接口,这个接口是收费的,不过提供的功能还是非常强大的,有专门的售后维护团队.也有免费的方案,类似于快递 ...

  3. PHP最近做了物流快递查询的接口用得是快递100

    最近做了物流快递查询的接口用得是快递100的,分享下心得体会 主要使用了2种接口,一个是api的 返回json xml 各种数据的 一个是返回的URL的  就是一个带结果的网址  . 1  申请 找一 ...

  4. Java对接拼多多开放平台API(加密上云等全流程)

    前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...

  5. java抓取快递100信息接口

    package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...

  6. C#快递跟踪(基于快递100深度定制)

    本文主要介绍快递跟踪的相关信息.如根据快递单号预测所属快递公司,判断快递是否已被签收,以及改良官方model后可在不用申请授权的情况下实现json,html,xml及text等多种格式以及单行多行,降 ...

  7. 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单

    https://www.1024cc.cn/index.php/2019/04/29/%E6%89%93%E5%8D%B0%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95/ 打 ...

  8. php利用快递100接口获取物流信息

    PHP使用CURL调用快递100接口查询运单信息 类代码如下: <?php/** * 快递100接口调用类 * @author 齐云海 * date: 2019/05/29 */ class E ...

  9. .netcore 写快递100的快递物流信息查询接口

    快递100的物流信息查询接口,官方提供了一些demo;还好官方提供的代码是.netcore版本写的,不过写的有点low;根据官方提供的代码,我按照.netcore 的风格重构了代码:核心代码如下: / ...

随机推荐

  1. CSS Grid Layout In Action

    CSS Grid Layout In Action CSS 异形网格布局实战 refs https://static-nginx-online.fbcontent.cn/tutor/tutor-ybc ...

  2. Koa 洋葱模型

    Koa 洋葱模型 let context = { data: [] }; async function middleware1(ctx, next) { console.log('action 001 ...

  3. how to recursively all files in a folder with sudo permissions in macOS

    how to recursively all files in a folder with sudo permissions in macOS write bug OK sudo chmod 777 ...

  4. asm FPU 寄存器

    TOP-- TOP++ 顶部 ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) 底部 指令后的注释通常是执行后的结果 push section .data ...

  5. fetch & form-data & upload & image file

    fetch & form-data & upload & image file no need multipart/form-data https://blog.xinshan ...

  6. c++ 使用PID获取顶级窗口句柄和标题

    #include <iostream> #include <Windows.h> using namespace std; BOOL CALLBACK EnumWindowsP ...

  7. Mac mini M1使用简单体验(编程、游戏、深度学习)

    好久不见了各位! 前一阵子忍不住剁手买了M1芯片的mac mini,为了弥补自己的内疚感就卖了自己的旧的mbp2017款.数据也完全迁移到了新机器上,之前的工作也就由mbp2017彻底换成mac mi ...

  8. JAVA 8 新特性实用总JAVA 8 新特性实用总结结

    JAVA 8 新特性实用总结 作为一个工作两年多的 老 程序猿,虽然一开始就使用 jdk1.8 作为学习和使用的版本,随着技术的迭代,现有的 JDK 版本从两年前到现在,已经飞速发展到了 JDK 15 ...

  9. 还原Oracle数据库dmp文件(Win系统)

    准备工作: 1.核对数据字符集:   一般Oracle在安装的时候默认是选择ZHS16GBK,如有改动,使用 select userenv('language') from dual;语句查看使用的字 ...

  10. Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...