阅读量:0
文章目录
跳转方式
没有任何开发成本,直接一键接入
可以直接看官方文档
https://www.kuaidi100.com/openapi/api_wxmp.shtml
微信小程序(我以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
https://www.kuaidi100.com/openapi/api_jump.shtml
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'; 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', }, } ); }