Архивы 2025

Услуга Создание калькулятора займов для МФО

На данном сайте вы можете заказать услугу по созданию калькулятора займов для микро кредитных организаций.

Обратитесь по Контактам и мы обсудим детали.

Почему калькулятор займов – не опция, а необходимость?

  1. Повышение конверсии на 30-50%
    Клиенты не любят заполнять формы без понимания условий. Калькулятор дает мгновенный расчет «на месте», мотивируя оформить заявку.
  2. Сокращение нагрузки на колл-центр
    80% типовых вопросов («Сколько я заплачу за 10 000 рублей на 3 месяца?») решаются автоматически.
  3. Прозрачность = доверие
    Четкий расчет процентов, комиссий и полной суммы погашения снижает риски недовольства и отказов после одобрения.
  4. Адаптивность под ваши продукты
    Индивидуальные ставки, акции (например, «0% на первый займ»), штрафы за просрочку – все это можно учесть в настройках.

Как работает калькулятор?

Пользователь перемещает ползунки со сроком займа и заемными деньгами. Система мгновенно выдает:

  • Размер еженедельного/ежемесячного платежа,
  • Полную сумму к возврату,
  • Размер переплаты в рублях и процентах,
  • Детализацию по процентам и комиссиям.

Пример расчета:
Сумма: 15 000 руб. Срок: 20 дней . Ставка: 1% в день
Платеж: 18 000 руб.
Переплата: 3 000 руб.

Преимущества наших калькуляторов для МФО:

  • Интеграция за 1 день
    Готовый код для вставки в сайт на любом CMS (WordPress, Bitrix, Joomla).
  • Кастомизация под ваш бренд
    Цвета, шрифты, логотипы – калькулятор станет частью дизайна сайта.
  • Мобильная версия
    Адаптивность под смартфоны (60% заявок поступают с мобильных устройств!).
  • Гибкие настройки
    Возможность добавить:
  • Промокоды и акционные ставки,
  • «Безопасные» лимиты (чтобы автоматически предупреждать о высоких переплатах),

Закажите разработку калькулятора займа сегодня – и уже завтра ваш сайт начнет работать эффективнее!

Демо версия 1

Демо версия 2

Демо версия 3

Обсудить проект


Как я создавал калькулятор займов для микрокредитных организаций

Меня зовут Антон , я fullstack-разработчик. Сегодня расскажу, как создавал калькулятор микрокредитов для финансовых организаций. Проект оказался сложнее, чем казалось изначально — но результат того стоил.

Зачем это нужно?

Микрокредитная организация (МФО) столкнулась с проблемой: клиенты не понимали условий займа. Требовался инструмент, который:

  • Рассчитывает платежи с учётом сложных процентов
  • Адаптируется под мобильные устройства (70% трафика МФО — смартфоны)
  • Необходимо интегрировать в разные CMS системы, в данном случае в Bitrix CMS.

Стек технологий

  • Backend: PHP 8.1
  • Frontend: HTML/CSS/JS . Интеграция в Bitrix CMS.

Создал 3 различных варианта калькулятора:

Первый калькулятор

Второй калькулятор

Третий калькулятор

Затем произвел финансовое тестирование , по требованиям заказчика.

Что получилось:
Калькулятор работает пока в 1 МФО.

Изначально уже был код одного из готовых калькуляторов на Bitrix CMS.

C помощью Deepseek сделал обратный промт инжиниринг из готового калькулятора :

Создай PHP/HTML/CSS/JS виджет калькулятора займов со следующими характеристиками:
Базовые требования:
Получение данных о продуктах через PHP-функцию getProducts()
Адаптивный дизайн с брендовым цветом #4BB725
Интеграция библиотеки noUiSlider для ползунков
Поддержка Яндекс.Метрики (цель IRK_ORDER)
Функциональные блоки:
Скрытый селектор продуктов (с возможностью активации)
Два слайдера:
Сумма займа: диапазон 3 000 - 100 000 ₽, шаг 1 000
Срок займа: диапазон 7-168 дней, отображение в днях/неделях
Динамический расчет:
Автоматический пересчет суммы возврата
Обновление даты погашения
Логика 0% для первого займа (≤15 дней, ≤15 000 ₽)
Кнопка получения денег с динамическим временем
Информационный блок (паспорт, дата возврата, процентная ставка)
Особенности логики:
Автокоррекция значений:
Сумма >30 000 → срок = 168 дней
Срок >30 дней → сумма = 100 000 ₽
Процентная ставка:
0% для сумм ≤15 000 и сроков ≤15 дней
0.8% в остальных случаях
Фиксированные суммы возврата для длительных периодов
Технические требования:
Использование PHP для инициализации данных
Чистый CSS для стилизации ползунков
JavaScript-логика с:
Обработчиками событий ползунков
Динамическими расчетами
Автообновлением времени на кнопке
Поддержка склонений числительных (день/дня/дней)
Адаптивная верстка
Визуальные элементы:
Стилизованные ползунки с градиентным handle
Четкая типографика с акцентами
Иконки для информационного блока
Интерактивные элементы с hover-эффектами
Дополнительно: реализуй механизм сохранения выбранных значений при повторном открытии и обеспечь корректную работу при отключенном JavaScript.

Затем по этому коду был написан основной код калькулятора , примерно 600 строчек.

Код выложил на GitHub: https://github.com/Progaem-com/MFO_calculator

Вывод : Если создаёте финансовые инструменты — дважды тестируйте их выполнение ! У кого есть опыт — делитесь кейсами в комментариях.

Хотите, создать калькулятор займов для микрокредитных организаций ? Обратитесь по контактным данным на этом сайте.


СОГЛАСИЕ НА ОБРАБОТКУ ПЕРСОНАЛЬНЫХ ДАННЫХ

Я, субъект персональных данных ,_________________________________________________________
(Ф. И. О.)

зарегистрирован/а ,_____________________________________________________________________
(адрес)

_______________________________________________________________________________________

(серия и номер документа, удостоверяющего личность, кем и когда выдан)

в соответствии с Федеральным законом № 152-ФЗ «О персональных данных» свободно, в своей воле и в своем интересе, а также подтверждая свою дееспособность даю согласие progaem.com, (далее – Оператора) на обработку на следующих условиях:

  1. Данное Согласие дается на обработку персональных данных, как без использования средств автоматизации, так и с их использованием.
  2. Согласие дается на обработку следующих моих персональных данных:
    1. персональные данные, не являющиеся специальными или биометрическими: ФИО, контактный номер телефона, e-mail, никнейм в мессенджере Telegram/Whatsapp
    2. специальные категории персональных данных: нет.
    3. биометрические персональные данные: нет.
  3. Цель обработки персональных данных: Получение консультаций для заключения договора, обратная связь с работниками Оператора, ведение статистики
  4. В ходе обработки над персональными данными будут совершены следующие действия: сбор, обработка, хранение и уничтожение персональных данных.
  5. Следующие третьи лица обрабатывают предоставленные персональные данные по поручению Оператора: нет.
  6. Персональные данные могут передаваться следующим третьим лицам: нет.
  7. Данное согласие действует 10 лет.
  8. Согласие может быть отозвано субъектом персональных данных или его представителем путем направления письменного заявления по адресу, указанному в начале текста настоящего Согласия.

«__» ________ 20__ г.        ________________    /    ___________
                                                              Ф. И. О.                               Подпись


Bitrix CMS : Автоматическое добавление номеров страниц пагинации

Чтобы автоматически добавлять номера страниц пагинации в мета-теги на CMS Битрикс, можно использовать следующие подходы:

1. Решение через обработчик события (глобально для всех страниц)

Добавьте код в /bitrix/php_interface/init.php:

AddEventHandler('main', 'OnBeforeProlog', 'modifyMetaForPagination');
function modifyMetaForPagination() {
    global $APPLICATION;

    foreach ($_GET as $key => $value) {
        if (strpos($key, 'PAGEN_') === 0) {
            $pageNumber = (int)$value;
            if ($pageNumber > 1) {
                // Обработка Title
                $currentTitle = $APPLICATION->GetTitle();
                if ($currentTitle) {
                    $APPLICATION->SetTitle($currentTitle . ' - Страница ' . $pageNumber);
                }

                // Обработка Description
                $currentDesc = $APPLICATION->GetPageProperty('description');
                if ($currentDesc) {
                    $APPLICATION->SetPageProperty('description', $currentDesc . ' - Страница ' . $pageNumber);
                }
            }
            break;
        }
    }
}

Преимущества:

  • Работает для всех страниц с пагинацией.
  • Не требует изменения шаблонов компонентов.

2. Решение через шаблон компонента (например, для catalog.section)

Добавьте код в начале шаблона компонента (например, /bitrix/templates/ваш_шаблон/components/bitrix/catalog.section/your_template/template.php):

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

global $APPLICATION;

$pageNumber = (int)$_GET['PAGEN_1'];
if ($pageNumber > 1) {
    // Обновляем Title
    $originalTitle = $APPLICATION->GetTitle();
    $APPLICATION->SetTitle($originalTitle . ' - Страница ' . $pageNumber);

    // Обновляем Description
    $originalDesc = $APPLICATION->GetPageProperty('description');
    $APPLICATION->SetPageProperty('description', $originalDesc . ' - Страница ' . $pageNumber);
}

// Далее идет стандартный код шаблона

Преимущества:

  • Локальное изменение только для конкретного компонента.
  • Позволяет гибко настраивать формат для разных разделов.

Важные замечания:

  1. Проверка номера страницы: Код добавляет номер только если > 1 (чтобы избежать “Страница 1”).
  2. Кодировка и SEO: Убедитесь, что мета-теги не обрезаются (проверьте максимальную длину).
  3. Множественная пагинация: Если на странице несколько пагинаций (например, PAGEN_1 и PAGEN_2), код обработает первый найденный параметр.

Пример результата для PAGEN_1=2:

<title>Каталог напольных покрытий - Страница 2</title>
<meta name="description" content="Широкий выбор напольных покрытий. Страница 2">

Если есть вопросы задавайте в комментариях.


Об авторе сайта

Меня зовут Антон и я программист 🙂

Мой стек технологий : Опыт разработки PHP (в том числе PHP 8.3), MySQL, PostgreSQL, Sqlite , MariaDB и MS SQL, а также с Redis и Memcached для кеширования. Использую JavaScript, jQuery, HTML, CSS3 и Ajax для разработки фронтенда, и работаю с CMS, такими как WordPress, Joomla и OpenCart, Bitrix и другие. Также имею опыт работы с Docker, Nginx, Git и администрированием серверов на Linux.

  • Работа с CMS: установка, администрирование и настройка сайтов на CMS Bitrix, Joomla, WordPress, HostCMS.
  • Верстка и настройка шаблонов: разработка и адаптация шаблонов сайтов по макетам Figma для CMS Bitrix, Joomla, WordPress и других систем управления контентом.
  • Оптимизация производительности: настройка и оптимизация работы хостинга для повышения стабильности и скорости сайтов.
  • SEO-оптимизация: улучшение видимости сайтов в поисковых системах, настройка редиректов (301, 302) и оптимизация контента.
  • Интеграция с Bitrix24: настройка и внедрение форм на сайты, работа с CRM-системой Bitrix24 для автоматизации процессов.
  • Создание технической документации: подготовка инструкций и документации по работе с сайтами и взаимодействию пользователей с функционалом.
  • Администрирование серверов на базе Linux: опыт настройки и сопровождения серверов с использованием Ubuntu 24.04, Debian 12, CentOS 10.
  • Использование современных инструментов: опыт работы с нейросетями и инструментами искусственного интеллекта (GPT-4o, Claude-3.5, DeepSeek) для оптимизации процессов и повышения эффективности.
  • Опыт работы с Python 3.11 (парсинг, создание БД, экспорт в Exel )
  • Управление проектами в Jira Atlassian, Trello , Asana, Битрикс24. Написание инструкций для клиентов и сотрудников.

Google Apps Script: Мощный инструмент для автоматизации в Google

Сегодня поговорим о Google Apps Script — инструменте, который позволяет превратить рутину в магию автоматизации, расширяя возможности Google Workspace. Если вы ещё не знакомы с ним, эта статья станет вашим гидом в мир скриптов, триггеров и бесшовной интеграции с сервисами Google.

Что такое Google Apps Script?

Google Apps Script — это облачная платформа для написания скриптов на основе JavaScript, созданная Google для автоматизации задач и разработки кастомных решений внутри их экосистемы. Это как «волшебная палочка» для тех, кто работает с Google Таблицами, Документами, Gmail, Диском и другими сервисами.

GAS не требует настройки серверов, IDE или сложных инструментов. Всё делается прямо в браузере через встроенный редактор.

Зачем он нужен?

Автоматизация рутины:

  • Отправка писем при изменении данных в таблице.
  • Генерация отчётов в Docs на основе шаблонов.
  • Синхронизация данных между Google Sheets и внешними API.

Расширение функционала Google-сервисов:

  • Создание кастомных функций в Таблицах (например, =GET_WEATHER(“Москва”)).
  • Разработка аддонов для Google Workspace.

Быстрое прототипирование:

  • За час можно создать MVP веб-приложения, которое работает с вашими данными из Google Drive.

Основные возможности

1. JavaScript + Google API

GAS использует синтаксис JavaScript, но с добавлением специальных классов для работы с Google-сервисами. Например:

// Отправить email через Gmail
function sendEmail() {
  const subject = "Привет из Apps Script!";
  const body = "Это тестовое письмо.";
  GmailApp.sendEmail("[email protected]", subject, body);
}

2. Встроенные сервисы

  • SpreadsheetApp: Чтение/запись данных в Google Таблицы.
  • DocumentApp: Создание и редактирование Google Документов.
  • DriveApp: Управление файлами на Google Диске.
  • UrlFetchApp: Отправка HTTP-запросов к внешним API.

3. Триггеры

Скрипты могут запускаться автоматически:

  • По событию: Например, при отправке формы или изменении ячейки в Таблице.
  • По расписанию: Каждый день в 9:00, раз в час и т.д.

Пример триггера для ежедневного отчёта:

function createDailyReport() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const data = sheet.getRange("A1:B10").getValues();
  // ... логика формирования отчёта ...
}

4. Веб-приложения

С помощью GAS можно развернуть веб-приложение, которое будет доступно по URL. Пример:

function doGet() {
  return HtmlService.createHtmlOutput("<h1>Hello World!</h1>");
}

Примеры использования

Кейс 1: Персонализированная рассылка из Google Sheets

  1. В таблице есть столбцы: Email, Имя, Дата подписки.
  2. Скрипт ежедневно проверяет, кому нужно отправить письмо.
  3. Использует шаблон из Google Docs для генерации текста.
function sendPersonalizedEmails() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("Contacts");
  const data = sheet.getRange("A2:C").getValues();

  data.forEach(row => {
    const [email, name, date] = row;
    const template = DocumentApp.openById("ID_ШАБЛОНА").getBody().getText();
    const message = template.replace("{{name}}", name);
    GmailApp.sendEmail(email, "Ваш персональный отчёт", message);
  });
}

Кейс 2: Интеграция с внешним API

Получение курса валют и запись в Google Таблицу:

function fetchCurrencyRates() {
  const response = UrlFetchApp.fetch("https://api.exchangerate-api.com/v4/latest/USD");
  const data = JSON.parse(response.getContentText());
  const rate = data.rates.RUB;

  const sheet = SpreadsheetApp.getActive().getSheetByName("Rates");
  sheet.getRange("A1").setValue(`Курс USD/RUB: ${rate}`);
}

Как начать? Пошагово

  1. Откройте редактор скриптов:
    В Google Таблицах или Документах: Расширения → Apps Script.
  2. Напишите первую функцию:
    Например, скрипт, который добавляет текущую дату в ячейку:
<!-- wp:code -->
<pre class="wp-block-code"><code></code></pre>
<!-- /wp:code -->
  1. Запустите скрипт:
    Нажмите ▶️ в редакторе и разрешите доступ к данным.
  2. Добавьте триггер:
    В редакторе: Триггеры → Добавить триггер → Выберите функцию и условия.

Ограничения

  • Время выполнения: 6 минут для триггеров, 30 минут для ручного запуска (бесплатный аккаунт).
  • Квоты: Ограничения на количество писем (100/день), запросов к API (20 000/день).
  • Сложные вычисления: Не подходит для ресурсоёмких задач (лучше использовать Cloud Functions).

Советы для разработчиков

Используйте кэширование:

<!-- wp:code -->
<pre class="wp-block-code"><code></code></pre>
<!-- /wp:code -->

Работайте с библиотеками:
Подключайте сторонние JS-библиотеки через Resources → Libraries.

Дебаггинг:
Используйте Logger.log() и просматривайте логи в View → Logs.

Оптимизируйте запросы:
Читайте/пишите данные диапазонами, а не по ячейкам:

// Плохо:
sheet.getRange("A1").setValue("1");
sheet.getRange("A2").setValue("2");

// Хорошо:
sheet.getRange("A1:A2").setValues([["1"], ["2"]]);

Почему стоит попробовать Apps Script?

  • Low-code: Даже новички смогут автоматизировать задачи за пару часов.
  • Интеграция без боли: Не нужно настраивать OAuth для Google-сервисов.
  • Бесплатно: Для старта хватит обычного аккаунта Google.
  • Мощь JavaScript: Под капотом — знакомый язык с асинхронными возможностями (ES6+).

Заключение

Google Apps Script — это идеальный инструмент для тех, кто хочет выжать максимум из Google Workspace без лишних сложностей. Он подходит для:

  • Маркетологов: Автоматизация отчётов и рассылок.
  • Разработчиков: Быстрое прототипирование интеграций.
  • Админов: Управление документами и правами в компании.

Попробуйте прямо сейчас: Откройте Google Таблицы, создайте скрипт, который добавляет текущую дату в ячейку при открытии файла. Вы удивитесь, насколько это просто!

А вы уже используете Apps Script в своих проектах? Делитесь кейсами в комментариях!


Как разместить сообщение о конфиденциальности и cookie на сайте

Последнее время часто прилетает задачи о размещении плашки cookie на сайте.
Это можно сделать, разместив страницу кусок из Html , Javascript и Css кода.

Файлы cookie — это небольшие текстовые файлы, которые сохраняются на устройстве пользователя при посещении веб-сайта. Cookies могут быть использованы для запоминания предпочтений пользователя, аналитики и других целей.

Лучше разместить сообщение внизу страницы – это стандартное место для уведомлений, которые не отвлекают от основного контента.

Кусок html кода, разместите в нем текст сообщения :

 <div id="cookie-banner" class="cookie-banner">
  <p>Продолжая просмотр этого сайта, Вы соглашаетесь на обработку файлов cookie в <a href="https://site.com/" target="_blank">соответствии с политикой использования</a> файлов cookie.</p>
  <button id="accept-cookie">Принять</button>
  <button id="decline-cookie">Отклонить</button>
</div>

Javascript код . Параметр 10 * 24 * 60 * 60 * 1000 отвечает за количество дней, которое сообщение не будет показываться после нажатия кнопки Принять . В данном случае 10 дней :

<script>
  if (!localStorage.getItem('cookies-accepted')) {
    document.getElementById('cookie-banner').style.display = 'block';
  }

  document.getElementById('accept-cookie').addEventListener('click', function () {
    localStorage.setItem('cookies-accepted', 'true');
    document.getElementById('cookie-banner').style.display = 'none';
  });

  document.getElementById('decline-cookie').addEventListener('click', function () {
    localStorage.setItem('cookies-accepted', 'false');
    document.getElementById('cookie-banner').style.display = 'none';
  });

  if (localStorage.getItem('cookies-accepted') === 'true') {
    setTimeout(function () {
      localStorage.removeItem('cookies-accepted');
    }, 10 * 24 * 60 * 60 * 1000);
  }
</script>

Css код . Стили , которые вы можете подредактировать для себя :

<style>
  .cookie-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: #333;
    color: white;
    padding: 15px;
    text-align: center;
    z-index: 9999;
    display: none;
  }

  .cookie-banner button {
    background-color: #4CAF50;
    color: white;
    border: none;
    padding: 10px 20px;
    margin: 0 5px;
    cursor: pointer;
  }

  .cookie-banner button:hover {
    background-color: #45a049;
  }

  .cookie-banner a {
    color: #4CAF50;
    text-decoration: none;
  }

  .cookie-banner a:hover {
    text-decoration: underline;
  }
</style>

Вот общий код , который можно разместить внизу страницы , перед закрывающимся тэгом body . Отредактируйте для своего сайта.

 <div id="cookie-banner" class="cookie-banner">
  <p>Продолжая просмотр этого сайта, Вы соглашаетесь на обработку файлов cookie в <a href="https://site.com/" target="_blank">соответствии с политикой использования</a> файлов cookie.</p>
  <button id="accept-cookie">Принять</button>
  <button id="decline-cookie">Отклонить</button>
</div>

<style>
  .cookie-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: #333;
    color: white;
    padding: 15px;
    text-align: center;
    z-index: 9999;
    display: none;
  }

  .cookie-banner button {
    background-color: #4CAF50;
    color: white;
    border: none;
    padding: 10px 20px;
    margin: 0 5px;
    cursor: pointer;
  }

  .cookie-banner button:hover {
    background-color: #45a049;
  }

  .cookie-banner a {
    color: #4CAF50;
    text-decoration: none;
  }

  .cookie-banner a:hover {
    text-decoration: underline;
  }
</style>

<script>
  if (!localStorage.getItem('cookies-accepted')) {
    document.getElementById('cookie-banner').style.display = 'block';
  }

  document.getElementById('accept-cookie').addEventListener('click', function () {
    localStorage.setItem('cookies-accepted', 'true');
    document.getElementById('cookie-banner').style.display = 'none';
  });

  document.getElementById('decline-cookie').addEventListener('click', function () {
    localStorage.setItem('cookies-accepted', 'false');
    document.getElementById('cookie-banner').style.display = 'none';
  });

  if (localStorage.getItem('cookies-accepted') === 'true') {
    setTimeout(function () {
      localStorage.removeItem('cookies-accepted');
    }, 10 * 24 * 60 * 60 * 1000);
  }
</script>

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

  • Cookiebot — сервис для соблюдения GDPR, который автоматически собирает согласие пользователей на cookies.
  • OneTrust — платформа для управления согласием пользователей и соблюдения стандартов защиты данных.
  • Termly — сервис, предоставляющий инструменты для создания уведомлений и политики конфиденциальности.

Если вы хотите заказать услугу по размещению cookie на вашем сайте, вы может связаться со мной через Контакты , а также заказать различные услуги.

Выглядит такое сообщение примерно так :