Разработка оформления заказа (checkout) на Vue.js для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка оформления заказа (checkout) на Vue.js для 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка оформления заказа (checkout) на Vue.js для 1С-Битрикс

Оформление заказа — этап с наибольшим процентом отказов. Стандартный bitrix:sale.order.ajax — многошаговая форма с перезагрузкой шагов. Vue-checkout позволяет сделать одностраничное оформление с мгновенными обновлениями стоимости доставки, живой валидацией и сохранением прогресса.

Архитектура checkout на Vue

Checkout — это последовательность шагов с общим состоянием. Три подхода к реализации:

Многошаговый wizard<component :is="currentStep"> переключает компоненты: StepDelivery → StepPayment → StepConfirm. Состояние — в одном Pinia store.

Одностраничный accordion — все секции видны, заполненные сворачиваются. Удобнее на мобильных.

Гибрид — первый экран для незарегистрированных (контакты + адрес), второй — для всех (доставка + оплата + итог).

API для создания заказа

Битрикс создаёт заказ через \Bitrix\Sale\Order:

$order = \Bitrix\Sale\Order::create(SITE_ID, $userId);
$order->setPersonTypeId($personTypeId);

// Свойства заказа (ФИО, телефон, email)
$propertyCollection = $order->getPropertyCollection();
$propertyCollection->getItemByOrderPropertyCode('NAME')?->setValue($name);

// Доставка
$shipment = $order->getShipmentCollection()->createItem();
$shipment->setFields([
    'DELIVERY_ID' => $deliveryId,
    'DELIVERY_LOCATION' => $locationCode,
]);

// Оплата
$payment = $order->getPaymentCollection()->createItem();
$payment->setFields(['PAY_SYSTEM_ID' => $paySystemId]);

$order->save();

Оборачиваем в контроллер, принимающий JSON от Vue.

Расчёт стоимости доставки в реальном времени

При изменении адреса или параметров заказа — пересчёт стоимости доставки без сохранения:

// Метод расчёта без создания заказа
$deliveryCalculator = new \Bitrix\Sale\Delivery\Calculator($order);
$result = $deliveryCalculator->calculate($deliveryId);

Vue запрашивает пересчёт при каждом изменении адреса (с debounce 500 мс).

Валидация и обработка ошибок

Серверная валидация + клиентская на vee-validate или нативный Vue:

const rules = {
    phone: (v) => /^\+7\d{10}$/.test(v) || 'Введите номер в формате +7XXXXXXXXXX',
    email: (v) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v) || 'Некорректный email',
};

Ошибки сервера (order.save() возвращает \Bitrix\Main\Result с errorCollection) маппятся на поля формы.

Сохранение прогресса

При уходе со страницы — сохраняем в localStorage:

watch(() => checkoutStore.$state, (state) => {
    localStorage.setItem('checkout-draft', JSON.stringify(state));
}, { deep: true });

При возврате — восстанавливаем. Очищаем после успешного заказа.

Случай из практики

Магазин товаров для животных, высокая мобильная аудитория. Стандартный checkout Битрикс — 4 шага с перезагрузкой, на мобильных терялась часть данных при переключении вкладок (форма сбрасывалась). Vue-checkout в формате accordion, состояние в Pinia + localStorage: данные не теряются даже при звонке с телефона. Автозаполнение адреса через DaData с компонентом AddressSuggest.vue. Конверсия на мобильных устройствах выросла существенно — данные внутреннего A/B теста клиента.

Сроки выполнения

Вариант Срок
Базовый одностраничный checkout от 6 до 10 рабочих дней
С интеграцией DaData и пересчётом доставки от 10 до 15 рабочих дней
С несколькими типами плательщиков (физлицо/юрлицо) и подпиской от 15 до 20 рабочих дней