_config = json_decode(Getter::get('config'), true); } protected function _headers($headers = array()) { return array_merge([ 'Authorization' => 'Bearer ' . $this->_config['token'], 'Content-Type' => 'application/json', 'Accept' => 'application/json', ], $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 { $payloadReq = [ 'urlAPI' => '/api/quote/data-save-prology', 'data' => $payload ]; $response = $this->_client()->post($this->_config['url'], [ 'json' => $payloadReq ]); $statusCode = $response->getStatusCode(); $responseContent = $response->getBody()->getContents(); return json_encode([ 'guzzle' => [ 'statusCode' => $statusCode, 'response' => $responseContent ], 'payloadReq' => $payloadReq, 'config' => $this->_config ]); } catch (BadResponseException $ex) { $statusCode = $ex->getResponse()->getStatusCode(); $responseContent = $ex->getResponse()->getBody()->getContents(); return json_encode([ 'guzzle' => [ 'statusCode' => $statusCode, 'response' => $responseContent ], 'payloadReq' => $payloadReq, 'config' => $this->_config ]); } } else { throw new \ErrorException('$order is not instance \Magento\Sales\Model\Order\Interceptor'); } } }