isEnabled(); } /** * 统一轨迹查询入口 */ public static function queryTrack($waybillNo, $phone = '', $expressCode = '', $useCache = true) { $waybillNo = ExpressSanitizer::waybillNo($waybillNo); $phone = ExpressSanitizer::phone($phone); $expressCode = ExpressSanitizer::expressCode($expressCode); if ($waybillNo === '') { throw new \Exception('快递单号不能为空'); } if (self::isEnabled()) { $service = new ExpressQueryService(); return $service->queryTrack($waybillNo, $phone, $expressCode, null, $useCache); } return self::fallbackQuery($waybillNo, $phone); } /** * 兼容旧 ExpressBird 返回格式(Success + Traces) */ public static function queryTrackLegacy($waybillNo, $phone = '', $expressCode = '', $useCache = true) { if (self::isEnabled()) { $service = new ExpressQueryService(); $normalized = $service->queryTrack($waybillNo, $phone, $expressCode, null, $useCache); return $service->toKdniaoExpressFormat($normalized); } return self::fallbackQueryLegacy($waybillNo, $phone); } protected static function fallbackQuery($waybillNo, $phone) { $legacy = self::fallbackQueryLegacy($waybillNo, $phone); return [ 'success' => !empty($legacy['Success']), 'trackList' => TrackNormalizer::fixDeliveringIcons($legacy['Traces'] ?? []), 'expressStatus' => '', 'expressCompanyName' => '', 'expressCompanyCode' => '', 'provider' => 'expressbird', ]; } protected static function fallbackQueryLegacy($waybillNo, $phone) { $bird = new ExpressBird(); return $bird->queryTrack($waybillNo, $phone); } }