get($url); // return json_decode($response->body()); $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); return json_decode(curl_exec($curl)); } public function format($response,$logistic_number): array { $result = []; if (!isset($response)||($response && $response->status!=0)) { return [ 'logistic_number' => $logistic_number, ]; } else { try { if ($response->result->number??false)$result['logistic_number'] = $response->result->number; } catch (\Exception $e) { LogService::log(LogisticYTOService::class, "AliJiSu快递信息异常", $response); } $list=$response->result->list; if (!empty($list) && is_array($list)) { $lastNativeRoute = $list[0]; $result['status'] = $this->getStatus($response); if ($result['status'] == '已签收') $result['received_at'] = $lastNativeRoute->time; $result['transfer_status'] = $this->getTransferStatus($list); $result['routes_length'] = array_key_exists('transfer_status', $result) ? count($result['transfer_status']) : 0; } else { $result['status'] = null; $result['transfer_status'] = []; } if (!array_key_exists('status', $result)) { $result['status'] = null; $result['transfer_status'] = []; } return $result; } } /** * @param $nativeData * @return string */ private function getStatus($nativeData): string { $status = null; switch ($nativeData->result->deliverystatus) { case '1': $status = '在途'; break; case '2': $status = '派送中'; break; case '3': $status = '已签收'; break; case '4': $status = '派送异常'; break; default: $status = '其他'; } return $status; } /** * @param $nativeRoutes * @return array */ private function getTransferStatus($nativeRoutes): array { $transferStatus = []; foreach ($nativeRoutes as $nativeRoute) { $item = []; $item['accept_time'] = $nativeRoute->time; $item['accept_address'] = $nativeRoute->status; $item['remark'] = ""; $transferStatus[] = $item; } return $transferStatus; } }