how i can get order id and customer name in oberserver magento 2
-
01-03-2021 - |
Question
I have used event
<event name="checkout_onepage_controller_success_action">
when I use this code I am getting null $order
$order = $observer->getEvent()->getOrder(); // im getting null
$order_id = $order->getIncrementId();
$this->_logger->info($order_id);
foreach($order->getAllItems() as $item){
$ProdustIds[]= $item->getProductId();
$proName[] = $item->getName(); // product name
}
$this->logger->info($ProdustIds);
$customer = $order->getCustomerId();
how I can get order id and customer name in Magento 2???
No correct solution
OTHER TIPS
If you want to get order id on checkout_onepage_controller_success_action
then you have to call $observer->getEvent()->getOrderIds()
$observer->getEvent()->getOrderIds()
provide an array which consist of one order id of single checkout and provide multiple order ids.
<?php
nameSpace YourNameSpace;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
use usMagento\Framework\Exception\NoSuchEntityException;
class OrderSuccess implements ObserverInterface{
/**
* @var \Magento\Sales\Model\OrderRepository
*/
private $orderRepository;
public function __construct(
\Magento\Sales\Model\OrderRepository $orderRepository
) {
$this->orderRepository = $orderRepository;
}
public function execute(EventObserver $observer)
{
$orderIds = $observer->getEvent()->getOrderIds();
if (empty($orderIds) || !is_array($orderIds)) {
return;
}
foreach($orderIds as $orderId){
try{
$order = $this->orderRepository->get($orderId);
if ($order->getCustomerFirstname()) {
$customerName = $order->getCustomerFirstname() . ' ' . $order->getCustomerLastname();
} else {
$customerName = $order->getBillingAddress()->getFirstname(). ' ' . $order->getBillingAddress()->getLastname();
}
//$customerName = $order->getCustomerName();
} catch (NoSuchEntityException $ex) {
}
}
}
}
To get order ID change your code like below :
$order_ids = $observer->getEvent()->getOrderIds();
$order_id = $order_ids[0];
To get Shipping Adress load order:
//\Magento\Sales\Api\OrderRepositoryInterface
$_order = $this->orderRepository->get($order->getEntityId());
$shippingAddress = $_order->getShippingAddress();
$shippingName = $shippingAddress->getFirstName().$shippingAddress->getLastName();
Its very easy, Please find below code. To get customer name find the code below.
$customer = $observer->getData('data_object');
if ($customer) {
$customerName = $customer->getFirstName();
}
To get the order use the code below:
$observer->getOrder()
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange