Files
stemcell/app/code/Stemcell/Sales/Observer/Shipping/Tracking/ExpressInfo.php
T
2026-09-15 10:26:34 +08:00

48 lines
1.6 KiB
PHP

<?php
namespace Stemcell\Sales\Observer\Shipping\Tracking;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Sales\Model\Order\Shipment;
use Psr\Log\LoggerInterface;
use Stemcell\Sales\Helper\Data;
class ExpressInfo implements ObserverInterface
{
protected Data $data;
protected LoggerInterface $logger;
protected RequestInterface $request;
public function __construct(
Data $data,
RequestInterface $request,
LoggerInterface $logger
) {
$this->data = $data;
$this->logger = $logger;
$this->request = $request;
}
public function execute(Observer $observer): void
{
/* @var $shipment Shipment */
$shipment = $observer->getData('shipment');
/* @var $track Shipment\Track */
$track = $shipment->getTracksCollection()->getFirstItem();
$trackNumber = trim($track->getTrackNumber());
$tracking = $this->request->getParam('tracking');
if ($trackNumber && is_array($tracking) && !empty($tracking)) {
try {
$result = $this->data->getExpressInfo($trackNumber);
if (isset($result['expName']) && !empty($result['expName'])) {
$track->setTitle($result['expName'])->setDescription(json_encode($result))->save();
}
} catch (\Exception $exception) {
$this->logger->critical('request express info fail, message:'.$exception->getMessage(), $exception->getTrace());
}
}
}
}