80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
| <?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];
 | |
|     }
 | |
| }
 |