Синхронизация расчетов кредита для сайта под управлением 1С-Битрикс Управление сайтом (редакци Бизнес), Битрикс24 коробочная версия и 1С Управление Торговлей.
Изначально имеем:
- Битрикс Управление сайтом;
- Битрикс 24;
- Сервер 1С;
- Несколько банков с кредитными предложениями.
Что нужно сделать:
- Получение расчетов на всех серверах;
- Расчеты должны быть одинаковыми и совпадать с реальными договорами по кредитованию;
- Возможность получения информации по кредитным предложениям и предварительным расчетам по ним.
Ситуация:
Изначально расчеты проводились на каждом сервере (сервисе) свои, поэтому было сложно контролировать изменения условий. Приходилось эти изменения прописывать на каждом сервере, в последствии проверять правильность расчетов. А поскольку кол-во банков-партнеров увеличивается, то и контролировать всё изменения становилось в разы сложнее, также постоянно возникали ситуации с округлением, поскольку расчеты в 1С несколько отличаются.Решение:
Было решено централизовать все расчеты и условия, чтобы изменив их в одном месте актуальными были и данные на других серверах (сервисах). Для этого мы создали отдельный калькулятор, который в себе содержит информацию о банках, кредитных предложениях каждого банка, условия по кредиту, формулы расчета кредитов и особенности кредитного предложения при определенном сроке (если есть такие, например СМС, фиксированная сумма кредита и т.д.).Принцип работы:
Работа калькулятора обеспечивается отправкой в него POST запроса, обеспечивающего защищенную передачу данных и получением ответа с запрошенной информацией. При этом важно, чтобы каждый сервер, работающий с этим калькулятором, поддерживал возможность отправки запросов и получения ответов с сервером, на котором расположен калькулятор. Отправка параметров в виде JSON-строки, получение ответа либо в виде сериализованного массива, либо JSON-строки.В зависимости от того, какие данные нужно получить – в калькуляторе вызываются различные методы обработки. Некоторые с параметрами (если нужна информация или расчеты по отдельному кредитному предложению или банку) и без параметров (в основном для получения информации обо всех предложениях).
Поскольку это должен быть централизованный калькулятор, то необходимо учитывать, что вычисления нужны для разных сущностей. Например, в карточке товара нужно отобразить информацию о расчете кредита по товару, а в корзине нужно считать как товары отдельно, так и общую стоимость заказа, с возможностью добавления подарков, бонусов, скидок и т.д.
Так же в калькуляторе необходимо предусмотреть возможность отключения банков и кредитных программ с сохранением функционала и соответствия банка с его идентификатором кредитной программ.
В итоге система централизованного расчета получила следующий функционал:
- Хранение всей информации и условий банка в базе данных;
- Возможность быстрой и простой модификации условий;
- Возможность получения только информации обо всех банках;
- Возможность получения только информации по одному банку/кредитному продукту;
- Возможность получения только расчетов по одному кредитному продукту;
- Возможность получения информации и расчетов по одному кредитному продукту;
- Возможность передачи и получения данных в виде сериализованного массива, либо в виде JSON-строки.
Теперь каждая из систем, 1С, Битрикс24, Битрикс Управление сайтом обращаются к центральному серверу кредитования по API и получает необходимые расчеты.
Поставленной цели мы добились, клиента доволен )