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()); } } } }