_config = json_decode(Getter::get('config'), true); } protected function _headers($headers = array()) { return array_merge([ 'Authorization' => 'Bearer ' . $this->_config['token'] ], $headers); } protected function _client() { $client = new Client([ 'headers' => $this->_headers() ]); return $client; } public function syncOrder($order) { if ($order instanceof \Magento\Sales\Model\Order) { $orderDetail = new Order($order); $shippingAddress = new ShippingAddress($order->getShippingAddress()); $buyer = new Buyer($order); $payload = [ ...$orderDetail->jsonSerialize(), 'url' => GetBaseURL::get(), 'source' => 'magento', 'details' => [], 'buyer' => $buyer->jsonSerialize(), 'shippingAddress' => $shippingAddress->jsonSerialize(), ]; foreach ($order->getAllVisibleItems() as $item) { $payload['details'][] = (new Detail($item))->jsonSerialize(); } try { $response = $this->_client()->post($this->_config['url'], [ 'json' => $payload ]); $statusCode = $response->getStatusCode(); $responseContent = $response->getBody()->getContents(); } catch (ClientException $ex) { $statusCode = $ex->getResponse()->getStatusCode(); $responseContent = $ex->getResponse()->getBody()->getContents(); } finally { return json_encode([ 'guzzle' => [ 'statusCode' => $statusCode, 'response' => $responseContent ], 'payload' => $payload ]); } } else { throw new \ErrorException('$order is not instance \Magento\Sales\Model\Order\Interceptor'); } } }