48 lines
1.6 KiB
PHP
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());
|
|
}
|
|
}
|
|
}
|
|
}
|