Перейти к содержимому
N1
CRM / Bitrix24 · визиты в филиалах · OTP и согласия

Регистрация визита клиента в филиале: от QR-кода до сделки в Bitrix24

Клиент: Финансовая компания, NDA Категория: CRM / Bitrix24 Стек: PHP 8, Bitrix24 REST, JavaScript, SMS-шлюз, внешние сервисы проверки клиента, JSON-справочники, cron Срок: внедрялось поэтапно
Проблема

Клиент, пришедший в любой из 39 филиалов, должен сразу попасть в CRM — с подтверждённым телефоном, согласием на запрос в кредитное бюро и без дублей. Старые заявки клиента копились рядом с новыми, а одноразовый код генерировался и сверялся прямо в браузере, то есть подтверждение было формальностью.

Ограничения

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

Что сделал
  • Двуязычная форма RU/KZ по QR-коду: справочники 39 филиалов и 18 источников, валидация ИИН, телефона и суммы, предоценка авто по марке, модели и году
  • Контакт ищется по ИИН и телефону или создаётся; последняя открытая сделка клиента обновляется, остальные переводятся в стадию «Дубль»
  • Проверка владельца номера, код согласия на запрос в кредитное бюро и генерация документа-согласия; при недоступности сервиса — ветка ручной подписи на бумаге
  • Серверный одноразовый код вместо браузерного: живёт 5 минут, 5 попыток ввода, повторная отправка не чаще раза в 60 секунд
  • Передача клиента во внутреннюю кредитную систему в режиме fire-and-forget, двухэтапный учёт платных запросов и сквозной visit_request_id через все шаги
  • Разбор инцидента 25.07.2026: из 34 попыток сохранения прошли 2 — браузеры держали закешированный на 30 дней старый JS; статика версионирована, IP-лимиты сняты
Архитектура
QR-форма RU/KZ → Проверки и согласие → Сохранение визита → Bitrix24: контакт и сделка → Кредитная система (fire-and-forget)
Результат

Визит из любого филиала попадает в CRM одной отправкой формы: контакт найден или создан, дубли заявок сведены, а сбой внешней проверки или кредитной системы не теряет клиента. Инцидент с отказами сохранения закрыт на следующий день, и любой визит теперь собирается по логам одним идентификатором.

Что можно переиспользовать
Серверный OTP-сервис с TTL, лимитом попыток и паузой Версионирование статики по времени изменения файла Двухэтапный журнал платных запросов без ПДн