安利以前写的一款快递、物流信息查询扩展包

今天偶然发现自己的开源项目 CI 全红,经检查发现是 PHPUnit 没有锁死版本,升级到 8.0 后有不少 Breaking Changes。在整理的过程中发现一款自己去年写的快递查询扩展包,整合了几个常见的公共 API,当时封装时就是因为苦于找不到好用的查询扩展包,虽然没什么难度但是一直没人写得规范,试了下还能用,故安利至此。

代码仓库:https://github.com/wi1dcard/kuaidi

Kuaidi - 免费快递查询扩展包

? 集成「快递100」、「快递网」、「快递鸟」三家快递查询接口,并统一调用方式。

❤️ 本项目 GitHub / Gitee(码云)

Build Status
StyleCI
Packagist

小试牛刀

注意:本扩展包内所有快递公司名称,均不带结尾 物流 / 快递 / 快运 / 速递 / 速运 等字眼。

克隆本仓库,并执行 composer install 安装所需依赖。

在命令行内运行。

php examples/index.php <运单编号> [快递公司名称]

其中,快递公司名称可省略;效果如下:

使用方法

0. 安装

composer require wi1dcard/kuaidi

1. 创建运单

$waybill = new \Kuaidi\Waybill(
    '运单编号', 
    '快递公司名称'
);

「快递100」支持自动识别,可不填快递公司名称。

2. 查询

(new \Kuaidi\Trackers\Kuaidi100)->track($waybill);
(new \Kuaidi\Trackers\Kuaidiwang)->track($waybill);
(new \Kuaidi\Trackers\Kuaidiniao('Business ID', 'APP Key'))->track($waybill);

通常三选一即可,推荐使用「快递100」。

若查询过程出错,或接口返回失败将会抛出 Kuaidi\TrackingException

3. 获得数据

// 获取状态,所有状态列表见 `Waybill::STATUS_*` 常量。
$waybill->getStatus();
// 获取详情,支持直接 foreach / while / 数组下标 形式访问。
$waybill->getTraces(); 

实际项目中,可自行封装辅助函数以便于使用。

结语

这个扩展包的初衷,是因为各家快递查询接口支持的快递公司不同,有部分接口不稳定 / 缺失小众快递公司的支持;公司产品需要稳定且支持率高,所以封装出来一套比较统一的快递查询接口,包装各家的 API,也方便以后进行扩展。

目前已经在生产环境稳定使用三个月左右,解除无关依赖后修改放出,供大家参考使用。

如果你有新的公共接口 / 原有接口出现问题,欢迎 Issue 和 PR,不胜感激。

关于命名,考虑到国内外环境差距大,此扩展包多数只在国内使用;所以干脆用本地化的词语,简单好记:Kuaidi

声明

接口来源于网络,本扩展包仅为包装和收集,仅供学习参考;对于数据准确性、接口可用性不作保证;一切法律问题自行承担。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.
讨论数量: 4

@Wi1dcard 刚才是我的问题。 不过同一个单号(单号804455212048575988,圆通)。在快递100可以查询到轨迹,Kuaidiwang却提示‘快递公司参数异常:单号不存在或者已经过期’

5年前 评论

@xiaoguo0426 这个的确是快递网那边返回的数据,可能是那边的接口有问题。建议三个数据来源都查一下,这样尽可能避免不靠谱。

5年前 评论

刚才适了一下,是有这个单号了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
67
粉丝
590
喜欢
1236
收藏
1133
排名:13
访问:32.4 万
私信
所有博文
社区赞助商