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