快递查询源码
☞ 背景
- 最近进行网站后台开发,需要实现物流的即时查询,发现之前集成的
快递100物流查询 API
——【PHP 快递查询源码资源】 已经不能正常使用了; 为了方便以后的业务需求,经过比较,最后选择使用 第三方物流 ——【快递鸟】 - 同时,在此进行整理,希望能帮到有需求的道友们,谢谢 …
官方文档: 快递鸟 —— 即时查询API
开发框架:
ThinkPHP5.1.2
☞ 开发步骤
①. 前期准备
②. 集成类的使用
- 首先需要登录 快递鸟
获取账号的
用户ID
和API key
对所提供源码中的 集成类
BirdExpress.php
,进行配置项的替换操作 - 然后
将集成类整合到你的项目框架,根据框架规则进行必要修改(框架不同规则自然多数不同,本人为
ThinkPHP5.1.2
)下图为简单的调用测试:
- 注意【2019.06.10 补充】:
测试发现,线上的
linux
系统下无法识别命名空间大小写情况,在此建议namespace APP\api\controller
,都改成小写字母
③. 核心处理方法源码
/**
* 核心方法
* Json方式 查询订单物流轨迹
* @param string $ShipperCode 快递公司编码
* @param string $logisticCode 物流单号
* @param int $arrayFlag 是否进行数组转化标志 默认0:否 1:转化
* 参考规则举例:
* $requestData = "{'orderCode':'','ShipperCode':'ZTO','LogisticCode':'640041334612'}";
* @return result 包含即时物流信息的 Json数据
*/
public function getOrderTracesByJson($ShipperCode = "",$LogisticCode = "",$arrayFlag = 0)
{
$requestData = "{
'OrderCode':'',
'ShipperCode':'$ShipperCode',
'LogisticCode':'$LogisticCode'
}";
$postData = array(
'EBusinessID' => $this->EBusinessID,
'RequestType' => '1002',//接口指令1002
'RequestData' => urlencode($requestData),
'DataType' => '2',
);
$postData['DataSign'] = $this->encrypt($requestData, $this->AppKey);
$result = $this->sendPost($this->ReqURL, $postData);
//根据公司业务处理返回的信息......
if ($arrayFlag){
$result = json_decode($result,true);
//TODO 方便物流信息的倒序展示,进行数组反转
$result['Traces'] = array_reverse($result['Traces']);
}
return $result;
}
④. 效果展示截图
☞ [重要提示]:
代码逻辑梳理,以及整体业务设计构化
- 通过上面核心源码的展示,你应该会注意到
调用其方法,必须要传入 快递公司编码 和 物流单号 这两个参数
- 好在,官方提供了 快递公司编码, 所以,鄙人的设计思路如下:
1. 根据官方提供的快递公司编码excel表
取出其中的 "快递公司"和"编码"两列数据存储到本地数据表
如果使用的快递数量较集中,可以自己建表输入
如果是通用性的快递使用,建议直接对excel表转化为mysql(或其他数据表)存储
如果需要进行
excel
表的导入操作,可直接参考对应文章: ThinkPHP5.1 excel表的导入导出操作 (PHPExcel)
2. 在后台操作人员输入快递单号时
同时要求选择快递公司,获得 "编码"
从而保证,在数据表中,存储的快递单号唯一匹配到一个编码,继而方便后面进行快递信息查询时,可同时获得所需的两个参数.
☞ >>> 源码上传 >>>
☞ 附录
①. 个人请求
-
希望道友们能在这个【PHP 快递查询 - 源码资源】下,给个评论,就说 :
"楼主表示:代码已过期,不能正常使用了,请不要再下载了!"
—— 即便我删掉了原先的博客,依然有人能通过其他路径找到 !? 我也奇怪,为什么自己上传的资源,CSDN 不允许删除呢?
②. 为什么我选择使用 快递鸟API
首先,我拥有一个,测试物流单号:
640041334612 (中通快递)
,然后使用多个快递查询服务,效果如下:
通過比較发现:
1. "快递100" 没有查到结果;
"爱查快递" 得出的结果并不是真实的物流信息
2. "快递网" 能查到快递信息,但是询问服务人员时知晓:
要么网站上添加对方链接(我的管理后台以及小程序、app是不能这样玩的);
要么需要进行套餐定制,最低的大概一年1000
—— (前期网站是不需要那么大的 查询业务的,感觉浪费),而且,我不喜欢官网的设计风格(任性了)
3. "快递鸟",最让我动心的是那个 "限3000次/天(即时查询)" 是免费的
对于业务量前期不大的网站足够使用,即便后期有需要,也可以直接进行套餐升级
③. 参考文章
- PHP实现物流查询(通过快递网API实现)
相关阅读
厦门金砖快递停运通知。近日,相信不少位于厦门地区的淘宝卖家,都在朋友圈或者是微信好友群里,看到过这样一条消息:因2017金砖会议将在
cmdwmic diskdrive get serialnumber
一、使用SQL操作表 1、SQL语言简介 2、数据库操纵语言 (1)INSERT命令 INSERT INTO grade VALUES (5,'五年级');--插入每一列 I
SQL Server分页查询 查询第n到第m条记录 方法一(简洁): -- 从表[demo].[dbo].[demo]中取出第n到第m条记录 SELECT TOP m-n+1 *
减少运动媒体查询prefers-reduced-motion
简化运动的简史 在2013年iOS 7对操作系统的视觉效果进行了重新设计,更改包括半透明和模糊,更简化的“平面”用户界面,以及诸如全屏缩