跳转方式

没有任何开发成本,直接一键接入

可以直接看官方文档

https://www.kuaidi100.com/openapi/api_wxmp.shtml

微信小程序(我以uniapp为例)

https://fuwu.weixin.qq.com/service/detail/00008caeab84c07c17dcdabf55b815

  1. 小程序管理后台添加插件(【设置】-【第三方设置】-【插件管理】-【搜索 wx6885acbedba59c14】)
    在这里插入图片描述

  2. manifest.json增加配置(这里直接copy不用改动)

    "mp-weixin": {
      "plugins": {
        "kdPlugin": {
          "version": "1.1.2",
          "provider": "wx6885acbedba59c14"
        }
      }
    }
    
  3. 调用插件

    // num是快递单号 appName是小程序的名称 还有其他参数参见官网
    
    uni.navigateTo({
      url: "plugin://kdPlugin/index?num=xxx&appName=xxx",
    })
    
    <navigator url="plugin://kdPlugin/index?num=xxx&appName=xxx"></navigator>
    

缺点:

  1. 默认页面只有最新的一条数据,如果要查看更多需要跳转到他们的小程序
  2. 跳转到他们的小程序默认有几秒钟的广告(虽然可以跳过)

pc

https://www.kuaidi100.com/openapi/api_jump.shtml

window.open('https://www.kuaidi100.com/chaxun?com=[]&nu=[]');

缺点:经我测试查询有问题

  1. 有时候能出结果,但有时候查不出结果
  2. 查询很慢,需要3-7秒左右

我猜测这个应该是官方做了限制,避免被白嫖

api接入

说明

这种方式需要服务端接入,而不是前端直接接入(postman可以调通,但是浏览器会有跨域问题

关于签名计算

官方写的很简单:签名, 用于验证身份, 按param + key + customer 的顺序进行MD5加密(注意加密后字符串一定要转32位大写), 不需要加上“+”号

我最后是通过管理后台的签名和我自己写的签名算法对比才得出最终的计算方式

有几点需要注意的

  1. 请求头的content-typeapplication/x-www-form-urlencoded
  2. 虽然请求方式是post,但是参数写到bodyurl中都是可以的
  3. !!!尤其需要注意param参数的写法,是一个对象,开始的时候我一直在考虑这个怎么传递,因为不是json写法,所以纠结了好久

这里直接给出demo(注意:这里需要安装一个md5加密库

import axios from 'axios';
import CryptoJS from 'crypto-js';

function generateSignature(param, key, customer) {
  // 如果param是对象,则将其转换为字符串
  let paramStr = '';
  if (typeof param === 'object') {
    paramStr = JSON.stringify(param);
  } else {
    paramStr = param;
  }
  // 拼接字符串
  const data = paramStr + key + customer;

  // 进行MD5加密
  const hash = CryptoJS.MD5(data);

  // 将加密后的字符串转为32位大写
  const signature = hash.toString(CryptoJS.enc.Hex).toUpperCase();

  return signature;
}

const key = 'xxx';
const customer = 'xxx';

/* data示例:
{
  com:'yuantong',
  num: 'YT8979806571449',
}
*/
export function query(data) {
  return axios.post(
    'https://poll.kuaidi100.com/poll/query.do',
    {
      param: data,
      sign: generateSignature(data, key, customer),
      customer,
    },
    {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
    }
  );
}

成功示例

在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部