Документация на русском языке доступна по ссылке
Клас надає доступ до функцій API 2.0 служби доставки Нова Пошта
Для використання API потрібно:
- зареєструватися на сайті Нової Пошти
- На сторінці налаштувань в особистому кабінеті сгенерувати ключ для роботи з API
Після отримання ключа API надається можливість використовувати всі методи класу офіційний сайт з документації
Необхідно виконати в командному рядку
git clone https://github.com/lis-dev/nova-poshta-api-2
Необхідно створити файл composer.json
з наступним змістом
{
"require": {
"lis-dev/nova-poshta-api-2": "~0.1.0"
}
}
і запустити з командного рядку команду php composer.phar install
чи php composer.phar update
Або виконати в командному рядку
composer require lis-dev/nova-poshta-api-2
Необхідно завантажити архів за посиланням
https://github.com/lis-dev/nova-poshta-api-2/archive/master.zip
Для вхідних даних використовуються PHP масиви, відповідь сервера може бути отримана в форматі:
- як PHP масив
- JSON
- XML
require __DIR__ . '/vendor/autoload.php';
require '<path_to_dir>/src/Delivery/NovaPoshtaApi2.php';
Клас знаходиться в namespace \LisDev\Delivery
. При створенні екземпляру класу необхідно
або використовувати Full Qualified Class Name:
$np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0');
або вказати namespace що використовується у секції use:
use LisDev\Delivery\NovaPoshtaApi2;
...
$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0');
Більш детальну інформацію по роботі з namespace можно отримати на сайті документації php
Якщо потрібно отримувати дані на мові, відмінної від російської, виключати Exception при помилці запросу, або за відсутності установленої бібліотеки curl на сервері
$np = new NovaPoshtaApi2(
'Ваш_ключ_API_2.0',
'ru', // Мова повертаємих даних: ru (default) | ua | en
FALSE, // При помилці в запросі виключати Exception: FALSE (default) | TRUE
'curl' // Використовуємий механізм запросу: curl (defalut) | file_get_content
);
$result = $np->documentsTracking('59000000000000');
// Отримання коду міста за його назвою та області
$sender_city = $np->getCity('Белгород-Днестровский', 'Одесская');
$sender_city_ref = $sender_city['data'][0]['Ref'];
// Отримання коду міста за його назвою та області
$recipient_city = $np->getCity('Киев', 'Киевская');
$recipient_city_ref = $recipient_city['data'][0]['Ref'];
// Дата відправки вантажу
$date = date('d.m.Y');
// Отримання приблизної дати прибуття вантажу між складами в різних містах
$result = $np->getDocumentDeliveryDate($sender_city_ref, $recipient_city_ref, 'WarehouseWarehouse', $date);
// Отримання коду міста за його назвою та області
$sender_city = $np->getCity('Белгород-Днестровский', 'Одесская');
$sender_city_ref = $sender_city['data'][0]['Ref'];
// Отримання коду міста за його назвою та області
$recipient_city = $np->getCity('Киев', 'Киевская');
$recipient_city_ref = $recipient_city['data'][0]['Ref'];
// Вага вантажу
$weight = 7;
// Ціна в грн
$price = 5450;
// Отримання вартості доставки вантажу з зазначеною вагою та вартістю між складами в різних містах
$result = $np->getDocumentPrice($sender_city_ref, $recipient_city_ref, 'WarehouseWarehouse', $weight, $price);
// Перед генерацією ЕН необхідно отримати дані відправника
// Отримання всіх відправників
$senderInfo = $np->getCounterparties('Sender', 1, '', '');
// Вибір відправника у конкретному місті (у цьому випадку - першому за списком)
$sender = $senderInfo['data'][0];
// Інформація склада відправника
$senderWarehouses = $np->getWarehouses($sender['City']);
// Генерація нової ЕН
$result = $np->newInternetDocument(
// Дані відправника
array(
// Дані користувача
'FirstName' => $sender['FirstName'],
'MiddleName' => $sender['MiddleName'],
'LastName' => $sender['LastName'],
// Замість FirstName, MiddleName, LastName можна ввести зареєстровані ПІБ відправника чи найменування фірми для юридичних особ
// (можна отримати за допомогою методу getCounterparties('Sender', 1, '', ''))
// 'Description' => $sender['Description'],
// Необов'язкове поле, у випадку відсутності будуть використовуватися з даних контакта
// 'Phone' => '0631112233',
// Місто відправлення
// 'City' => 'Белгород-Днестровский',
// Область відправлення
// 'Region' => 'Одесская',
'CitySender' => $sender['City'],
// Відділення відправника по ID (у цьому випадку - перше у списку)
'SenderAddress' => $senderWarehouses['data'][0]['Ref'],
// Відділення за адресою
// 'Warehouse' => $senderWarehouses['data'][0]['DescriptionRu'],
),
// Дані отримувача
array(
'FirstName' => 'Сидор',
'MiddleName' => 'Сидорович',
'LastName' => 'Сиродов',
'Phone' => '0509998877',
'City' => 'Киев',
'Region' => 'Киевская',
'Warehouse' => 'Отделение №3: ул. Калачевская, 13 (Старая Дарница)',
),
array(
// Дата відправлення
'DateTime' => date('d.m.Y'),
// Тип доставки, додатково - getServiceTypes()
'ServiceType' => 'WarehouseWarehouse',
// Тип оплати, додатково - getPaymentForms()
'PaymentMethod' => 'Cash',
// Хто сплачує доставку
'PayerType' => 'Recipient',
// Вартість вантажу в грн
'Cost' => '500',
// Кількість місць
'SeatsAmount' => '1',
// Опис вантажу
'Description' => 'Кастрюля',
// Тип доставки, додатково - getCargoTypes
'CargoType' => 'Cargo',
// Вага вантажу
'Weight' => '10',
// Об'єм вантажу в м^3
'VolumeGeneral' => '0.5',
// Зворотня доставка
'BackwardDeliveryData' => array(
array(
// Хто оплачує зворотню доставку
'PayerType' => 'Recipient',
// Тип доставки
'CargoType' => 'Money',
// Значення зворотньої доставки
'RedeliveryString' => 4552,
)
)
)
);
// В параметрах вказується місто і область (для більш точного пошуку)
$city = $np->getCity('Киев', 'Киевская');
$result = $np->getWarehouses($city['data'][0]['Ref']);
$result = $np
->model('Имя_модели')
->method('Имя_метода')
->params(array(
'Имя_параметра_1' => 'Значение_параметра_1',
'Имя_параметра_2' => 'Значение_параметра_2',
))
->execute();
- save
- update
- delete
- getDocumentPrice
- getDocumentDeliveryDate
- getDocumentList
- getDocument
- printDocument
- printMarkings
- documentsTracking
- newInternetDocument
- generateReport
- save
- update
- delete
- cloneLoyaltyCounterpartySender
- getCounterparties
- getCounterpartyAddresses
- getCounterpartyContactPersons
- getCounterpartyByEDRPOU
- getCounterpartyOptions
- save
- update
- delete
- save
- update
- delete
- getCities
- getStreet
- getWarehouses
- getAreas
- findNearestWarehouse
- getTypesOfCounterparties
- getBackwardDeliveryCargoTypes
- getCargoDescriptionList
- getCargoTypes
- getDocumentStatuses
- getOwnershipFormsList
- getPalletsList
- getPaymentForms
- getTimeIntervals
- getServiceTypes
- getTiresWheelsList
- getTraysList
- getTypesOfPayers
- getTypesOfPayersForRedelivery
Актуальні тести та приклади використання класу знаходяться у файлі tests/NovaPoshtaApi2Test.php
Для запуску тестів локально необхідно виконати в командному рядку
composer install
NOVA_POSHTA_API2_KEY=Ваш_ключ_API_2.0 vendor/phpunit/phpunit/phpunit tests