You can get the Shipment Tracking information, like tracking_number, carrier code, title, order_id from the shipment id using Magento 2.
Using Magento\Sales\Api\ShipmentRepositoryInterface interface to retrieve shipment object and based on shipment object we can fetch all the tracking information for a shipment.
getTracks() method of Shipping object contains the Tracking information data.
ShipmentTrackInterface contains the basic function of Tracking Details.
<?php
namespace Jesadiya\Model\Shipment;
use Exception;
use Psr\Log\LoggerInterface;
use Magento\Sales\Api\Data\ShipmentInterface;
use Magento\Sales\Api\Data\ShipmentTrackInterface;
use Magento\Sales\Api\ShipmentRepositoryInterface;
class Tracking
{
/**
* @var ShipmentRepositoryInterface
*/
private $shipmentRepository;
/**
* @var LoggerInterface
*/
private $logger;
public function __construct(
ShipmentRepositoryInterface $shipmentRepository,
LoggerInterface $logger
) {
$this->shipmentRepository = $shipmentRepository;
$this->logger = $logger;
}
/**
* Get Shipment Trackig data by Shipment Id
*
* @param $id
*
* @return ShipmentTrackInterface|null
*/
public function getTracking($id)
{
$shipmentId = 1; //shipment id
$shipment = $this->getShipmentById($shipmentId);
if ($shipment) {
return $shipment->getTracks();
}
return null;
}
/**
* Get Shipment data by Shipment Id
*
* @param $id
*
* @return ShipmentInterface|null
*/
public function getShipmentById($id)
{
try {
$shipment = $this->shipmentRepository->get($id);
} catch (Exception $exception) {
$this->logger->critical($exception->getMessage());
$shipment = null;
}
return $shipment;
}
}
Now you can call the function under the template file or any PHP class,
$shipmentId = 1; // shipment id
$shipmment = $this->getTracking($shipmentId);
foreach ($shipment->getTracks() as $track) {
echo $track->getTrackingNumber(); // 3333333333
echo $track->getTitle(); //Federal Express
echo $track->getCarrierCode(); // fedex
echo $track->getOrderId(); //10
}
Using the above details code snippet, You can get the tracking information of shipment in Magento 2.
