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. Превышена кредитная линия.

The product has been added to cart
The product was not added. The price is zero.