80 lines
2.4 KiB
PHP
Executable File
80 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace app\service;
|
|
|
|
class Kd100
|
|
{
|
|
private static $url = 'http://poll.kuaidi100.com/poll/query.do'; //实时查询请求地址
|
|
|
|
private static $key = 'bRIlFitN9883';//客户授权key
|
|
private static $customer = '03A67821933221AAE6CBACBCA7E565F2';//查询公司编号
|
|
|
|
public static function query(string $com, string $num, $returnArray = false)
|
|
{
|
|
$param = [
|
|
'com' => $com, //快递公司编码, 一律用小写字母
|
|
'num' => $num, //快递单号
|
|
// 'phone' => '', //手机号
|
|
// 'from' => '', //出发地城市
|
|
// 'to' => '', //目的地城市
|
|
// 'resultv2' => '1' //开启行政区域解析
|
|
];
|
|
|
|
//请求参数
|
|
$post_data = [];
|
|
$post_data["customer"] = self::$customer;
|
|
$post_data["param"] = json_encode($param);
|
|
$sign = md5($post_data["param"].self::$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);
|
|
|
|
//发送post请求
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
curl_setopt($ch, CURLOPT_URL, self::$url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
$result = curl_exec($ch);
|
|
return json_decode($result, $returnArray);
|
|
}
|
|
|
|
/**
|
|
* 状态
|
|
*
|
|
* @return string[]
|
|
*/
|
|
public static function state(): array
|
|
{
|
|
return [
|
|
0 => '在途',
|
|
1 => '揽收',
|
|
2 => '疑难',
|
|
3 => '签收',
|
|
4 => '退签',
|
|
5 => '派件',
|
|
6 => '退回',
|
|
7 => '转单',
|
|
10 => '待清关',
|
|
11 => '清关中',
|
|
12 => '已清关',
|
|
13 => '清关异常',
|
|
14 => '收件人拒签',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 不在继续查询的配送状态
|
|
* @return int[]
|
|
*/
|
|
public static function unSearchState(): array
|
|
{
|
|
return [3,4,12];
|
|
}
|
|
}
|