Question

I am trying to get tracking number and courier name while submitting a shipment in backend but I am not getting these data in observer. below is the code.

events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
 <event name="sales_order_shipment_save_after">
    <observer name="trackShiping" instance="Aftership\Track\Observer\Tracking"/>
 </event>
 </config>

Tracking.php

<?php
 namespace Aftership\Track\Observer;
 use Magento\Framework\Event\ObserverInterface;

 class Tracking implements ObserverInterface {

  protected $logger;

  public function __construct( \Psr\Log\LoggerInterface $logger) {
    $this->logger = $logger;
  }
/**
 * @param \Magento\Framework\Event\Observer $observer
 */
  public function execute(\Magento\Framework\Event\Observer $observer)
  {
    $magento_order = $observer->getShipment()->getOrder();
    $data = $magento_order->getData();
    $this->logger->info('Data', $data);
  } 
 } 

In system.log I am not getting data related to tracking. What I am doing wrong. Please help me to get tracking data.

Was it helpful?

Solution

OK I found the answer I need to use sales_order_shipment_track_save_after instead of sales_order_shipment_save_after.

After that in observer we can get track data using $observer->getEvent()->getTrack()

hope it'll help someone

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top