<?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. centos mysql数据库问题:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'(转)

    问题描述: 安装好数据库MySQL,进入mysql,设置号密码后,退出的时候,利用密码无法进入,直接回车后可进入,无法看到数据库mysql,use mysql返回错误:ERROR 1044 (4200 ...

  2. 关于el-select 单选与多选切换的时候报错的解决办法

    错误: 出错原因: 估计是单选切换到多选的时候元素没有刷新的原因,猜测 解决办法: 1.在el-select上面加上一个条件判断, 条件判断中绑定一个变量值 例如 :multiple="is ...

  3. 将两个数组相同index的value合并成一个新的value组成一个新的数组

    将两个数组相同index的value合并成一个新的value组成一个新的数组 前提: 这两个数组的长度相同 生成后的新数组长度也相同 返回值都是对象 把rows对象的key和value弄成两个数组, ...

  4. MRC下delegate 野指针问题

    最近项目开发中,临时被调去修复一个页面返回时crash的问题.出现这个问题的原因也很巧合,正好服务地址在同事电脑上,也正巧网络请求响应时间狂慢!一个请求发出去回来的时间是40秒左右,要是在线上,肯定会 ...

  5. Cannot determine value type from string 'xxxxxx'

    Cannot determine value type from string 'xxxxxx' 查了一下,意思就是字段和属性名没有对上. 反复查看代码,字段名和属性名一致. 最后翻阅资料得知是因为构 ...

  6. c语言二维数组赋值

    , n=;//行数和列数 pattern = (char**)malloc(sizeof(char*)*m);//申请一组一维指针空间. ; i<m; i++) pattern[i] = (ch ...

  7. 挖矿病毒watchbog处理过程

    1 挖矿病毒watchbog处理过程 简要说明 这段时间公司的生产服务器中了病毒watchbog,cpu动不动就是100%,查看cpu使用情况,发现很大一部分都是us,而且占100%左右的都是进程wa ...

  8. 当前form窗体随系统屏幕变化

    private void 新建_Load(object sender, EventArgs e) { int DeskWidth = Screen.PrimaryScreen.WorkingArea. ...

  9. D. Lakes in Berland (DFS或者BFS +连通块

    https://blog.csdn.net/guhaiteng/article/details/52730373 参考题解 http://codeforces.com/contest/723/prob ...

  10. 0010Springboot整合thymeleaf

    1.pom.xml中添加thymeleaf的起步依赖 2.编写html文件并放在classpath:/templates/路径下 3.编写controller并返回字符串,会到classpath:/t ...