68 行
2.0 KiB
PHP
68 行
2.0 KiB
PHP
<?php
|
||
|
||
namespace addons\shopro_aliyun_express\library;
|
||
|
||
use fast\ExpressBird;
|
||
|
||
class Bridge
|
||
{
|
||
public static function isEnabled()
|
||
{
|
||
return ExpressConfig::getInstance()->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);
|
||
}
|
||
}
|