"); print($body); } else { if ($httpCode == 400 && strpos($header, "Invalid Param Location") !== false) { print("参数错误"); } elseif ($httpCode == 400 && strpos($header, "Invalid AppCode") !== false) { print("AppCode错误"); } elseif ($httpCode == 400 && strpos($header, "Invalid Url") !== false) { print("请求的 Method、Path 或者环境错误"); } elseif ($httpCode == 403 && strpos($header, "Unauthorized") !== false) { print("服务未被授权(或URL和Path不正确)"); } elseif ($httpCode == 403 && strpos($header, "Quota Exhausted") !== false) { print("套餐包次数用完"); } elseif ($httpCode == 403 && strpos($header, "Api Market Subscription quota exhausted") !== false) { print("套餐包次数用完,请续购套餐"); } elseif ($httpCode == 500) { print("API网关错误"); } elseif ($httpCode == 0) { print("URL错误"); } else { print("参数名错误 或 其他错误"); print($httpCode); $headers = explode("\r\n", $header); $headList = array(); foreach ($headers as $head) { $value = explode(':', $head); $headList[$value[0]] = $value[1]; } print($headList['x-ca-error-message']); } } } 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; } }