clientFactory = $clientFactory; $this->configHelper = $configHelper; $this->logger = $logger; } function execute(Observer $observer) { $order = $observer->getEvent()->getOrder(); $shippingAddress = $order->getShippingAddress(); $billingAddress = $order->getBillingAddress(); $whiOrder = [ 'metadata' => [ 'platform' => 'Magento', 'plaformOrderId' => $order->getId(), ], 'billingAddress' => [ 'firstName' => $billingAddress->getFirstname(), 'lastName' => $billingAddress->getLastname(), 'address1' => $billingAddress->getStreet()[0], 'address2' => count($billingAddress->getStreet()) > 1 ? $billingAddress->getStreet()[1] : null, 'city' => $billingAddress->getCity(), 'state' => $billingAddress->getRegion(), 'zip' => $billingAddress->getPostCode(), 'email' => $billingAddress->getEmail(), 'phone' => $billingAddress->getTelephone() ], 'shippingAddress' => [ 'firstName' => $shippingAddress->getFirstname(), 'lastName' => $shippingAddress->getLastname(), 'address1' => $shippingAddress->getStreet()[0], 'address2' => count($shippingAddress->getStreet()) > 1 ? $shippingAddress->getStreet()[1] : null, 'city' => $shippingAddress->getCity(), 'state' => $shippingAddress->getRegion(), 'zip' => $shippingAddress->getPostCode(), ], 'amounts' => [ 'shipping' => $order->getShippingAmount(), 'tax' => $order->getTaxAmount(), 'subtotal' => $order->getSubtotal(), 'total' => $order->getGrandTotal(), ], 'parts' => [] ]; foreach ($order->getAllItems() as $item) { $part = [ 'sku' => $item->getSku(), 'price' => $item->getPrice(), 'salesTax' => $item->getTaxAmount(), 'discount' => $item->getDiscountAmount(), 'quantity' => $item->getQtyOrdered(), ]; array_push($whiOrder['parts'], $part); } $baseUrl = $this->configHelper->getBaseUrl(); $token = $this->configHelper->getApiToken(); $client = $this->clientFactory->create(['config' => [ 'base_uri' => $baseUrl, 'headers' => [ 'Content-type' => 'application/json', 'Authorization' => "Bearer $token" ] ]]); try { $client->request('POST', 'whi/orders', [ 'body' => json_encode($whiOrder) ]); } catch (GuzzleException $exception) { $this->logger->error('Error sending ' . $order->getId() . ' to WHI for processing. Server returned HTTP response code ' . $exception->getCode()); } } }