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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка оформлення замовлення (checkout) на Vue.js для 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка оформлення замовлення (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 робочих днів