前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录

跳转方式

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

可以直接看官方文档

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

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

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

  1. 小程序管理后台添加插件(【设置】-【第三方设置】-【插件管理】-【搜索 wx6885acbedba59c14】)

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

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

    js 复制代码
    // 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

js 复制代码
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加密库

js 复制代码
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',
      },
    }
  );
}

成功示例

相关推荐
掘金安东尼13 分钟前
前端周刊第421期(2025年7月1日–7月6日)
前端·面试·github
摸鱼仙人~15 分钟前
深入理解 classnames:React 动态类名管理的最佳实践
前端·react.js·前端框架
未来之窗软件服务18 分钟前
chrome webdrive异常处理-session not created falled opening key——仙盟创梦IDE
前端·人工智能·chrome·仙盟创梦ide·东方仙盟·数据调式
kymjs张涛18 分钟前
零一开源|前沿技术周报 #6
前端·ios·harmonyos
玲小珑21 分钟前
Next.js 教程系列(十)getStaticPaths 与动态路由的静态生成
前端·next.js
天天鸭27 分钟前
写个vite插件自动处理系统权限,降低99%重复工作
前端·javascript·vite
蓝婷儿32 分钟前
每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发
前端
无奈何杨41 分钟前
CoolGuard风控中新增移动距离和移动速度指标
前端·后端
racerun1 小时前
微信小程序如何实现再多个页面共享数据
微信小程序·小程序
恋猫de小郭1 小时前
Google I/O Extended :2025 Flutter 的现状与未来
android·前端·flutter