物流查询实现
引言:目前快递公司太多了,不可能一个一个去申请api查询。这个时候,就可以通过合作,找一些中间商合作。我试了两家,一家是快递100,一家是快递网。他们都需要申请key。但是快递100有点变态,不允许查询热门物流,什么三通一达,顺丰等等都查询不了。快递网就很好了。至少都可以查到。
1.申请key
到快递网,填写申请,一般都会通过的。
2.物流管理,建表把物流公司管理起来
3.配置参数
把一些定量,配置起来,方便统一管理
<?php
// 物流 采用快递网http://www.kuaidi.com的api数据
return array(
'kuaidi_key'=>'xxxxxxxxxxxxxx', // 这是申请的key值,支持每天2000次查询。是次,不是件。如果正式使用,可以跟快递网申请企业号。
'kuaidi_iframe'=>'http://www.kuaidi.com/cominterface1616.html',
'kuaidi_api'=>'http://api.kuaidi.com/openapi.html'
);
?>
4.编写函数
因为这是一个通用的函数,最好放到基类中,并且具有灵活性,可以传递参数,注释要清晰,方便他人使用。
/**
* 获取物流信息
* @author jim
* @param String $com 物流公司编号
* @param String $nu 物流单号,快递单号
* @param String $show 0表示返回json,1表示返回xml
* @param String $muti 0表示多行完整信息,1表示一行信息
* @param String $order desc asc 按时间降序,升序
* @return Array
* status
* 0:物流单号暂无结果;
* 3:在途,快递处于运输过程中;
* 4:揽件,快递已被快递公司揽收并产生了第一条信息;
* 5:疑难,快递邮寄过程中出现问题;
* 6:签收,收件人已签收;
* 7:退签,快递因用户拒签、超区等原因退回,而且发件人已经签收;
* 8:派件,快递员正在同城派件;
* 9:退回,货物处于退回发件人途中;
*
*/
protected function getExpress($com,$nu,$show = '0',$muti = '0',$order = 'desc') { //子类以及子类的子类可以访问
$id = trim(C('kuaidi_key'));
$kuaidi_api = trim(C('kuaidi_api'));
$url = $kuaidi_api.'?id='.$id.'&com='.$com.'&nu='.$nu.'&show='.$show.'&muti='.$muti.'&order='.$order;
$result = json_decode(file_get_contents($url),true);
return $result;
}
tips: 别的地方,想用就可以调用了。返回纯净的数组数据,自己去处理成美丽的网页吧!
附上:快递网,快递公司对应的编号
100F7T