PHP 之快递100接口封装
<?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接口封装的更多相关文章
- php利用快递100接口获取物流信息
PHP使用CURL调用快递100接口查询运单信息 类代码如下: <?php/** * 快递100接口调用类 * @author 齐云海 * date: 2019/05/29 */ class E ...
- 在Asp.Net MVC中利用快递100接口实现订阅物流轨迹功能
前言 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递100做为数据来源接口,这个接口是收费的,不过提供的功能还是非常强大的,有专门的售后维护团队.也有免费的方案,类似于快递 ...
- PHP最近做了物流快递查询的接口用得是快递100
最近做了物流快递查询的接口用得是快递100的,分享下心得体会 主要使用了2种接口,一个是api的 返回json xml 各种数据的 一个是返回的URL的 就是一个带结果的网址 . 1 申请 找一 ...
- Delphi xe 10.3.2-快递接口封装-【快递鸟(即时查询和单号识别)】
编译环境:Windows 7 +Delphi xe 10.3.2 封装了快递鸟接口,注意的坑:MD5要转为小写. function TKDniaoAPI.StrtoMd5(const str: str ...
- .netcore 写快递100的快递物流信息查询接口
快递100的物流信息查询接口,官方提供了一些demo;还好官方提供的代码是.netcore版本写的,不过写的有点low;根据官方提供的代码,我按照.netcore 的风格重构了代码:核心代码如下: / ...
- java抓取快递100信息接口
package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...
- 快速上手微信小程序-快递100
2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- C#快递跟踪(基于快递100深度定制)
本文主要介绍快递跟踪的相关信息.如根据快递单号预测所属快递公司,判断快递是否已被签收,以及改良官方model后可在不用申请授权的情况下实现json,html,xml及text等多种格式以及单行多行,降 ...
随机推荐
- pkg-config命令
返回已安装库文件的元信息 pkg-config读取.pc文件获取信息 基本思想 编译的时候-I指定头文件路径:-L指定库文件路径.这样做总感觉很麻烦 事先把库的位置信息等保存起来,需要的时候再通过特定 ...
- 为什么Java大数据能带你走上人生巅峰
国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发. 开发程序员的工作大多是重复性劳动,容易产生疲惫感,薪资在工作2-5年内就达到了一个峰值,再要提升就比较困 ...
- Kafka的性能分析
都说Kafka的吞吐量很大,但是我一直不直到Kafka为何有如此大的吞吐量.最近在看Kafka权威指南,陆陆续续得到了如下结论: 1.分区:Kafka支持分区,这样就支持多个生产者和多个消费者同时请求 ...
- js判断img是否存在
利用image对象的onerror事件来判断,出错则更换image对象的src为默认图片的URL. <p>第一种情况:图片存在,正常显示 <img src="http ...
- 关闭mysql严格模式
配置文件my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 s ...
- Tensorflow ARM交叉编译错误集锦
版权声明:本文为博主(Jimchen)原创文章,未经博主允许不得转载. ttps://www.cnblogs.com/jimchen1218/p/11611975.html 前言: Tensorflo ...
- jade-包含
模板继承是子文件,父文件继承和代码复用的问题,那模版包含是文件与文件之间,文件与区块之间,这种区块内嵌的东西 继承的关键字是extends, 那模板包含使用的是include这个关键字 head.ja ...
- .NET 推荐博客
燎原之星的博客 农码一生博文索引 http://www.cnblogs.com/zhaopei/p/Indexes.html 那些年搞不懂的术语.概念:协变.逆变.不变体 http://www.cnb ...
- HDU-3341-Lost's revenge(AC自动机, DP, 压缩)
链接: https://vjudge.net/problem/HDU-3341 题意: Lost and AekdyCoin are friends. They always play "n ...
- Vue项目创建build打包后可修改的配置文件
需要一个配置文件,能在项目打包(build)时不被打包,方便修改,同时项目刷新时读取改配置. 实现方法如下: 1.在项目的static目录下创建project.config.json文件(名称随意,建 ...