README

Всё то, что доступно на сайте, можно получить в виде JSON (включая курсы валют, продукцию, цены).

Информация предназначена для облегчения работы. Всё это вы можете получить с API компании BRAIN Computers. Но, т.к. работать с ним затруднительно... впрочем, каждому своё.


Для получения информации нужно зарегистрироваться на сайте.


Мы написали небольшой класс для облегчения доступа: apiplus.php
https://github.com/fswitch/apiplus
Свободно подключается к любому скрипту и вытягивает для вас нужную информацию.
E-mail и пароль, разумеется, должны быть изменены на ваши.
Пароль - это md5 вашего пароля с этого сайта.


<?php
include(dirname(__FILE__).'/apiplus.php');
$email = 'test-mail@mail.tld';
$password_md5 = 'e10adc3949ba59abbe56e057f20f883e'; // md5('123456');

$AP = new apiplus();

// authorize to get SID
$try = $AP->_api_auth($email, $password_md5);
// example of answer
// error: {"error":1,"msg":"You posted wrong email and/or password"}
// no error: {"error":0,"msg":"You logged in","sid":"c33367701511b4f6020ec61ded352059"}

if ($try['error'] == 0){
    $sid = $try['sid'];
} else {
    die('can\'t authorize');
}
?>

Теперь у вас есть собственный идентификатор сессии.
Можно получить остальную информацию. Например, категории:

<?php
// get categories
$try = $AP->_categories($sid);
?>

Теперь, если все прошло успешно, в переменной $try содержится подобный массив:


Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [categories] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [parent] => 175
                    [real_id] => 0
                    [title] => APC
                    [last_prod_id] => 264614
                    [count] => 127947
                    [count_prod] => 0
                )

            [1] => stdClass Object
                (
                    [id] => 1037
                    [parent] => 1354
                    [real_id] => 0
                    [title] => Wi-Fi карты и адаптеры
                    [last_prod_id] => 255663
                    [count] => 102
                    [count_prod] => 103
                )

            [2] => stdClass Object
                (
                    [id] => 1038
                    [parent] => 1308
                    [real_id] => 0
                    [title] => Акустические системы
                    [last_prod_id] => 263826
                    [count] => 822
                    [count_prod] => 1206
                )
        )
)

Точно таким же образом можем получить и производителей (вендоров):

<?php
// get vendors
$try = $AP->_vendors($sid);
?>

и получаем в $try нечто вроде следующего:


Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [vendors] => Array
        (
            [1638] => stdClass Object
                (
                    [id] => 2
                    [title] => SONY
                )

            [1639] => stdClass Object
                (
                    [id] => 371
                    [title] => SONY NEC OPTIARC
                )

            [1640] => stdClass Object
                (
                    [id] => 1319
                    [title] => SonyEricsson
                )
        )
)

Получение курсов валют:

<?php
// get currency
$try = $AP->_currency($sid);
?>

Переменная $try будет содержать следующую структуру

Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [currency] => stdClass Object
        (
            [date] => 2016-12-24
            [privatbank_usd_buy] => 26.70000
            [privatbank_usd_sell] => 27.20000
            [nbu_usd_buy] => 26.28601
            [nbu_usd_sell] => 26.28601
            [brain_usd_buy] => 26.40000
            [brain_usd_sell] => 26.40000
        )

)

Есть возможность получить идентификаторы продуктов, содержащихся в категории.

<?php
// get product IDs in category (second parameter is the ID of category 1191)
$try = $AP->_prod_ids_category($sid,1191);
?>

Переменная $try будет содержать следующую структуру


Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [products] => Array
        (
            [0] => 216731
            [1] => 216649
            [2] => 216647
            [3] => 216646
            [4] => 33916
            [5] => 34750
            [6] => 34837
            [7] => 35079
            [8] => 35083
        )
)

Можно получить обновленные продукты за сегодня, за вчера, ..., за 7 дней до сегодня

<?php
// get updated products IDs for single day (0 - today, 1 - yesterday, ..., 7 - seven days ago)
$try = $AP->_products_updates($sid,0);
?>

Переменная $try будет содержать следующую структуру


Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [products] => Array
        (
            [0] => 1967
            [1] => 84278
            [2] => 102802
            [3] => 102804
            [4] => 161107
            [5] => 103492
            [6] => 89023
            [7] => 101363
            [8] => 110422
            [9] => 110423
            [10] => 9236
            [11] => 82469
            [12] => 102289
            [13] => 98907
            [14] => 95109
            [15] => 95110
            [16] => 95156
            [17] => 95176
            [18] => 95179
            [19] => 95184
        )
)

По этим идентификаторам продуктов можно получить и сами продукты:

<?php
// get product from remote server by product ID
$try = $AP->_product($sid, $prod_id);
?>

Переменная $try будет содержать ответ в виде продукта

Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [product] => stdClass Object
        (
            [prod_id] => 1967
            [title] => USB флеш накопитель 8Gb JetFlash 560 Transcend (TS8GJF560)
            [cat_id] => 1180
            [padd] => 1344375340
            [pupdate] => 1482600933
            [brief_description] => <p>8 Gb, USB 2.0, металл, черный</p>
            [description] => <div>
            TRANSCEND JetFlash 560 (TS8GJF560) - флэш-накопитель, оснащенный интерфейсом USB 2.0. По мнению производителя, "новинка выглядит просто, но стильно".<br><br>Металлический корпус TRANSCEND JetFlash 560 серебристого оттенка украшен шахматным узором. Новинке не страшны падения и тряска, поскольку при изготовлении корпуса применена технология ультразвуковой сварки.<br><br>Особенностью конструкции JetFlash 560 является выдвижной разъем USB. Это позволяет защитить разъем от загрязнения и поломки, одновременно устраняя риск потери съемного колпачка.<br><br>Скорость чтения TRANSCEND JetFlash 560 (TS8GJF560) во всех случаях равна 18 МБ/с, а скорость записи зависит от объема. Младшая модель развивает скорость 6 МБ/с, накопители объемом 8 и 16 ГБ способны записывать данные со скоростью 10 МБ/с.            
        </div>
            [product_code] => ET07951
            [picture] => http://brain.next.in.ua/static/images/products/51/ET07951_big.jpg
            [images] => Array
                (
                    [0] => http://brain.next.in.ua/static/images/products/51/ET07951_big.jpg
                )

            [warranty] => 60
            [vendorID] => 31
            [vendor_code] => TS8GJF560
            [options] => stdClass Object
                (
                    [Максимальная скорость записи] => 10 Мбайт/сек
                    [Интерфейс] => USB 2.0
                    [Максимальная скорость чтения] => 18 Мбайт/сек
                    [Объем памяти] => 8 Gb
                    [Тип] => С выдвижным USB, Высокоскоростные, Стильные и гламурные
                    [Артикул] => TS8GJF560
                    [Модель] => 8Gb JetFlash 560
                    [Производитель] => Transcend
                    [Материал корпуса] => металл
                    [Физические размеры] => 45.2 x 23 x 8.5 мм
                    [Вес] => 7 г
                    [Цвет] => черный
                    [Страна производства] => Тайвань
                    [Гарантия, мес] => 60
                )

        )

)

Также можно загрузить к себе картинки:

<?php
if (!empty($product->images))
{
    $imgs = array();
    foreach ($product->images as $img)
    {
        // first parameter - image URI
        // second parameter - path to file, where image sould be downloaded
        $ret = $AP->_download_image($img,$saveimagesdir.'/'.$imgdir.'/'.basename($img));
        if ($ret){
            $imgs[] = basename($img); // name of downloaded image
        }
    }
    $product->images = $imgs; // array of downloaded images
}

if (!empty($product->picture)) 
{
    $ret = $AP->_download_image($product->picture,$saveimagesdir.'/'.$imgdir.'/'.basename($product->picture));
    if ($ret){
        $product->picture = basename($product->picture);
    }
}
?>

Получение фильтров по идентификатору категории:

<?php
// get product from remote server by category ID
$try = $AP->_filters_all($sid,$cat_id);
?>

Переменная $try будет содержать ответ в виде фильтров категории

stdClass Object
(
    [error] => 0
    [msg] => 
    [code] => 
    [filters_all] => Array
        (
            [0] => stdClass Object
                (
                    [name] => Тип ноутбука
                    [optionID] => 216
                    [options] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [filterID] => 216-86012946200
                                    [name] => Apple
                                )

                            [1] => stdClass Object
                                (
                                    [filterID] => 216-86012969500
                                    [name] => Бизнес
                                )

                            [2] => stdClass Object
                                (
                                    [filterID] => 216-86012946000
                                    [name] => Для работы и учебы
                                )

                            [3] => stdClass Object
                                (
                                    [filterID] => 216-86012945300
                                    [name] => Игровой
                                )

                            [4] => stdClass Object
                                (
                                    [filterID] => 216-86012946100
                                    [name] => Мультимедийный центр
                                )

                            [5] => stdClass Object
                                (
                                    [filterID] => 216-86012946800
                                    [name] => Портативные
                                )

                            [6] => stdClass Object
                                (
                                    [filterID] => 216-86012946600
                                    [name] => Трансформер
                                )

                        )

                )

            [1] => stdClass Object
                (
                    [name] => Производитель
                    [optionID] => 3
                    [options] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [filterID] => 3-75001200000
                                    [name] => Acer
                                )

                            [1] => stdClass Object
                                (
                                    [filterID] => 3-83017200000
                                    [name] => Apple
                                )

                            [2] => stdClass Object
                                (
                                    [filterID] => 3-02303000000
                                    [name] => ASUS
                                )

                            [3] => stdClass Object
                                (
                                    [filterID] => 3-75001300000
                                    [name] => Dell
                                )

                            [4] => stdClass Object
                                (
                                    [filterID] => 3-75001900000
                                    [name] => Fujitsu
                                )

                            [5] => stdClass Object
                                (
                                    [filterID] => 3-75001700000
                                    [name] => HP
                                )

                            [6] => stdClass Object
                                (
                                    [filterID] => 3-75002600000
                                    [name] => Lenovo
                                )

                            [7] => stdClass Object
                                (
                                    [filterID] => 3-75002000000
                                    [name] => MSI
                                )

                            [8] => stdClass Object
                                (
                                    [filterID] => 3-75000900000
                                    [name] => SONY
                                )

                        )

                )

            [2] => stdClass Object
                (
                    [name] => Диагональ дисплея
                    [optionID] => 6615
                    [options] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [filterID] => 6615-g2830
                                    [name] => 10.1" - 12.5"
                                )

                            [1] => stdClass Object
                                (
                                    [filterID] => 6615-g2829
                                    [name] => 13.3" - 14.1"
                                )

                            [2] => stdClass Object
                                (
                                    [filterID] => 6615-g2828
                                    [name] => 15.6" - 16"
                                )

                            [3] => stdClass Object
                                (
                                    [filterID] => 6615-g2827
                                    [name] => 17.3" - 18.4"
                                )

                        )

                )
        )

)

Получение розничного прайса.

<?php
// get retail prices
$try = $AP->_prices_retail($sid);
?>

Переменная $try будет содержать ответ в виде массива цен на все товары, где ключ - идентификатор товара, а значение - розничная цена в грн.

Array
(
    [error] => 0
    [error_code] => 0
    [error_message] => 
    [prices_retail] => stdClass Object
        (
            [2] => 3397.5
            [3] => 3804
            [4] => 2388.9
            [5] => 2999.4
            [7] => 12229.5
            [8] => 6532.5
            [9] => 4371.6
            [17] => 6408.6
            [19] => 2749.5
            [23] => 372.9
            [24] => 666.3
            [26] => 921.6
            [28] => 773.1
            [30] => 421.5
        )
)