Розробка трекінгу замовлення для інтернет-магазину

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка трекінгу замовлення для інтернет-магазину
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розроблення трекингу заказу для інтернет-магазину

Трекинг заказу зменшує навантаження на службу поддержки та повишує довіру покупця: замість дзвінків «де мій заказ?» користувач видит актуальний статус у особистому кабінеті чи по прямій ссилці. Розроблення системи відслідковування займає 4–6 робочих днів.

Статусна машина заказу

Заказ проходить через строго визначені стани. Переходи контролюються state machine:

pending → confirmed → processing → shipped → delivered → completed
                                            ↓
                                         failed
         ↓
       cancelled
class Order extends Model {
    use HasStates;

    protected function registerStates(): void {
        $this->addState('status', OrderStatus::class)
            ->allowTransition(Pending::class, Confirmed::class)
            ->allowTransition(Confirmed::class, [Processing::class, Cancelled::class])
            ->allowTransition(Processing::class, [Shipped::class, Cancelled::class])
            ->allowTransition(Shipped::class, [Delivered::class, Failed::class])
            ->allowTransition(Delivered::class, Completed::class);
    }
}

При кожному переходе srабатує event, який записує запис у order_status_history, відправляє сповіщення покупцю та оновлює timestamp у заказі.

Історія статусів

CREATE TABLE order_status_history (
    id BIGSERIAL PRIMARY KEY,
    order_id BIGINT REFERENCES orders(id) ON DELETE CASCADE,
    status VARCHAR(30) NOT NULL,
    comment TEXT,
    changed_by BIGINT REFERENCES users(id),
    created_at TIMESTAMP DEFAULT NOW()
);

Ця таблиця формує timeline на сторінці трекингу.

Трекинг через API перевізників

Після відправлення посилці заказу присвоюється трекинг-номер. Система автоматично запитує обновлення статусу:

СДЭК:

$cdek = new \CdekSDK2\Client($clientId, $clientSecret);
$info = $cdek->orders()->get($order->cdek_uuid);

Почта России:

$russianPost = new \RussianPost\TrackingClient($login, $password);
$operations = $russianPost->getOperationHistory($order->tracking_number);

Polling через Laravel Scheduler кожні 2 години:

$schedule->command('orders:sync-tracking')->everyTwoHours();

При змені статусу у перевізника — автоматичне оновлення статусу заказу в системі та сповіщення покупцю.

Публічна сторінка трекингу

Доступна без логіну по ссилці з токеном — для гостьских заказів та для прямої ссилки з письма:

/orders/track?token=abc123xyz

Компонент сторінки відображає:

  • Резюме заказу
  • Історію статусів
  • Інформацію про доставку з ссилкою на сайт перевізника
  • Опцію контакту з поддержкою

Компонент StatusTimeline

Візуальний прогрес-бар з кроками — стандартний паттерн:

const steps = ['Прийнято', 'Підтверджено', 'В обробці', 'Відправлено', 'Доставлено'];
const currentIndex = steps.indexOf(statusLabel[order.status]);

steps.map((step, i) => (
  <div key={step} className={cn('step', {
    'step-complete': i < currentIndex,
    'step-active': i === currentIndex,
    'step-pending': i > currentIndex,
  })}>
    {step}
  </div>
))

Сповіщення по Email та SMS

При кожній зміні статусу уходит письмо з актуальним станом та ссилкою на трекинг. Для критичних подій (відправлення, доставка) — додатково SMS:

class OrderShipped extends Notification {
    public function via($notifiable): array {
        return ['mail', SmsSenderChannel::class];
    }

    public function toMail($notifiable): MailMessage {
        return (new MailMessage)
            ->subject("Заказ #{$this->order->number} відправлений")
            ->line("Трекинг: {$this->order->tracking_number}")
            ->action('Відстежити заказ', route('orders.track', $this->order->guest_token));
    }

    public function toSms($notifiable): string {
        return "Заказ #{$this->order->number} відправлений. Трекинг: {$this->order->tracking_number}";
    }
}

Карта доставки

Для курйерської доставки можна показувати текущее положення курйера через API сервісу доставки. Вимагає WebSocket чи SSE для обновлення в реальному часі.

Інтеграція з маркетплейсами

Якщо магазин продає також через Wildberries чи Ozon, трекинг їх заказів подтягується через відповідні API та відображається в єдиному особистому кабінеті — покупець видит всі свої закази в одному місце незалежно від каналу покупки.