Корзина и оформление заказа: B2B-процесс на основе коммерческих предложений
В этой статье объясняется наша система корзины и оформления заказа, разработанная для B2B-продаж на основе коммерческих предложений.
Проблема: B2B против B2C
Традиционная электронная коммерция — это B2C (Business-to-Consumer):
-
Фиксированные цены
-
Мгновенное оформление заказа
-
Оплата кредитной картой
-
Автоматизированная обработка
Наш бизнес — это B2B (Business-to-Business):
-
Ценообразование на основе коммерческих предложений
-
Ручная проверка
-
Оплата банковским переводом
-
Пользовательские конфигурации
Нам нужна система корзины, которая поддерживает обе модели.
Типы корзин
Корзина для запроса предложения (По умолчанию)
Назначение: Запросить коммерческое предложение для пользовательской конфигурации
Процесс: Добавить товары → Заполнить детали → Отправить → Получить предложение по email
Оплата: Не требуется предоплата
Случай использования: Пользовательские сборки, оптовые заказы, согласованные цены
Корзина покупок (Google Shopping)
Назначение: Прямая покупка по фиксированным ценам
Процесс: Добавить товары → Заполнить детали → Оплатить онлайн → Подтверждение заказа
Оплата: Требуется предоплата (Razorpay)
Случай использования: Стандартные конфигурации из Google Shopping
Определение: Параметры gclid, gbraid или wbraid в URL
Структура корзины
Модель корзины
Поля:
-
Items: Список позиций (SKU, количество, цена за единицу, сумма) -
CustomerName: Имя покупателя -
CustomerEmail: Email покупателя -
CustomerPhone: Телефон покупателя -
CustomerAddress: Адрес доставки -
CustomerGSTIN: Налоговый идентификатор (опционально) -
TotalAmount: Сумма позиций -
GSTAmount: Сумма налога -
NetAmount: Итоговая сумма (Total + GST) -
Currency: Валюта корзины (INR, USD и т.д.) -
Type: "cart" или "quote"
Позиция в корзине
Поля:
-
SKU: Идентификатор продукта -
quantity: Количество единиц -
Rate: Цена за единицу -
Amount: Rate × quantity
Процесс добавления в корзину
Прямое добавление (GET)
Добавление товара через параметр URL с SKU.
Поведение:
- Создать новую корзину или загрузить существующую
- Добавить SKU с количеством 1
- Показать страницу корзины
Случай использования: Кнопка "Добавить в корзину" на странице товара
Добавление через форму (POST)
Данные формы: SKU, количество, данные клиента
Поведение:
- Проверить существование SKU
- Добавить в корзину с указанным количеством
- Обновить итоги корзины
- Показать страницу корзины
Особый порядок работы с V-SKU
V-SKU (виртуальные/конфигурируемые продукты) заменяют содержимое корзины:
Причина: V-SKU — это готовые системы, несовместимые с другими товарами
Поведение: Очистить существующие позиции, добавить только V-SKU
Исключение: Режим Google Shopping (разрешает несколько товаров)
Хранение корзины
Место: Серверная сессия Flask
Формат: Словарь, сериализованный в сессию
Сохранение: До закрытия браузера или истечения срока действия cookie
Преимущество: Запись в базу данных происходит только при оформлении заказа
Процесс оформления заказа
Запрос коммерческого предложения
Шаги:
- Пользователь заполняет данные клиента
- Нажимает "Получить предложение"
- Корзина сохраняется в тикет CRM
- Email отправляется отделу продаж
- Отдел продаж отвечает с предложением
Без оплаты: Предложение отправляется по email
Прямая покупка
Шаги:
- Пользователь заполняет данные клиента
- Нажимает "Перейти к оплате"
- Корзина сохраняется в таблицу Order
- Показывается страница оплаты Razorpay
- Платеж захватывается
- Заказ подтверждается
Требуется оплата: Интеграция с Razorpay
Работа с валютами
Валюта корзины: Устанавливается при создании корзины
Заблокирована: Нельзя изменить валюту после добавления товаров
Конвертация: Все товары конвертируются в валюту корзины
Отображение: Показывает как валюту корзины, так и эквивалент в INR
Расчет GST
Индия (предоставлен GSTIN): GST добавляется по применимой ставке
Индия (без GSTIN): GST добавляется по применимой ставке
Международные: Без GST
Формула: Чистая сумма = Общая сумма + GST
Параметры отслеживания
При создании корзины мы сохраняем:
Параметры кампании: utm_source, utm_medium, utm_campaign
Идентификаторы кликов: gclid, gbraid, wbraid, fbclid
Хранение: На основе cookie с временным окном (30 минут)
Цель: Приписывать офлайн-конверсии онлайн-кампаниям через отслеживание контактов
Email-уведомления
Email запроса предложения
Кому: Отдел продаж
Содержание: Данные клиента, позиции, общая сумма
Вложения: Отсутствуют
Email подтверждения заказа
Кому: Клиент
Содержание: Детали заказа, информация об оплате, следующие шаги
Вложения: PDF-счет (если платеж получен)
Интеграция с платежной системой
Шлюз: Razorpay
Поддерживается: INR, USD, EUR, GBP
Методы: Кредитная карта, дебетовая карта, UPI, интернет-банкинг
Вебхук: Обновления статуса платежа через вебхук
Смотрите: Интеграция с платежной системой для деталей
Валидация корзины
Перед оформлением заказа:
Валидация SKU: Все SKU должны существовать
Валидация количества: Только положительные целые числа
Валидация клиента: Требуются имя, email, телефон
Валидация адреса: Требуется для доставки
Валидация GSTIN: Проверка формата, если предоставлен
Ссылки
Связанные статьи
-
Страницы товаров - Кнопка добавления в корзину
-
Конвертация валют - Валюта корзины
-
Аналитика и отслеживание - Атрибуция кампаний
Резюме
Наша система корзины поддерживает как поток на основе коммерческих предложений, так и поток прямой покупки:
Типы корзин:
-
Корзина для запроса предложения (по умолчанию, без оплаты)
-
Корзина покупок (Google Shopping, требуется оплата)
Функции:
-
Корзина с несколькими товарами
-
Фиксация валюты
-
Расчет GST
-
Особый порядок работы с V-SKU
-
Отслеживание кампаний
Оформление заказа:
-
Запрос предложения (email отделу продаж)
-
Прямая покупка (оплата через Razorpay)
Хранение:
-
На основе сессии (без записи в БД до оформления)
-
Сохранение 30 дней
Этот гибридный подход обслуживает как B2B-модель на основе предложений, так и B2C-модель прямой покупки.