При отправке запросов к нашему Сервису обратите внимание, что Host (https://www.westoil.ru) и другие заголовки во всех запросах должны быть едиными. URL, методы и параметры меняются в зависимости от запроса.
HTTP метод |
GET |
|||||||||
URL запроса |
/SearchService/GetBrands?article={article}&withoutTransit={true/false} |
|||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) withoutTransit – Не возвращать транзитных поставщиков (тип Bool) |
|||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetParts?article={article}&brand={brand}&withoutTransit={true/false} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) brand – Бренд (тип string) withoutTransit – Не возвращать транзитных поставщиков (тип Bool) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
HTTP метод |
GET |
||||||||||||
URL запроса |
/SearchService/AddOrder?items=[array of items] |
||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
||||||||||||
Параметры запроса (Все параметры обязательные!) |
items – Массив объектов вида: [{ article – Артикул (тип string), brand – Бренд (тип string), SupplierName – имя поставщика (тип string), CostSale – цена товара (тип double), Quantity – количество единиц товара (тип int), SupplierTimeMin – минимальный срок поставки в часах (тип int), SupplierTimeMax – максимальный срок поставки в часах (тип int), Comment – комментарий к позиции (тип string), GioID – уникальный идентификатор позиции в вашей системе (тип int) },{..}, …] Внимание! Параметр необходимо кодировать в строку URL-адреса! |
||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetPositionsByOrder/{orderId} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} Accept: application/json Content-type: application/json |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса |
orderId - номер заказа в нашей системе (тип int) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
Object Status
|
HTTP метод |
GET |
URL запроса |
/SearchService/AddToBasket?article={Article}&brand={Brand}&supplierName={SupplierName}&costSale={CostSale}&quantity={Count}&supplierTimeMin={SupplierTimeMin}&supplierTimeMax={SupplierTimeMax}&comment={comment} |
Заголовки запроса |
Authorization: Basic {credentials} |
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) brand – Бренд (тип string) supplierName – имя поставщика (тип string) costSale – цена товара (тип double) quantity – количество единиц товара (тип int) supplierTimeMin – минимальный срок поставки в часах (тип int) supplierTimeMax – максимальный срок поставки в часах (тип int) comment – комментарий к позиции (тип string) |
Ответ |
"Ok" – товар добавлен "Position was not found" – позиция не найдена "Error": "Недопустимое значение для параметров article. Параметры не могут быть пустыми" – не указан артикул "Error": "Недопустимое значение для параметров brand. Параметры не могут быть пустыми" – не указан бренд "Error": "Недопустимое значение для параметров supplierName. Параметры не могут быть пустыми" – не указано имя поставщика "Error": "Недопустимое значение для параметров costsale. Параметры не могут быть пустыми" – не верно задана или не указана цена "Error": "Недопустимое значение для параметров quantity. Параметры не могут быть пустыми" – не верно задано или не указано количество "Quantity is more than the supplier stock" - количество больше чем в наличии у транзитного поставщика "Quantity does not match MinCount" - количество не соответствует кратности товара "Undefined Error" – невозможно добавить позицию по другим причинам |
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetBasket |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
||||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
Если в корзине не будет ни одной позиции, то ответ будет таким: [] |
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/ChangeBasketPositionComment?positionId={positionId}&comment={comment} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) comment – Новый комментарий (String) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/ChangeBasketPositionCount?positionId={positionId}&count={count} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) count – Новое количество (Short) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/RemoveBasketPosition?positionId={positionId} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
Если в корзине не будет ни одной позиции, то ответ будет таким: [] |
HTTP метод |
POST |
|||
URL запроса |
/SearchService/ClearBasket |
|||
Заголовки запроса |
Authorization: Basic {credentials} |
|||
Параметры запроса |
||||
Ответ |
JSON объект следующей структуры:
|
HTTP метод |
POST |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetCheckoutParams |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON объект следующей структуры:
Object Deliveries коллекция объектов следующей структуры:
Object Payments коллекция объектов следующей структуры:
Object Params
Object Points коллекция объектов следующей структуры:
Object Addresses коллекция объектов следующей структуры:
|
HTTP метод |
POST |
||||||||||||
URL запроса |
/SearchService/CheckoutBasket?positionIds={positionIds}&deliveryTypeId={deliveryTypeId}&paymentTypeId={paymentTypeId}&addressId={addressId}&deliveryPointId={deliveryPointId}&comment={comment} |
||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
||||||||||||
Параметры запроса |
positionIds – список id позиций из корзины для заказа (Int) |
||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Запросы осуществляются с помощью HTTP-методов GET
Для запросов требуется преобразовать ваш логин и пароль вида «Login:Password» в стандарт Base64 и подставить в {credentials}
В итоге, строка авторизации должна иметь вид как представлено ниже.
Пример кода на C#:
return "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(Login + ":" +Password));
Для параметра withoutTransit допустимы только значения true/false. 0 и 1 не являются допустимыми с точки зрения c# для типа bool (System.Boolean
).
Также обратите внимание, что артикулы, бренды и прочие параметры URL-адреса нужно кодировать, чтобы передавались они верно. В нашем примере используется
HttpUtility.UrlEncode
Пример кода для автоматического оформления заказа:
HttpClient client = new HttpClient(); string lp = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + ":" + password)).ToString(); Uri url = new Uri("https://www.westoil.ru/SearchService/AddOrder?items=" + HttpUtility.UrlEncode(items)); client.BaseAddress = url; client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", lp); var response = client.GetAsync(url).Result;
Возможные ошибки