</>
maximorum.com

Як підключити Nova Poshta API до OpenCart: автоматизація доставки

D

Ручний розрахунок доставки — це операційна втрата

Інтернет-магазин на OpenCart без автоматичного розрахунку доставки — це ручна робота, яку виконує ваш менеджер замість системи. Nova Poshta надає повноцінний API: автоматичний розрахунок вартості, вибір відділення покупцем прямо в checkout, та відстеження відправлення без дзвінків у підтримку.

OpenCart адмін-панель з модулем доставки Nova Poshta — MaxiMoruM

Що дає Nova Poshta API

Через API Nova Poshta ви отримуєте:

  • Автоматичний розрахунок вартості доставки за вагою, розмірами та напрямком
  • Список міст і відділень з пошуком у реальному часі
  • Програмне створення ТТН після оформлення замовлення
  • Відстеження статусу відправлення по накладній
  • Довідник послуг і типів вантажу

Правильна інтеграція прибирає ручну роботу з розрахунків і зменшує кількість помилок при оформленні відправлень.

Структура модуля доставки в OpenCart

OpenCart підтримує власні модулі доставки через стандартний інтерфейс. Клас модуля розширює ModelExtensionShipping, а метод getQuote звертається до Nova Poshta API і повертає вартість у кошик:

// catalog/model/extension/shipping/novaposhta.php

class ModelExtensionShippingNovaposhta extends Model
{
    public function getQuote(array $address): array
    {
        $warehouses = $this->getWarehouses($address['city']);
        $cost       = $this->calculateCost($address, $this->config->get('weight'));

        return [
            'code'       => 'novaposhta',
            'title'      => 'Nova Poshta — відділення',
            'cost'       => $cost,
            'tax_class_id' => 0,
            'text'       => $this->currency->format($cost, 'UAH'),
        ];
    }

    private function getWarehouses(string $city): array
    {
        $response = $this->httpClient->post('https://api.novaposhta.ua/v2.0/json/', [
            'json' => [
                'apiKey'           => $this->config->get('novaposhta_api_key'),
                'modelName'        => 'Address',
                'calledMethod'     => 'getWarehouses',
                'methodProperties' => ['CityName' => $city],
            ],
        ]);

        return json_decode($response->getBody(), true)['data'] ?? [];
    }
}

Кешування відповідей API

Список відділень змінюється рідко — кешуйте відповідь через OpenCart Cache або Redis на 6–12 годин, щоб уникнути зайвих запитів і прискорити відображення checkout:

$cacheKey = 'novaposhta_warehouses_' . md5($city);
$cached   = $this->cache->get($cacheKey);

if (!$cached) {
    $cached = $this->fetchWarehousesFromApi($city);
    $this->cache->set($cacheKey, $cached, 3600 * 12); // 12 годин
}

return $cached;

Автоматичне створення ТТН

Після підтвердження замовлення — створюйте ТТН програмно через метод InternetDocument / save. API повертає номер накладної, який зберігається до запису замовлення в адмінці. Менеджер бачить ТТН без жодних ручних дій:

[
    'apiKey'           => $apiKey,
    'modelName'        => 'InternetDocument',
    'calledMethod'     => 'save',
    'methodProperties' => [
        'PayerType'        => 'Recipient',
        'PaymentMethod'    => 'Cash',
        'CargoType'        => 'Parcel',
        'Weight'           => $order['weight'],
        'ServiceType'      => 'WarehouseWarehouse',
        'SeatsAmount'      => 1,
        'Description'      => 'Товар інтернет-магазину',
        'Cost'             => $order['total'],
        'CitySender'       => $senderCityRef,
        'Sender'           => $senderRef,
        'SenderAddress'    => $senderAddressRef,
        'ContactSender'    => $contactSenderRef,
        'SendersPhone'     => $senderPhone,
        'CityRecipient'    => $recipientCityRef,
        'RecipientAddress' => $recipientWarehouseRef,
        'RecipientsPhone'  => $order['telephone'],
        'ContactRecipient' => $recipientContactRef,
    ],
]

Чек-лист запуску

  • Зареєструйте API-ключ у кабінеті Nova Poshta
  • Налаштуйте вагу і габарити для кожного товару в OpenCart
  • Протестуйте розрахунок на реальних адресах у sandbox-режимі
  • Увімкніть кешування відповідей API (Redis або файловий кеш)
  • Перевірте автоматичне створення ТТН на тестовому замовленні

Бізнес-результат

Автоматизована доставка через Nova Poshta API скорочує час обробки замовлень, прибирає клас помилок, пов'язаних з ручним введенням даних, і підвищує конверсію checkout — покупець бачить точну вартість і обирає відділення без зайвих кліків.

Плануєте підключити Nova Poshta або Укрпошту до OpenCart чи WordPress? Команда MaxiMoruM реалізує інтеграцію під ключ. Залиште заявку на maximorum.com — обговоримо деталі протягом одного дзвінка.