Разработка платформы для онлайн-торговли: интернет-магазин с нуля и обменом с 1С

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

Обследование — 200 000 ₽, вычитается из первого этапаЦены и остатки из 1С, оплата через ваш эквайрингИсходный код в вашем репозитории с первого коммита

С чем приходят

Когда магазину нужна заказная платформа, а не шаблон

Правила цен не помещаются в модуль

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

В пик магазин тормозит и теряет заказы

Каталог собирается на каждый запрос, обмен с 1С занимает базу в момент распродажи. Покупатель видит «в наличии», нажимает «оформить» и получает ошибку.

Остатки на витрине и в учёте расходятся

Сайт показывает склад целиком, а часть товара уже в резерве у менеджера. Заказ приходится отменять звонком.

Процесс заказа нестандартный

Комплекты, товары под заказ, самовывоз с нескольких складов, партии с разными сроками. Готовый движок не знает вашей номенклатуры, а конструктор хранит данные там, где вы их не контролируете.

Выбор пути

Конструктор, CMS-магазин или заказная платформа: что когда подходит

Если типовой движок закрывает задачу, берите его. Общий способ выбора — в статье «Коробочное ПО или заказная разработка».

Путь
Когда годится
Где упирается
Что с обменом 1С
ПутьКонструктор магазинааренда по подписке
Когда годитсяНебольшой каталог, одна цена на товар, стандартные доставка и оплата
Где упираетсяОсобые правила цен, склады, нестандартный заказ; данные у поставщика конструктора
Что с обменом 1СГотовый модуль или выгрузка файлом, в пределах предусмотренного
ПутьCMS-магазин с модулямисвоя установка
Когда годитсяПривычный каталог и корзина, правила цен укладываются в настройки
Где упираетсяМного доработок поверх модулей, сложные обновления движка, пик нагрузки
Что с обменом 1СТиповой обмен CommerceML; нестандартные случаи дописываются отдельно
ПутьЗаказная платформасвоя разработка
Когда годитсяНестандартные цены и склады, свой процесс заказа, высокая нагрузка
Где упираетсяДороже и дольше на старте, нужен владелец продукта
Что с обменом 1СОбмен проектируется под ваши данные: очередь, журнал, сверка
Состав

Из чего состоит платформа онлайн-торговли и где она ломается

Заготовка для разбора: на вашем каталоге строки будут другими. Обмен с учётом описан на странице интеграции сайта с 1С, здесь только то, что строится на стороне магазина.

Модуль
Откуда данные
Что делает
Где ломается
МодульКаталог и поискноменклатура, фильтры
Откуда данныеНоменклатура и характеристики из 1С; описания и фото из админки
Что делаетКатегории, карточки, комплекты, поиск с учётом словоформ и артикулов
Где ломаетсяТовар заведён дважды, характеристики записаны свободным текстом, поиск не находит артикул с дефисом
МодульЦены и акциитип цены и условия
Откуда данныеТип цены покупателя из 1С, акции и промокоды из админки
Что делаетИтоговая цена с учётом типа покупателя, скидок и их приоритета
Где ломаетсяСкидка в корзине и в 1С считается по-разному, сумма меняется после выгрузки
МодульКорзина и заказсостав и статусы
Откуда данныеСостав, адрес, способ получения и оплаты; статусы из учёта
Что делаетПроверка остатков и цен, расчёт доставки, резерв, уведомления покупателю
Где ломаетсяКорзина хранит старые цены, статус меняют вручную в двух местах
МодульКабинет покупателяпрофиль и заказы
Откуда данныеИстория заказов, повтор заказа, адреса, документы
Что делаетВход по почте или телефону, права на свои данные
Где ломаетсяПокупатель видит чужие заказы, подобрав номер в адресной строке
МодульАдминкасотрудники магазина
Откуда данныеБаннеры, подборки, акции, тексты
Что делаетРоли, журнал изменений, предпросмотр
Где ломаетсяЛюбой контент-менеджер может поменять цену, и об этом никто не узнает
Остатки

Что видит покупатель вместо остатка: «в наличии», «мало», «под заказ»

Покупателю не нужна цифра из учёта, ему нужен ответ, получит ли он товар и когда.

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

Резерв ставится при оформлении, а не при оплате

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

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

Магазин ведёт собственную копию остатков

Из 1С остатки приходят с задержкой, а покупатели не ждут. Магазин хранит копию с учётом своих резервов, сверяет её с учётом и показывает расхождения менеджеру. Что показывать при остановке обмена, решается на обследовании.

Оформление

Оформление заказа: что проверяет сервер, а не браузер

Любая проверка в браузере обходится одним запросом, поэтому её дублирует сервер. Покупатель при этом должен понимать, что произошло.

Проверка
Что проверяем
Почему на сервере
Что видит покупатель при отказе
ПроверкаСостав и ценыпересчёт заказа
Что проверяемЦены, скидки и налоги пересчитываются по правилам магазина
Почему на сервереЦену в запросе можно подменить, корзине верить нельзя
Что видит покупатель при отказеСообщение «цена изменилась» и новая сумма до подтверждения
ПроверкаОстаток и резервможно ли продать
Что проверяемКоличество, доступное для выбранного способа получения
Почему на сервереДва заказа на последнюю штуку приходят одновременно
Что видит покупатель при отказеПредложение заменить товар или оформить под заказ
ПроверкаДоставкаадрес и способ
Что проверяемСпособ доступен для состава заказа, стоимость рассчитана
Почему на сервереСлужба доставки может ответить ошибкой или не ответить вовсе
Что видит покупатель при отказеЗапасной тариф или самовывоз, а не белый экран
ПроверкаПовторная отправкаодин заказ — одна запись
Что проверяемПовтор с тем же ключом формы возвращает уже созданный заказ
Почему на сервереПокупатель нажимает дважды или обновляет страницу
Что видит покупатель при отказеТот же номер заказа, а не второй
Оплата и доставка

Оплата, чеки и доставка: чьи договоры и что подключаем

Оплата через ваш эквайринг

Подключаем платёжную форму вашего провайдера по его документации. Данные карты попадают к провайдеру и в нашу систему не приходят. Статус оплаты приходит уведомлением.

Чеки

Чек формирует ваша онлайн-касса или сервис фискализации, мы передаём ему состав заказа. Ставку налога и признак предмета расчёта определяет бухгалтер.

Доставка

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

Отмены и возвраты

Отмена до отгрузки возвращает резерв и деньги через провайдера. Возврат после отгрузки идёт через учёт и провайдера. Правила возвратов записывает владелец магазина вместе с юристом.

Нагрузка

Пик распродажи: что кэшируем, а что нельзя

Что считать пиком, выясняем по вашей статистике посещений. Цифр нагрузки заранее не называем: они зависят от каталога и поведения покупателей.

Каталог читают много чаще, чем меняют, поэтому страницы категорий и карточек кэшируются, а кэш сбрасывается по событию: изменилась цена или остаток. Нельзя кэшировать корзину, итоговую сумму и проверку остатка в момент оформления.

  • Обмен с 1С не мешает покупателям. Тяжёлые загрузки идут пакетами вне часов пик и не блокируют таблицы, которые читает витрина.
  • Поиск выносится из основной базы, когда каталог растёт. Небольшому каталогу хватает полнотекстового поиска PostgreSQL, большому нужен отдельный поисковый движок.
  • Сбой внешнего сервиса не останавливает покупку. Служба доставки молчит: показываем запасной тариф. Провайдер оплаты медленный: заказ остаётся в состоянии «ожидает оплаты».
  • Нагрузочная проверка проходит до распродажи. Сценарий строится по вашей статистике: категория, поиск, корзина, оформление.

Если оптимизации мало и меняется устройство системы, это задача для страницы про микросервисную архитектуру и высоконагруженные системы. Часто хватает одного хорошего монолита: «Микросервисы или монолит».

Что делаем

Из чего состоит работа и сколько она стоит

Цены — по тарифам. Точная цена называется у обследования, дальше идёт вилка. Остановиться можно после любой ступени.

Обследование: один магазин и 1С

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

200 000 ₽ · 2–3 недели

Обследование: несколько систем

Учёт, склад, службы доставки, CRM, касса и магазин вместе: схема обменов и таблица «поле — источник — хозяин».

350 000 ₽ · 3–4 недели

Срез магазина на реальных данных

Пилот: одна категория, корзина, оформление, передача заказа в 1С. Проверяет обмен и правила цен до работы над всем каталогом.

150 000–400 000 ₽ · 2–8 недель

Первая версия магазина

Весь каталог, цены и акции, остатки с резервом, оформление, оплата, кабинет покупателя, админка, обмен с 1С. В тарифах это ступень «Пилот, тяжёлый».

400 000–1 200 000 ₽ · 2–3 месяца

Вывод в эксплуатацию

Нагрузочные испытания, опытная эксплуатация, мониторинг обмена и заказов, обучение менеджеров.

от 1 500 000 ₽ этапами по 300 000–700 000 ₽ · от 3 месяцев

Сопровождение

Мониторинг, обращения, разбор инцидентов; плановые доработки с пакета на 60 000 ₽. Сверх пакета — 5 000 ₽ в час.

20 000 / 60 000 / 120 000 ₽ в месяц
Процесс

Как идёт работа

2–4 недели — Обследование

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

Перед разработкой — Макеты интерфейса

Кликабельные макеты категории, карточки, корзины, оформления и кабинета. Показываем нескольким покупателям и правим до написания кода.

От 4 недель — Разработка

Работаем в вашем репозитории, раз в две недели показываем работающую версию на тестовом стенде.

1–2 недели — Проверка

Сверка каталога, цен и остатков с учётом, прогон оформления при отказах внешних сервисов, нагрузочная проверка.

3–7 дней — Запуск

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

Дальше — развитие или сопровождение

Новые разделы по этапам с отдельной приёмкой. Объём работ в месяц записан в договоре.

Цена

Что двигает цену магазина внутри вилки

Состояние номенклатуры

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

Правила цен и склады

Один тип цены и один склад — одно, договорные цены, акции с приоритетами и остаток по городам — другое. Работа растёт по числу правил, а не страниц.

Число внешних сервисов

Каждая служба доставки, касса, CRM и платёжный провайдер имеют свой интерфейс, свои тестовые среды и своё поведение при сбое.

Нагрузка и доступность

Распродажи с резким ростом посетителей требуют нагрузочных испытаний и мониторинга. Обычный режим стоит заметно меньше.

Контроль

Что остаётся у вас и чего мы не делаем

Остаётся у вас

  • Исходный код в вашем репозитории с первого коммита.
  • База, файлы и учётные записи на ваших серверах или у вашего хостера; развёртывание описано инструкцией.
  • Макеты интерфейса и документация: с ними можно идти к другому подрядчику.
  • Право остановиться после любой ступени: сделанное остаётся у вас по акту.

Мы этого не делаем

  • Не делаем маркетплейс для чужих продавцов с каталогами нескольких продавцов, комиссиями и выплатами. Платформа работает на одного продавца или на ваши юридические лица.
  • Не делаем нативные мобильные приложения: адаптивный интерфейс входит в проект.
  • Не принимаем платежи и не храним данные карт: эквайринг и онлайн-кассу подключаете вы.
  • Не продвигаем сайт и не обещаем места в выдаче, не ведём рекламу и не наполняем каталог текстами и фото; техническую основу (читаемые адреса, перенаправления, карта сайта, разметка карточек) закладываем.
  • Оферту, правила возврата, согласия и вопрос о статусе оператора персональных данных готовит юрист заказчика, юридических консультаций мы не даём.
  • Не размещаем магазин у себя, не дежурим круглосуточно, не берём работы дешевле 150 000 ₽.
Граница

Магазин, B2B-портал или выход на маркетплейсы: где проходит граница

Эта страница про собственную витрину розничного или смешанного продавца. Если основные покупатели — дилеры с договорными ценами и отсрочкой, нужен B2B-портал. Кабинет без витрины — это личный кабинет.

Продажи на Ozon, Wildberries и Яндекс Маркете — отдельная задача обмена остатками и заказами, см. интеграцию 1С с маркетплейсами. Магазин и площадки можно вести от одного учёта, но правила у каналов разные. Принимать на свой сайт чужих продавцов — значит делать маркетплейс, а его мы не делаем.

Без привязки к торговле — веб-сервисы и API.

Инструменты

На чём собираем

Серверная часть и данные
  • Python: Django или FastAPI, при необходимости Go
  • PostgreSQL: транзакции для резервов, полнотекстовый поиск для небольших каталогов
  • Redis или совместимое хранилище для кэша и сессий
  • Очередь обмена с 1С в PostgreSQL или RabbitMQ, выбираем на обследовании
Интерфейс и развёртывание
  • React или Vue, TypeScript, адаптивная вёрстка с серверной отрисовкой для страниц каталога
  • OpenSearch или аналог, если каталог требует отдельного поиска
  • Docker, Nginx, GitLab CI, мониторинг обмена и заказов
Материалы

Материалы по теме

Статья

CommerceML: обмен 1С с сайтом и где он ломается

Как идёт сеанс обмена и где формат упирается в пределы. Пригодится, если магазин строится на данных 1С.

  • Сеанс обмена
  • Где ломается
  • Когда формата мало
Читать →
Статья

Остатки 1С и маркетплейсов не совпадают: почему и что делать

Резервы, задержки и ручные правки как причины расхождения; те же причины влияют на остатки витрины.

  • Причины
  • Резерв
  • Сверка
Читать →
Статья

Как составить техническое задание на разработку

Что записать до начала работ, чтобы оценка сходилась с результатом.

  • Состав версии
  • Критерии приёмки
  • Что отложить
Читать →
Заявка

Разберём, что должен уметь ваш магазин и откуда он возьмёт данные

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

Спасибо, заявка отправлена. Ответим в течение рабочего дня.

Не удалось отправить. Напишите в телеграм или позвоните.

Вопросы

Частые вопросы: платформа для онлайн-торговли

Сколько стоит разработка интернет-магазина на заказ?

Обследование — 200 000 ₽ за магазин и 1С или 350 000 ₽ за несколько систем. Срез на одной категории — 150 000–400 000 ₽, первая версия магазина — 400 000–1 200 000 ₽ за 2–3 месяца, вывод в эксплуатацию — от 1 500 000 ₽ этапами по 300 000–700 000 ₽. Обследование вычитается из первого этапа, если продолжаете с нами.

Чем заказная платформа лучше CMS, если у нас обычный каталог?

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

Можно ли подключить новый магазин к нашей 1С?

Да. Обмен строится через CommerceML, HTTP-сервисы или доработку 1С, выбор зависит от версии и конфигурации. Если ваша 1С сильно доработана, скажем об этом до договора.

Что будет с трафиком и адресами при переезде со старого сайта?

Для старых адресов настраиваются постоянные перенаправления, карта сайта обновляется сама, разметка и заголовки переносятся. Поведение трафика после переезда мы не обещаем: оно зависит и от содержания страниц, и от поисковых систем.

Вы делаете маркетплейс, где продают разные продавцы?

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

Принимаете ли вы платежи и храните ли данные карт?

Нет. Платёжную форму подключаем по документации вашего провайдера, карточные данные попадают к нему, а не в нашу систему. Договор с провайдером и онлайн-кассой заключаете вы.

Где работает магазин и кому принадлежит код?

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

Вы работаете только в Ростове-на-Дону?

Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.