<?php
/**
* Created by PhpStorm.
* User: Yang
* Date: 2019/8/23
* Time: 10:38
*/ class Kuaidi_Query
{
private $_query_url = 'http://poll.kuaidi100.com/poll/query.do'; //实时查询请求地址
// private $_url = 'http://www.kuaidi100.com/autonumber/auto?num=906919164534&key=IobfFnLz2751'; //实时查询请求地址
private $_auto_url = 'http://www.kuaidi100.com/autonumber/auto'; //实时查询请求地址
private $_key = "";
private $_customer = "";
private $_params = array(); public function __construct($num, $com = '', $phone = '', $from = '', $to = '', $resultv2 = 1)
{
if (empty($com)) {
//归属公司智能判断
$com = $this->check($num);
}
$params = array(
'com' => $com, //快递公司编码
'num' => $num, //快递单号
'phone' => $phone, //手机号
'from' => $from, //出发地城市
'to' => $to, //目的地城市
'resultv2' => $resultv2 //开启行政区域解析
);
$this->_params = $params;
} /**
* 单号归属公司智能判断接口
* @param $num
* @return mixed
*/
public function check($num)
{
$url = $this->_auto_url."?num=".$num."&key=".$this->_key;
$data = $this->get_curl($url);
$data_array = json_decode($data, true);
return $data_array[0]['comCode'];
} /**
* 执行快递查询接口
* @return mixed
*/
public function Query()
{
$post_data = array();
$post_data["customer"] = $this->_customer;
$post_data["param"] = json_encode($this->_params);
$sign = md5($post_data["param"] . $this->_key . $post_data["customer"]);
$post_data["sign"] = strtoupper($sign);
$params = "";
foreach ($post_data as $k => $v) {
$params .= "$k=" . urlencode($v) . "&"; //默认UTF-8编码格式
}
$post_data = substr($params, 0, -1);
$query_data = $this->post_curl($this->_query_url, $post_data);
return $query_data;
} /**
* get 请求
* @param $url
* @return mixed
*/
public function get_curl($url) {
$ch = curl_init();//初始化
curl_setopt($ch, CURLOPT_URL, $url);//访问的URL
curl_setopt($ch, CURLOPT_HEADER, false);//设置不需要头信息
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
$result = curl_exec($ch);//执行请求
curl_close($ch);//关闭curl,释放资源
$data = str_replace("\"", '"', $result);
return $result;
} /**
* post 请求
* @param $post_data
* @return mixed
*/
public function post_curl($url, $post_data)
{
//发送post请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$data = str_replace("\"", '"', $result);
$data = json_decode($data, true);
return $data;
}
}

使用方式:

<?php
/**
* Created by PhpStorm.
* User: Yang
* Date: 2019/8/23
* Time: 11:03
*/ include "../../Kuaidi_Query.php"; $k = new Kuaidi_Query(3950055201640);
$data = $k->Query();
if ($data['message'] == "ok") {
$list = $data['data'];
var_dump($list);
}else{
var_dump($data['message']);
}

结果展示:

array(11) {
[0]=>
array(6) {
["time"]=>
string(19) "2019-03-23 13:21:54"
["context"]=>
string(115) "【武汉市】 已签收 : 由董雨昂(金龙·四季阳光 )代签收,如有问题联系董雨昂(13147108459)"
["ftime"]=>
string(19) "2019-03-23 13:21:54"
["areaCode"]=>
NULL
["areaName"]=>
NULL
["status"]=>
string(6) "签收"
}
[1]=>
array(6) {
["time"]=>
string(19) "2019-03-23 09:13:51"
["context"]=>
string(106) "【武汉市】 湖北武汉黄陂区公司杨园分部 派件员 董雨昂(13147108459)正在为您派送"
["ftime"]=>
string(19) "2019-03-23 09:13:51"
["areaCode"]=>
string(14) "CN420116000000"
["areaName"]=>
string(26) "湖北,武汉市,黄陂区"
["status"]=>
string(6) "派件"
}
[2]=>
array(6) {
["time"]=>
string(19) "2019-03-23 06:55:27"
["context"]=>
string(113) "【武汉市】 已离开 湖北武汉黄陂区公司 发往 湖北武汉黄陂区公司杨园分部(15391528386)"
["ftime"]=>
string(19) "2019-03-23 06:55:27"
["areaCode"]=>
NULL
["areaName"]=>
NULL
["status"]=>
string(6) "在途"
}
[3]=>
array(6) {
["time"]=>
string(19) "2019-03-23 06:52:47"
["context"]=>
string(72) "【武汉市】 已到达 湖北武汉黄陂区公司 马上为您派送"
["ftime"]=>
string(19) "2019-03-23 06:52:47"
["areaCode"]=>
string(14) "CN420116000000"
["areaName"]=>
string(26) "湖北,武汉市,黄陂区"
["status"]=>
string(6) "派件"
}
[4]=>
array(6) {
["time"]=>
string(19) "2019-03-22 20:30:30"
["context"]=>
string(50) "【武汉市】 已到达 湖北武汉分拨中心"
["ftime"]=>
string(19) "2019-03-22 20:30:30"
["areaCode"]=>
string(14) "CN420100000000"
["areaName"]=>
string(16) "湖北,武汉市"
["status"]=>
string(6) "在途"
}
[5]=>
array(6) {
["time"]=>
string(19) "2019-03-22 20:30:27"
["context"]=>
string(85) "【武汉市】 已离开 湖北武汉分拨中心 发往 湖北武汉黄陂区公司"
["ftime"]=>
string(19) "2019-03-22 20:30:27"
["areaCode"]=>
NULL
["areaName"]=>
NULL
["status"]=>
string(6) "在途"
}
[6]=>
array(6) {
["time"]=>
string(19) "2019-03-22 20:15:30"
["context"]=>
string(50) "【武汉市】 已到达 湖北武汉分拨中心"
["ftime"]=>
string(19) "2019-03-22 20:15:30"
["areaCode"]=>
string(14) "CN420100000000"
["areaName"]=>
string(16) "湖北,武汉市"
["status"]=>
string(6) "在途"
}
[7]=>
array(6) {
["time"]=>
string(19) "2019-03-22 00:48:37"
["context"]=>
string(82) "【汕头市】 已离开 广东揭阳分拨中心 发往 湖北武汉分拨中心"
["ftime"]=>
string(19) "2019-03-22 00:48:37"
["areaCode"]=>
NULL
["areaName"]=>
NULL
["status"]=>
string(6) "在途"
}
[8]=>
array(6) {
["time"]=>
string(19) "2019-03-22 00:46:46"
["context"]=>
string(50) "【汕头市】 已到达 广东揭阳分拨中心"
["ftime"]=>
string(19) "2019-03-22 00:46:46"
["areaCode"]=>
string(14) "CN440500000000"
["areaName"]=>
string(16) "广东,汕头市"
["status"]=>
string(6) "在途"
}
[9]=>
array(6) {
["time"]=>
string(19) "2019-03-21 20:32:50"
["context"]=>
string(94) "【汕头市】 已离开 广东汕头潮阳区公司陈店分部 发往 湖北武汉网点包"
["ftime"]=>
string(19) "2019-03-21 20:32:50"
["areaCode"]=>
NULL
["areaName"]=>
NULL
["status"]=>
string(6) "在途"
}
[10]=>
array(6) {
["time"]=>
string(19) "2019-03-21 19:05:50"
["context"]=>
string(65) "【汕头市】 广东汕头潮阳区公司陈店分部 已揽收"
["ftime"]=>
string(19) "2019-03-21 19:05:50"
["areaCode"]=>
string(14) "CN440513000000"
["areaName"]=>
string(26) "广东,汕头市,潮阳区"
["status"]=>
string(6) "揽收"
}
}

PHP 之快递100接口封装的更多相关文章

  1. php利用快递100接口获取物流信息

    PHP使用CURL调用快递100接口查询运单信息 类代码如下: <?php/** * 快递100接口调用类 * @author 齐云海 * date: 2019/05/29 */ class E ...

  2. 在Asp.Net MVC中利用快递100接口实现订阅物流轨迹功能

    前言 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递100做为数据来源接口,这个接口是收费的,不过提供的功能还是非常强大的,有专门的售后维护团队.也有免费的方案,类似于快递 ...

  3. PHP最近做了物流快递查询的接口用得是快递100

    最近做了物流快递查询的接口用得是快递100的,分享下心得体会 主要使用了2种接口,一个是api的 返回json xml 各种数据的 一个是返回的URL的  就是一个带结果的网址  . 1  申请 找一 ...

  4. Delphi xe 10.3.2-快递接口封装-【快递鸟(即时查询和单号识别)】

    编译环境:Windows 7 +Delphi xe 10.3.2 封装了快递鸟接口,注意的坑:MD5要转为小写. function TKDniaoAPI.StrtoMd5(const str: str ...

  5. .netcore 写快递100的快递物流信息查询接口

    快递100的物流信息查询接口,官方提供了一些demo;还好官方提供的代码是.netcore版本写的,不过写的有点low;根据官方提供的代码,我按照.netcore 的风格重构了代码:核心代码如下: / ...

  6. java抓取快递100信息接口

    package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...

  7. 快速上手微信小程序-快递100

    2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...

  8. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  9. C#快递跟踪(基于快递100深度定制)

    本文主要介绍快递跟踪的相关信息.如根据快递单号预测所属快递公司,判断快递是否已被签收,以及改良官方model后可在不用申请授权的情况下实现json,html,xml及text等多种格式以及单行多行,降 ...

随机推荐

  1. c++-01--迭代器

    迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...

  2. findstr 命令使用

    findstr 命令使用 find /? 在文件中搜索字符串. FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][p ...

  3. 把一个质量为M0 的物体加速到 时间慢100倍 需要多大能量

    洛伦兹系数  γ = 100: 运动时候的质量  M = γM0 速度   v = c*sqrt(1-1/γ2) E = 1/2 * m0c2  *γ* (1-1/γ2) 如果一个60kg 的人想要加 ...

  4. 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T ->

    将tensorflow C++ 版本更新为何训练版本一致即可

  5. POJ1083(Moving Tables)--简单模拟

    题目链接:http://poj.org/problem?id=1083 如图所示在一条走廊的两侧各有200个房间,现在给定一些成对的房间相互交换桌子,但是走廊每次只能通过一组搬运, 也就是说如果两个搬 ...

  6. Vue中遍历数组的新方法

    1.foreach foreach循环对不能使用return来停止循环 search(keyword){ var newList = [] this.urls.forEach(item =>{ ...

  7. spring-boot-actuator 常用配置

    management: endpoints: web: base-path: "/" exposure: include: "*" endpoint: heal ...

  8. Kubernetes 的 Client Libraries 的使用

    说明 kubernetes 估计会成为 linux 一样的存在,client-go 是它的 go sdk,client-go/examples/ 给出了一些用例,但是数量比较少. api Resour ...

  9. idou老师教你学Istio :5分钟简析Istio异常检测

    异常检测 异常检测和踢出异常主机是一个动态检查上游主机是否正常工作,对不健康主机进行移除的过程.异常检测是一种被动健康检查,根据返回状态码来判断是否满足移除条件,最后将主机移除,首先我们来了解下驱逐算 ...

  10. 通用分页model封装pageList

    package selfimpr.page; import java.util.List; /** * 分页模型 * @param <T> 数据泛型 * @author selfimpr ...