欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

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

2024/10/24 10:23:48 来源:https://blog.csdn.net/qq_43382853/article/details/140470767  浏览:    关键词:前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录

    • 跳转方式
      • 微信小程序(我以uniapp为例)
      • pc
    • api接入
      • 说明
      • 关于签名计算
      • 成功示例

跳转方式

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

可以直接看官方文档

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',},});
}

成功示例

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com