diff --git a/RestApi.php b/RestApi.php deleted file mode 100644 index 9a46c43..0000000 --- a/RestApi.php +++ /dev/null @@ -1,437 +0,0 @@ -apiUrl = $crmUrl.'/api/v'.$this->apiVersion.'/'; - $this->apiKey = $apiKey; - } - - public function getStatusCode() - { - return $this->statusCode; - } - - public function getLastError() - { - if (!is_null($this->lastError)) - return $this->statusCode . ' ' . $this->lastError; - else - return null; - } - - public function getLastErrorMessage() - { - return $this->lastError; - } - - - /* Методы для работы с заказами */ - /** - * Получение заказа по id - * - * @param string $id - идентификатор заказа - * @return array - информация о заказе - */ - public function orderGet($id) - { - $url = $this->apiUrl.'orders/'.$id; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Создание заказа - * - * @param array $order- информация о заказе - * @return array - */ - public function orderCreate($order) - { - $dataJson = json_encode($order); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['order'] = $dataJson; - - $url = $this->apiUrl.'orders/create'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - /** - * Изменение заказа - * - * @param array $order- информация о заказе - * @return array - */ - public function orderEdit($order) - { - $dataJson = json_encode($order); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['order'] = $dataJson; - - $url = $this->apiUrl.'orders/'.$order['id'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - /** - * Загрузка нескольких заказов - * - * @param array $orders - массив заказов - * @return array - */ - public function orderUpload($orders) - { - $dataJson = json_encode($orders); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['orders'] = $dataJson; - - $url = $this->apiUrl.'orders/upload'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - /** - * Удаление заказа - * - * @param string $id - идентификатор заказа - * @return array - */ - public function orderDelete($id) - { - $url = $this->apiUrl.'orders/'.$id.'/delete'; - $result = $this->curlRequest($url, array(), 'POST'); - return $result; - } - - /** - * Получение последних измененных заказов - * - * @param DateTime $startDate - начальная дата выборки - * @param DateTime $endDate - конечная дата - * @param int $limit - ограничение на размер выборки - * @param int $offset - сдвиг - * @return array - массив заказов - */ - public function orderHistory($startDate = null, $endDate = null, $limit = 100, $offset = 0) - { - $url = $this->apiUrl.'orders/history'; - $parameters = array(); - $parameters['startDate'] = $startDate; - $parameters['endDate'] = $endDate; - $parameters['limit'] = $limit; - $parameters['offset'] = $offset; - - $result = $this->curlRequest($url, $parameters); - return $result; - } - - - /* Методы для работы с клиентами */ - /** - * Получение клиента по id - * - * @param string $id - идентификатор - * @return array - информация о клиенте - */ - public function customerGet($id) - { - $url = $this->apiUrl.'customers/'.$id; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Создание клиента - * - * @param array $customer - информация о клиенте - * @return array - */ - public function customerCreate($customer) - { - $dataJson = json_encode($customer); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['customer'] = $dataJson; - - $url = $this->apiUrl.'customers/create'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - /** - * Редактирование клиента - * - * @param array $customer - информация о клиенте - * @return array - */ - public function customerEdit($customer) - { - $dataJson = json_encode($customer); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['customer'] = $dataJson; - - $url = $this->apiUrl.'customers/'.$customer['id'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - /** - * Удаление клиента - * - * @param string $id - идентификатор - * @return array - */ - public function customerDelete($id) - { - $url = $this->apiUrl.'customers/'.$id.'/delete'; - $result = $this->curlRequest($url, array(), 'POST'); - return $result; - } - - /** - * Получение списка заказов клиента - * - * @param string $id - идентификатор клиента - * @param DateTime $startDate - начальная дата выборки - * @param DateTime $endDate - конечная дата - * @param int $limit - ограничение на размер выборки - * @param int $offset - сдвиг - * @return array - массив заказов - */ - public function customerOrdersList($id, $startDate = null, $endDate = null, - $limit = 100, $offset = 0) - { - $url = $this->apiUrl.'customers/'.$id.'/orders'; - $parameters = array(); - $parameters['startDate'] = $startDate; - $parameters['endDate'] = $endDate; - $parameters['limit'] = $limit; - $parameters['offset'] = $offset; - - $result = $this->curlRequest($url, $parameters); - return $result; - } - - /* Методы для работы со справочниками */ - /** - * Получение списка типов доставки - * - * @return array - массив типов доставки - */ - public function deliveryTypesList() - { - $url = $this->apiUrl.'reference/delivery-types'; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Редактирование типа доставки - * - * @param array $deliveryType - информация о типе доставки - * @return array - */ - public function deliveryTypeEdit($deliveryType) - { - $dataJson = json_encode($deliveryType); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['deliveryType'] = $dataJson; - - $url = $this->apiUrl.'delivery-types/'.$deliveryType['code'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - - /** - * Получение списка типов оплаты - * - * @return array - массив типов оплаты - */ - public function paymentTypesList() - { - $url = $this->apiUrl.'reference/payment-types'; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Редактирование типа оплаты - * - * @param array $paymentType - информация о типе оплаты - * @return array - */ - public function paymentTypesEdit($paymentType) - { - $dataJson = json_encode($paymentType); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['paymentType'] = $dataJson; - - $url = $this->apiUrl.'payment-types/'.$paymentType['code'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - - /** - * Получение списка статусов оплаты - * - * @return array - массив статусов оплаты - */ - public function paymentStatusesList() - { - $url = $this->apiUrl.'reference/payment-statuses'; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Редактирование статуса оплаты - * - * @param array $paymentStatus - информация о статусе оплаты - * @return array - */ - public function paymentStatusesEdit($paymentStatus) - { - $dataJson = json_encode($paymentStatus); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['paymentStatus'] = $dataJson; - - $url = $this->apiUrl.'payment-statuses/'.$paymentStatus['code'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - - /** - * Получение списка типов заказа - * - * @return array - массив типов заказа - */ - public function orderTypesList() - { - $url = $this->apiUrl.'reference/order-types'; - $result = $this->curlRequest($url); - return $result; - } - - /** - * Редактирование типа заказа - * - * @param array $paymentType - информация о типе заказа - * @return array - */ - public function orderTypesEdit($orderType) - { - $dataJson = json_encode($orderType); - $dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget, - $dataJson); - $parameters = array(); - $parameters['orderType'] = $dataJson; - - $url = $this->apiUrl.'order-types/'.$paymentType['code'].'/edit'; - $result = $this->curlRequest($url, $parameters, 'POST'); - return $result; - } - - - - - protected function curlRequest($url, $parameters = null, $method = 'GET', $format = 'json') - { - $parameters['apiKey'] = $this->apiKey; - - if ($method == 'GET' && !is_null($parameters)) - $url .= '?'.http_build_query($parameters); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_FAILONERROR, FALSE); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable - curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 3s - - if ($method == 'POST') - { - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters); - } - - $response = curl_exec($ch); - $this->statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - - if (curl_errno($ch)) - { - $this->lastError = 'Curl error: ' . curl_error($ch); - return null; - } - curl_close($ch); - - $result = (array)json_decode($response, true); - if ($result['success'] == false) - { - $this->lastError = $result['errorMsg']; - return null; - } - - $this->lastError = null; - unset($result['success']); - if (count($result) == 0) - return true; - return reset($result); - } -} - -?> \ No newline at end of file