Михаил Воронов
Веб-разработчик

Список оказываемых услуг

  • Разработка модулей для OpenCart и DLE

    Устал искать нужный модуль? Закажи его разработку.

    Далеко не всегда готовые модули могут решить все ваши задачи и куда проще заказать индивидуальную разработку, чем пытаться найти того, кто доработает чужой код. У этого решения есть целый ряд очевидных преимуществ:

    1) Каждый модуль разрабатывается под определённый сайт с учётом всех ваших требований.
    2) Каждая деталь тщательно продумывается и согласовывается.
    3) Весь разработанный функционал проходит тестирование, все недочёты устраняются.

    Да, удовольствие не из дешёвых, зато сэкономит Вам кучу времени и нервных клеток, а результат Вас несомненно порадует. К тому же, на все мои разработки распространяется бессрочная техническая поддержка. В любой момент времени Вы сможете обратиться ко мне за нужными доработками и я с радостью их выполню. Разумеется, не бесплатно.

    А как насчёт доработки уже готовых модулей?

    Доработками чужого кода я не занимаюсь, также как и установкой или настройкой купленных Вами модулей - с этим обращаться ко мне бесполезно. Исключительно разработка и последующая техническая поддержка.

    Стоимость разработки.

    Стоимость разработки любого дополнительного функционала для OpenCart/DLE начинается от 3.000 ₽

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

  • Подключение поставщиков к интернет-магазинам на OpenCart

    Подключу, наполню и настрою автоматическое обновление.

    Являетесь счастливым обладателем интернет-магазина на OpenCart/ocStore?
    Требуется наполнить магазин товаром от поставщика?
    Доверьте это профессионалу.

    Мои личные наработки позволяют быстро подключить любого поставщика, настроить импорт товаров в базу данных из файла выгрузки, через API или попросту спарсить их с сайта-донора. При необходимости, изображения товаров будут загружены на сервер магазина. Последующая установка скрипта на запуск по раписанию позволит автоматически обновлять цены, остатки и прочую необходимую информацию.

    Почему не стоит покупать готовый модуль.

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

    Разработчик модуля, разумеется, заниматься этим не станет, а найти толкового специалиста, знакомого с устройством конкретного модуля, не так и просто, как кажется. Да ко всему, придётся докупить ещё пару модулей, чтобы всё нормально работало. Но зачем?

    Зачем все эти заморочки, если можно заказать услугу под ключ у меня и не париться? Всё ещё думаете, что покупка готового модуля обойдётся дешевле? Ну что же, попытайте счастье.

    Стоимость услуги.

    Наполнение магазина товарами с настройкой автоматического обновления − от 5.000 ₽

    В некоторых случаях стоимость может быть увеличена - например, при большом кол-ве товаров или сложном парсинге. Все эти моменты обсуждаются предварительно.

  • Интеграция сайтов и сервисов между собой посредством API и Webhook

    Требуется нестандартная интеграция? Разработаем!

    Среди множества сервисов (CMS, CRM, ERP) далеко не всегда удаётся найти готовую интеграцию, которая позволит передавать нужные данные в нужном формате в том или ином направлении. И тут на помощь прихожу я.

    Я могу интегрировать практически любые сайты и сервисы между собой при наличии с их стороны необходимых инструментов (API, Webhook), а также документации. Но я не разрабатываю встроенные интеграции, то есть расширения под вашу CMS/CRM. Все интеграции представляют собой независимый скрипт, о котором речь пойдёт ниже.

    Что же из себя представляет независимая интеграция.

    Независимая интеграция - это отдельный скрипт-коннектор, некий посредник между несколькими точками, который может получать информацию от одной из них, обрабатывать и передавать в другую. Наглядная блок-схема позволит Вам быстро понять этот процесс.

    Интеграция при помощи API и Webhook

    После оконачания работы и получения оплаты скрипт размещается на вашем сервере, все адреса запросов и данные для подключения перенастраиваются в рабочий режим. При необходимости, я всегда помогу с выбором подходящего хостинга для размещения скрипта.

    С какими движками и сервисами я работаю.

    Как говорилось выше - практически с любыми. Tilda, Bitrix, Opencart, Wordpress, Prestashop, Modx, Bitrix24, RetailCRM, AmoCRM, Yclients, Iiko, 1C, МойСклад, сервисы Яндекса, Гугла, Вконтакте и множество других. Малоизвестные сервисы, при наличии технической возможности с их стороны, также могут быть подключены.

    Стоимость интеграции.

    Стоимость начинается от 3.000 ₽ и увеличивается в зависимости от сложности выполнения той или иной задачи. Например, простая передача данных из формы лендинга/сайта в CRM обойдётся Вам в минимальную стоимость.

    Оценка любой задачи производится мной только при наличии всех необходимых доступов. Мне не важно будет это рабочий аккаунт/сайт или же тестовый, мне важно посмотреть структуру данных. Не можете предоставить доступы, не тратьте понапрасну моё и своё время.

  • Разработка веб-сервисов для личных целей и внутренних нужд компании
  • Разработка чат-ботов для Telegram

Преимущества работы со мной

  • Я не являюсь посредником и всю работу выполняю лично
  • Строго соблюдаю оговоренные сроки
  • Пишу чистый структурированный код
  • При разработке тщательно продумываю архитектуру и логику
  • Оказываю последующую техническую поддержку

Стек используемых технологий

  • PHP, MySQL, HTML (Twig), CSS (Bootstrap), JavaScript (jQuery)
  • CURL, XPath, Proxy, AntiCaptcha, Headless Chrome
  • API (REST, SOAP), Swagger UI

Портфолио

Модуль подбора аккумулятора по марке автомобиля
[OpenCart] Модуль подбора аккумулятора по марке автомобиля
Подключение и настройка поискового движка Sphinx
[DLE] Подключение и настройка поискового движка Sphinx
Автоматизация действий в системе МойСклад
[API] Автоматизация действий в системе МойСклад
Редизайн сайта аренды квартир
[DLE] Редизайн сайта аренды квартир
Смотреть все работы

Отзывы

Михаил Ефименко - 11.11.2019
за выполнение заказа Разработать панель мониторинга данных Битрикс24 и телефонии
Оперативно разобрался и решил задачу.
Дмитрий Алексеев - 30.09.2019
за выполнение заказа Доработка парсера php
Всё сделано на высшем уровне, рекомендую к сотрудничеству.
Vladimir 009 - 26.09.2019
за выполнение заказа Сделать постбек для CPA сетки
Задание было выполнено очень оперативно, всем рекомендую!
lewanchuk - 20.09.2019
за выполнение заказа Помочь с переводом OpenCart
Все четко и быстро. Справился за 10 минут.
Александр Солодухин - 18.09.2019
за выполнение заказа Модуль опросов для ocstore
Отличная работа, отличный модуль. Были учтены все требования.
Читать все отзывы

Образцы кода

HTML
CSS
JS
PHP
<!DOCTYPE html>
<html lang="ru">
    <head>
        <title>Курс рубля по отношению к выбранной валюте</title>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link rel="stylesheet" href="./common.css">
    </head>
    <body>
        <p>Выберите валюту и нажмите на кнопку:</p>
        <p>
            <select name="currency">
                <option value="">---</option>
                <option value="AUD">Австралийский доллар</option>
                <option value="AZN">Азербайджанский манат</option>
                <option value="GBP">Фунт стерлингов Соединенного королевства</option>
                <option value="AMD">Армянских драмов</option>
                <option value="BYN">Белорусский рубль</option>
                <option value="BGN">Болгарский лев</option>
                <option value="BRL">Бразильский реал</option>
                <option value="HUF">Венгерских форинтов</option>
                <option value="HKD">Гонконгских долларов</option>
                <option value="DKK">Датских крон</option>
                <option value="USD">Доллар США</option>
                <option value="EUR">Евро</option>
                <option value="INR">Индийских рупий</option>
                <option value="KZT">Казахстанских тенге</option>
                <option value="CAD">Канадский доллар</option>
                <option value="KGS">Киргизских сомов</option>
                <option value="CNY">Китайских юаней</option>
                <option value="MDL">Молдавских леев</option>
                <option value="NOK">Норвежских крон</option>
                <option value="PLN">Польский злотый</option>
                <option value="RON">Румынский лей</option>
                <option value="XDR">СДР (специальные права заимствования)</option>
                <option value="SGD">Сингапурский доллар</option>
                <option value="TJS">Таджикских сомони</option>
                <option value="TRY">Турецкая лира</option>
                <option value="TMT">Новый туркменский манат</option>
                <option value="UZS">Узбекских сумов</option>
                <option value="UAH">Украинских гривен</option>
                <option value="CZK">Чешских крон</option>
                <option value="SEK">Шведских крон</option>
                <option value="CHF">Швейцарский франк</option>
                <option value="ZAR">Южноафриканских рэндов</option>
                <option value="KRW">Вон Республики Корея</option>
                <option value="JPY">Японских иен</option>
            </select>
            = <span id="rub_value">???</span> RUB
        </p>
        <p><button type="button" name="get_course">Получить курс</button></p>

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="./function.js"></script>
    </body>
</html>
@import url('https://fonts.googleapis.com/css?family=Roboto:400,700');

body {
    margin: 0;
    padding: 10px 20px;
    font-family: Roboto, Arial, sans-serif;
    font-size: 14px;
    line-height: 19px;
}
p {
    margin: 10px 0;
}
select {
    width: 190px;
}
button {
    margin-top: 5px;
}
$('button[name="get_course"]').on('click', function() {
    var currency = $('select[name="currency"]').val();
    
    if (!currency) {
        alert('Выберите валюту.');
    } else {
        $('#rub_value').text('???');
        $('button[name="get_course"]')
            .attr('disabled', 'disabled')
            .data('text', $('button[name="get_course"]').text())
            .text('Выполняем...');
        
        $.get('./get_course.php', {'currency': currency}, function(result) {
            if (result.error) {
                alert(result.error);
            } else {
                $('#rub_value').text(result.data);
            }
        }, 'json');
        
        $('button[name="get_course"]')
            .removeAttr('disabled')
            .text($('button[name="get_course"]').data('text'));
    }
});
<?php
/**
* Get content by CURL
* 
* @param string $url
* 
* @return string|null
*/
function getContent($url) {
    $curl_opts = [
        CURLOPT_URL => $url,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true
    ];
    
    $ch = curl_init();
    curl_setopt_array($ch, $curl_opts);
    $content = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($http_code != '200') {
        $content = null;
    }
    
    return $content;
}

$output = [];
$currency = !empty($_GET['currency']) ? $_GET['currency'] : '';

if (!$currency) {
    $output['error'] = 'Валюта не выбрана.';
} else {
    $data = getContent('http://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d/m/Y'));

    if (!$data) {
        $output['error'] = 'Данные не могут быть получены, повторите попытку позднее.';
    } else {
        $xml = simplexml_load_string($data);
        
        foreach ($xml->Valute as $valute) {
            if ($valute->CharCode == $currency) {
                $value = (float)str_replace(',', '.', $valute->Value);
                $value = round($value, 2);
                $output['data'] = str_replace('.', ',', $value);
                
                break;
            }
        }
        
        if (!isset($output['data'])) {
            $output['error'] = 'Валюта не найдена.';
        }
    }
}

echo json_encode($output);

Данный код получает текущий курс рубля по отношению к выбранной валюте, используя XML-API ЦБ РФ.
Код полностью рабочий. Демо-версия примера доступна по ссылке https://voronoff.dev/demo/index.html