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]; | ||
|  |     } | ||
|  | } |