server(); $this->key = $config["ApiKey"]; $this->http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; } /** * 查询物流轨迹企业版 * @param unknown $express_no 物流公司编码 * @param unknown $send_no 快递单号 */ public function getExpressTracesEnterpriseEdition($express_no, $send_no,$mobile=''){ $data = array(); $url = $this->http_type."eolink.o.apispace.com/wlgj1/paidtobuy_api/trace_search"; // 实际地址 $data['cpCode']=$express_no; $data['mailNo']=$send_no; if($express_no=='SF'){ $data['tel']=$mobile; } $headers = [ "Content-Type:application/json", "Authorization-Type:apikey", "X-APISpace-Token:{$this->key}", ]; $result = $this->sendRequest($url, $data, $headers); return $result; } /** * 发送请求 * @param unknown $url * @param unknown $data */ public function sendRequest($url, $data = [],$headers=[]){ $js='{ "traceId" : "1999491834226338823", "trace_id" : "1999491834226338823", "success" : true, "logisticsTrace" : { "theLastTime" : "2022-11-21 16:22:59", "cpCode" : "YTO", "cpUrl" : "http://www.yto.net.cn/", "logisticsStatusDesc" : "已揽件", "logisticsTraceDetailList" : [ { "areaCode" : "CN360700000000", "areaName" : "江西省,赣州市", "subLogisticsStatus" : "ACCEPT", "time" : 1669018979000, "logisticsStatus" : "ACCEPT", "desc" : "【江西省赣州龙都商城公司】 已揽收 取件人: 王胜军 (13757720004) 新冠疫苗已接种" } ], "mailNo" : "YT6896772955366", "cpMobile" : "95554", "theLastMessage" : "【江西省赣州龙都商城公司】 已揽收 取件人: 王胜军 (13757720004) 新冠疫苗已接种", "logisticsCompanyName" : "圆通快递", "logisticsStatus" : "ACCEPT" } }'; // $result = json_decode($js, true); // return $this->handleReturnResult($result); if (function_exists('curl_init') == 1){ $curl = curl_init(); curl_setopt ($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt ($curl, CURLOPT_HEADER,0); curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); if(!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); } curl_setopt ($curl, CURLOPT_TIMEOUT,5); $result = curl_exec($curl); $result = json_decode($result, true); return $this->handleReturnResult($result); }else{ return ["success" => false, "reason" => "curl扩展未开启"]; } } /** * 处理返回数据 * @param unknown $data */ public function handleReturnResult($data){ $result = array(); $list = [ 'success' => true, 'reason' => '', 'status' => '', 'status_name' => '', 'shipper_code' => '', 'logistic_code' => '', 'list' => [], ]; if(isset($data['logisticsTrace'])){ $result["success"] = true; $Trace=$data['logisticsTrace']; $result["reason"] = $Trace["theLastMessage"]; $result["status"] =''; $result["status_name"] = $Trace['logisticsStatusDesc']; $result["shipper_code"] = $Trace["theLastMessage"]; $result["logistic_code"] = $Trace["logisticsStatus"]; if(isset($Trace["logisticsTraceDetailList"])){ $lists=[]; foreach($Trace["logisticsTraceDetailList"] as $k => $v){ $lists[] = array( "datetime" => date('Y-m-d H:i:s',$v["time"]/1000), "remark" => $v["desc"], ); } $result["list"] = $lists; return $result; } } return $list; } /** * 物流跟踪状态 * @param $state */ public function getStatusName($status){ $data = array( 0 => "在途", 1 => "揽收", 2 => "疑难", 3 => "签收", 4 => "退签", 5 => "派件", 6 => "退回", ); $status_name = isset($data[$status]) ? $data[$status] : ''; return $status_name; } }