文章目录
跳转方式
没有任何开发成本,直接一键接入
可以直接看官方文档
微信小程序(我以uniapp为例)
https://fuwu.weixin.qq.com/service/detail/00008caeab84c07c17dcdabf55b815
- 小程序管理后台添加插件(【设置】-【第三方设置】-【插件管理】-【搜索 wx6885acbedba59c14】)
manifest.json
增加配置(这里直接copy不用改动)"mp-weixin":{"plugins":{"kdPlugin":{"version":"1.1.2","provider":"wx6885acbedba59c14"}}}
- 调用插件
// num是快递单号 appName是小程序的名称 还有其他参数参见官网uni.navigateTo({url:"plugin://kdPlugin/index?num=xxx&appName=xxx",})<navigator url="plugin://kdPlugin/index?num=xxx&appName=xxx"></navigator>
缺点:
- 默认页面只有最新的一条数据,如果要查看更多需要跳转到他们的小程序
- 跳转到他们的小程序默认有几秒钟的广告(虽然可以跳过)
pc
window.open('https://www.kuaidi100.com/chaxun?com=[]&nu=[]');
缺点:经我测试查询有问题
- 有时候能出结果,但有时候查不出结果
- 查询很慢,需要
3-7
秒左右
我猜测这个应该是官方做了限制,避免被白嫖
api接入
说明
这种方式需要服务端接入,而不是前端直接接入(
postman可以调通,但是浏览器会有跨域问题
)
关于签名计算
官方写的很简单:
签名, 用于验证身份, 按param + key + customer 的顺序进行MD5加密(注意加密后字符串一定要转32位大写), 不需要加上“+”号
我最后是通过
管理后台
的签名和我自己写的签名算法对比才得出最终的计算方式
有几点需要注意的
- 请求头的
content-type
为application/x-www-form-urlencoded
- 虽然请求方式是post,但是参数写到
body
和url
中都是可以的 !!!
尤其需要注意param
参数的写法,是一个对象,开始的时候我一直在考虑这个怎么传递,因为不是json
写法,所以纠结了好久
这里直接给出demo(
注意:这里需要安装一个md5加密库
)
import axios from'axios';import CryptoJS from'crypto-js';functiongenerateSignature(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',
}
*/exportfunctionquery(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',},});}
成功示例
版权归原作者 蓝枫秋千 所有, 如有侵权,请联系我们删除。