API
Документация по подключению к RESTful сервису
компании ACCENT Electronic (v201123)
* API Ключ
* API Полный справочник товаров (в том числе цены (Dealer/ONL/RTL/PROMO)
- Вспомогательный API для справочника (только интересующие группы)
* API Поиск товара
* API Свойства товара (в том числе изображения)
* API Состояние склада
* API регистрация заказов
Служба работает с 9 до 18:00.
API ключ
Чтобы получать данные, для начала нужно получить ключ для работы (Token) - GuidID. Для того чтобы получить GuidID нужно послать запрос метод POST по адресу
http://b2brestful.accent.md:8090/loginuser/getid
В теле запроса в JSON формате должно быть следующая информация
{
"userlogin": "TestAPIUser",
"userpassword": "7BC1RD774809EFED8A40D9D00EF1E046"
}
В примере 7BC1RD774809EFED8A40D9D00EF1E046 - Это хэш MD5 который вычисляется как Логин+Пароль
После отправки запроса, если все данные правильные получите следующий ответ:
{
"code": 1,
"name": "TestUser",
"fullName": "Ivan Petrov",
"guid": "910ae0a55d98dc794dcc36d2e6a97973",
"guidTime": "2018-11-07T18:47:32.717+0000",
}
Далее во всех следующих запросах нужно использовать полученный guid. GuidID имеет срок жизни, на текущий момент это 9 часов, т.е. его нужно запрашивать ежедневно.
API - полный справочник товаров
Для получения полного списка товаров нужно послать запрос - http://b2brestful.accent.md:8090/hard/{guidid}
В результате получаем полный список товаров, вот пример ответа
[
{
"code": 22059,
"hardnum": null,
"hardname": "CONSUMER NOTEBOOKS",
"lastprice": null,
"isfolder": 1,
"parentcode": null,
"transaction_id": 3723152,
"inpricelist": 1,
"treelevel": 0,
"weight": null,
"netweight": null,
"placeqty": null,
"price1": null,
"dprice1": null,
"onlineprice": null,
"retailprice": null,
"promoprice": null,
"promopricevalute": null,
"imagesqty": null,
"imagesList ": null
},
…..
…..
{
"code": 80154,
"hardnum": "20RR003URU",
"hardname": "Lenovo ThinkBook 13s-IML 13.3\" FHD IPS AG 300 nits (Intel Core i7-10510U, 1x16GB DDR4, 512GB SSD M.2 2242 PCIe NVMe, 11ac 2x2 + BT5.0, Intel® UHD Graphics, TPM, FPR, Backlit KB, 45Wh BT, Win10Pro, Aluminum, 1.4kg)",
"lastprice": null,
"isfolder": null,
"parentcode": 78384,
"transaction_id": 4741308,
"inpricelist": 1,
"treelevel": 3,
"weight": null,
"netweight": null,
"placeqty": 1.0,
"price1": 1044.0,
"dprice1": 995.0,
"onlineprice": 17969.0,
"retailprice": 18290.0,
"promoprice": 1200,
"promopricevalute": "MDL",
"imagesqty": 4,
"imagesList": "img80154_1.jpg,img80154_2.jpg,img80154_3.jpg,img80154_4.jpg"
},
В данном примере основные используемые поля
"code": - уникальный код товара
"hardnum":- Артикул товара (тот же что в прайс листе)
"hardname":- Наименование товара
"lastprice":- Цена клиента, (в будущем будет отображать цену согласно скидкам и акциям)
"isfolder":- Если 1 означает что группа товаров
"parentcode":- Код группы товаров, т.е. какой группе принадлежит товар или группа
"transaction_id":- Это код последнего изменения товара, используя этот код можно делать запрос только последних изменений
"inpricelist":- Если 1 означает, что товар предназначен для продажи
"treelevel":- уровень товара в группе или подгруппе
"price1":- Цена А
"dprice1":- Цена Б
"onlineprice":- Цена Online
"retailprice":- Цена Retail
"promoprice":- Рекомендованная Цена для продажи
"promopricevalute":– Валюта рекомендованной Цены для продажи
"imagesqty":- Количество картинок у товара
"imagesList":- Перечень наименования картинок, разделённых запятой
Чтобы получить полный адрес картинки нужно к наименованию файла добавить ftp://ftp.accent.md/aeimages/
Пример ftp://ftp.accent.md/aeimages/img80154_1.jpg
Вспомогательный API для справочника товаров
Позволяет обрабатывать только интересующие группы
1. http://b2brestful.accent.md:8090/hard/{guidid}/folders
Это метод возвращает только список папок( или категорий) товаров
2. http://b2brestful.accent.md:8090/hard/{guidid}/filterbyparent/{parentcode}
Для получения списка товаров из указанной папки, код папки в поле {parentcode}
3. http://b2brestful.accent.md:8090/hard/{guidid}/modified/{last_transaction_id}
Для получения списка товаров изменённых после последнего чтения.
Пояснение: если обработать полный список справочника товаров и найти максимальное значение поля transaction_id и сохранить его, то в следующий раз можно запросить список последних изменений, указав в запросе {last_transaction_id}, сохранённое ранее значение в результате будет получен только список изменений, что может сократить обработку справочника в разы.
API - поиск товара
2 метода для поиска товара
Вариант 1
http://b2brestful.accent.md:8090/hard/{guidid}/filterbyarticul
в теле письма указывается код товара
{
"artucul": "1RQ74EA#ACB"
}
Вариант 2
http://b2brestful.accent.md:8090/hard/{guidid}/filterbyid
в теле письма указывается ID товара
{
"id": 68646
}
API свойства товара
Для получения списка свойств товара необходимо осуществить запрос
http://b2brestful.accent.md:8090/hardproperty/{guidid}/productid/{code}
API состояние склада
Чтобы получить состояние склада определённого товара, возвращается только 0 или 1, т.е. есть или нет
Есть 2 способа
1. http://b2brestful.accent.md:8090/stockstate/{guid}/productcode
в теле запроса нужно указать код/артикул товара, пример:
{
"articul": "CPU i5-8400T"
}
2. http://b2brestful.accent.md:8090/stockstate/{guidid}/productid/{hardnum}
В поле {hardnum} нужно передать код товара из поля CODE, который получаешь выше из списка товаров.
3. http://b2brestful.accent.md:8090/stockstate/{guidid}/modifiedfrom/{last_transaction_id}
В поле { last_transaction_id } нужно передать максимальное значение прежнего списка состояния склада, Т.е. с помощью этого запроса можно получить полное состояние склада в виде списка в первый раз
передав в качестве last_transaction_id = 0, обработав результат сохранить максимальный transaction_id. А в следующий раз запросить только изменения состояния склада.
После запроса получишь ответ следующего содержания
[
{
"code": 72457,
"qty": 0,
"oqty": 1,
"transaction_id": 12131
}
]
Code : код товара
Qty :0 – означает что товара нет на складе; 1 – что товар есть.
Oqty:1 – означает что под заказа 1-5 дней
API для регистрации заказов
1. Для получения списка заявок нужно сделать запрос GET
http://b2brestful.accent.md:8090/orders/{guidid}
Если в теле запроса ничего не будет, будет возвращён список всех ваших заказов
В теле запроса также можно указать фильтр на период
{
"datefrom": "01.01.2020",
"dateto": "11.01.2020"
}
2. Для получения подробной информации об определённом заказе нужно сделать запрос GET
http://b2brestful.accent.md:8090/orders/{guidid}/getorder
В теле запроса необходимо указать либо внутренний код заказа, либо GUID заказа
{
"ordercode": 8619
}
Или
{
"orderguid" : "6a388981-bdc2-4b09-9c6d-45e61c2d4009"
}
Вариант ответа системы
{
"result": "OK",
"ordertable": [
{
"docclientordercode": 8619,
"linenum": 1,
"hardnum": "CUH-2216A",
"hardname": "Game Console Sony Playstation 4 Slim 500GB Black, 1 x Gamepad (Dualshock 4)",
"hardcode": 68094,
"qty": 4.0,
"confirmqty": null,
"price": 359.0000,
"vatpercent": 20.00,
"amount": 1436.00,
"amountvat": 239.33,
"amountmaincc": null,
"lineidx": 1,
"clientconfirmed": null,
"uuid": "0CB91A1D-4392-47EF-A3C0-A78FC07257E2"
},
{
"docclientordercode": 8619,
"linenum": 2,
"hardnum": "LY-PP5-05",
"hardname": "Patch Panel LY-PP5-05 Category 5e, 24 port",
"hardcode": 62219,
"qty": 3.000,
"confirmqty": 1.000,
"price": 5.0000,
"vatpercent": 20.00,
"amount": 15.00,
"amountvat": 2.50,
"amountmaincc": null,
"lineidx": 2,
"clientconfirmed": null,
"uuid": "B2AFFF23-9C18-40F1-94C3-EAC1183E5BF5"
},
],
"order": {
"code": 8619,
"docdate": "22.10.2020",
"amount": 1451.00,
"amountcc": 0,
"docnum": "8619",
"deliveryaddress": null,
"notes": "TestTest",
"sitedocid": "232323",
"guid": "6a388981-bdc2-4b09-9c6d-45e61c2d4009",
"proccesedtime": null,
"inprocess": null,
"orderstate": 4,
"invoicehttplink": null,
"createdtime": "22.10.2020 10:54:34"
}
}
3. Для создания нового заказа нужно отправить запрос POST
http://b2brestful.accent.md:8090/orders/{guidid}/createorder
В теле запроса должно содержаться следующая информация
"guid": - GUID заказа( уникальный код заранее сгенерированный)
"notes" – Комментарии заказа
В массиве orderlines нужно указать внутренний Код товара или его артикул через поля "hardcode" (type Integer) или "artucul" (type String) соответственно. Количество товара в поле “qty” (type Decimal)
Пример тела запроса
{
"notes": "TestTest",
"guid": "6a388981-bdc2-4b09-9c6d-45e61c2d4438",
"orderlines":[
{
"articul": "CUH-2216A",
"qty":120.000
},
{
"hardcode":62219,
"qty":3.000
}
]
}
В случае удачного создания заказа будет возвращен ответ в котором будет поле “Result”: “OK“, а также внутренний код заказа
Пример ответа
{
"result": "OK",
"ordercode": 8619
}
В случае неудачи при создании заказа ответа не будет.
4. Для удаления существующего заказа нужно отправить запрос DELETE
http://b2brestful.accent.md:8090/orders/{guidid}/deleteorder
где в теле запроса можно указать код заказа или его GUID
{
"ordercode": 8619
}
Или
{
"orderguid" : "6a388981-bdc2-4b09-9c6d-45e61c2d4009"
}
В случае успешного удаления заказа будет возвращён ответ с полем “Result”: “OK“,
Если произошла ошибка при удалении, будет возвращено сообщение об ошибке.
5. Для того чтобы запустить процесс покупки товара из заказа необходимо послать запрос POST
http://b2brestful.accent.md:8090/orders/{guidid}/purchase
Где в теле запроса можно указать код заказа или его GUID
{
"ordercode": 8619
}
Или
{
"orderguid" : "6a388981-bdc2-4b09-9c6d-45e61c2d4009"
}
В случае успешного выполнения процедуры будет возвращён ответ с полем “Result”: “OK“,
Запуск процедуры предусматривает проверку наличия товара на складе, кредитных условий клиента, и прочие условия. После завершения проверок (обычно это может длиться от 1 до 2 мин) система установит в заказе поля confirmqty по следующему условию
1. Confirmqty = 0 – если система отказала в покупке товара, по ряду причин,
Среди основных это отсутствие товара на складе, или превышена кредитная линия клиента
2. Confirmqty = qty – в случае успешного приобретения заказанного количества
3. Confirmqty < qty – в случае если на складе оказалось меньше заказанного товара.
В случае когда заказанное количество совпало с подтверждённым количеством. Система автоматически установить поле clientconfirmed =1. Это означает, что эти позиции уже невозможно будет удалить из заказа. В случае если запрошенное количество не совпало с подтверждённым поле clientconfirmed = null. В этом случае эти строки можно либо удалить из заказа либо подтвердить, что вы согласны купить это количество.
Для этого необходимо послать запрос POST
http://b2brestful.accent.md:8090/orders/{guidid}/purchaseconfirm
и в теле запроса указать код или номер заказа и в массиве номера строк заказа (поле “linenum” или uuid строки ) которое вы подтверждаете
Пример тела
где в теле запроса нужно указать код заказа или его GUID
{
"orderguid" : "6a388981-bdc2-4b09-9c6d-45e61c2d4009",
"orderlines":[
{
"linenum": 2,
"uuid": "B2AFFF23-9C18-40F1-94C3-EAC1183E5BF5"
}
]
}
В случае удачного подтверждения заказа будет возвращен ответ в котором будет поле “Result”: “OK“
6. Добавление товара в незакрытый / неотправленный на выдачу со склада заказ
Запрос POST http://b2brestful.accent.md:8090/orders/{guidid}/appendtoorder
где в теле запроса нужно указать ваш guid заказа и параметры для добавления товара. Список параметров идентичны тем что и при создании заказа.
{
"guid": "6a388981-bdc2-4b09-9c6d-45e61c2d4438",
"orderlines":[
{
"articul": "CUH-2216A",
"qty":120.000
},
{
"hardcode":62219,
"qty":3.000
}
]
}
В случае удачного добавления будет возвращен ответ в котором будет поле “Result”: “OK“, а также количество добавленных позиций
Пример ответа
{
"result": "OK",
" message": "append 2 record(s)"
}
В случае неудачи будет возвращена ошибка.
7. Завершающий этап покупки заказа это отправка запроса для выдачи товара со склада
Запрос POST
http://b2brestful.accent.md:8090/orders/{guidid}/close
где в теле запроса нужно указать код заказа и способ доставки (самовывоз или указание адреса для доставки)
Пример тела запроса
{
"orderguid" : "6a388981-bdc2-4b09-9c6d-45e61c2d4009",
"deliverytype": 2,
"deliveryaddress": "mun. Chisinau, str. Stefan cel mare 1, off 1",
"contactperson": "Vasile Cazacu",
"contactphone": "+373 4040xxxxxxx"
}
Поле “deliverytype” = 1, в случае самовывоза товара, в случает если клиент желает доставку товара, необходимо указать deliverytype=2, и указать адрес доставки, контактное лицо и номер телефона.
В случае успешного завершения запроса, система вернёт ответ “Result”: “OK“
Если заказ не завершен, по каким ли причинам, заявка не будет закрыта. Одними из основных условий отказа в закрытии заказа может быть следующее
1. Наличие неподтверждённых строк в заказе, поле clientconfirmed=null
2. Заказ отменён
3. Превышена кредитная линия.