diff --git a/README-RU.md b/README-RU.md new file mode 100644 index 0000000..8b3459d --- /dev/null +++ b/README-RU.md @@ -0,0 +1,277 @@ +Документація українською мовою доступна [за посиланням](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.ua.md) + +[![Build Status](https://travis-ci.com/lis-dev/nova-poshta-api-2.svg?branch=master)](https://travis-ci.com/lis-dev/nova-poshta-api-2) + +# Nova Poshta API 2.0 +Класс предоставляет доступ к функциям API 2.0 службы доставки Новая Почта + +# Подготовка +## Получение ключа API +Для использования API необходимо: +* зарегистрироваться на сайте [Новой Почты](http://novaposhta.ua) +* На [странице настроек](https://my.novaposhta.ua/settings/index#apikeys) в личном кабинете сгенерировать ключ для работы с API + +После получения ключа API предоставляется возможность использовать все методы класса [официальной из документации](https://my.novaposhta.ua/data/API2-200215-1622-28.pdf) + +## Установка последней версии класса для работы с API +### Git +Необходимо выполнить в командной строке +```git +git clone https://github.com/lis-dev/nova-poshta-api-2 +``` +### Composer +Необходимо создать файл ``composer.json`` со следующим содержанием +```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 + +# Использование +## Подключение класса при установке через composer +```php +require __DIR__ . '/vendor/autoload.php'; +``` + +## Подключение класса при альтернативной установке +```php +require '/src/Delivery/NovaPoshtaApi2.php'; +``` + +## Создание экземпляра класса +Класс по умолчанию находится в namespace `\LisDev\Delivery`. При создании экземпляра класса необходимо +или использовать Full Qualified Class Name: +```php +$np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0'); +``` +или указать используемый namespace в секции use: +```php +use LisDev\Delivery\NovaPoshtaApi2; +... +$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0'); +``` + +Более подробную информацию по работе с namespace можно получить [на сайте документации php](https://www.php.net/manual/ru/language.namespaces.rationale.php) + +## Создание экземпляра класса (с расширенными параметрами) +Рекомендуется использовать, если необходимо получать данные на языке, отличном от русского, выбрасывать Exception при ошибке запроса, или при отсутствии установленной библиотеки curl на сервере +```php +$np = new NovaPoshtaApi2( + 'Ваш_ключ_API_2.0', + 'ru', // Язык возвращаемых данных: ru (default) | ua | en + FALSE, // При ошибке в запросе выбрасывать Exception: FALSE (default) | TRUE + 'curl' // Используемый механизм запроса: curl (defalut) | file_get_content +); +``` + +## Получение информации о трек-номере +```php +$result = $np->documentsTracking('59000000000000'); +``` + +## Получение сроков доставки +```php +// Получение кода города по названию города и области +$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); +``` +## Получение стоимости доставки +```php +// Получение кода города по названию города и области +$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); +``` +## Генерирование новой электронной накладной +```php +// Перед генерированием ЭН необходимо получить данные отправителя +// Получение всех отправителей +$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', + // Объем груза в куб.м. + 'VolumeGeneral' => '0.5', + // Обратная доставка + 'BackwardDeliveryData' => array( + array( + // Кто оплачивает обратную доставку + 'PayerType' => 'Recipient', + // Тип доставки + 'CargoType' => 'Money', + // Значение обратной доставки + 'RedeliveryString' => 4552, + ) + ) + ) +); +``` +## Получение складов в определенном городе +```php +// В параметрах указывается город и область (для более точного поиска) +$city = $np->getCity('Киев', 'Киевская'); +$result = $np->getWarehouses($city['data'][0]['Ref']); +``` +## Вызов произвольного метода +```php +$result = $np + ->model('Имя_модели') + ->method('Имя_метода') + ->params(array( + 'Имя_параметра_1' => 'Значение_параметра_1', + 'Имя_параметра_2' => 'Значение_параметра_2', + )) + ->execute(); +``` + +# Реализованные методы для работы с моделями + +## Модель InternetDocument +* save +* update +* delete +* getDocumentPrice +* getDocumentDeliveryDate +* getDocumentList +* getDocument +* printDocument +* printMarkings +* documentsTracking +* newInternetDocument +* generateReport + +## Модель Counterparty +* save +* update +* delete +* cloneLoyaltyCounterpartySender +* getCounterparties +* getCounterpartyAddresses +* getCounterpartyContactPersons +* getCounterpartyByEDRPOU +* getCounterpartyOptions + +## Модель ContactPerson +* save +* update +* delete + +## Модель Address +* save +* update +* delete +* getCities +* getStreet +* getWarehouses +* getAreas +* findNearestWarehouse + +## Модель Common +* 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 +``` diff --git a/README.md b/README.md index 8b3459d..61b3cde 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,26 @@ -Документація українською мовою доступна [за посиланням](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.ua.md) +Документация на русском языке доступна [по ссылке](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.md) [![Build Status](https://travis-ci.com/lis-dev/nova-poshta-api-2.svg?branch=master)](https://travis-ci.com/lis-dev/nova-poshta-api-2) # Nova Poshta API 2.0 -Класс предоставляет доступ к функциям API 2.0 службы доставки Новая Почта +Клас надає доступ до функцій API 2.0 служби доставки Нова Пошта -# Подготовка -## Получение ключа API -Для использования API необходимо: -* зарегистрироваться на сайте [Новой Почты](http://novaposhta.ua) -* На [странице настроек](https://my.novaposhta.ua/settings/index#apikeys) в личном кабинете сгенерировать ключ для работы с API +# Підготовка +## Отримання ключа API +Для використання API потрібно: +* зареєструватися на сайті [Нової Пошти](https://novaposhta.ua) +* На [сторінці налаштувань](https://my.novaposhta.ua/settings/index#apikeys) в особистому кабінеті сгенерувати ключ для роботи з API -После получения ключа API предоставляется возможность использовать все методы класса [официальной из документации](https://my.novaposhta.ua/data/API2-200215-1622-28.pdf) +Після отримання ключа API надається можливість використовувати всі методи класу [офіційний сайт з документації](https://my.novaposhta.ua/data/API2-200215-1622-28.pdf) -## Установка последней версии класса для работы с API +## Установка останньої версії класу для роботи з API ### Git -Необходимо выполнить в командной строке +Необхідно виконати в командному рядку ```git git clone https://github.com/lis-dev/nova-poshta-api-2 ``` ### Composer -Необходимо создать файл ``composer.json`` со следующим содержанием +Необхідно створити файл ``composer.json`` з наступним змістом ```json { "require": { @@ -28,125 +28,125 @@ git clone https://github.com/lis-dev/nova-poshta-api-2 } } ``` -и запустить из командной строки команду ``php composer.phar install`` или ``php composer.phar update`` -Или выполнить в командной строке +і запустити з командного рядку команду ``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 массив +# Формати даних +Для вхідних даних використовуються PHP масиви, відповідь сервера може бути отримана в форматі: +* як PHP масив * JSON * XML -# Использование -## Подключение класса при установке через composer +# Використання +## Підключення класу при установці через composer ```php require __DIR__ . '/vendor/autoload.php'; ``` -## Подключение класса при альтернативной установке +## Підключення класа за альтернативній установці ```php require '/src/Delivery/NovaPoshtaApi2.php'; ``` -## Создание экземпляра класса -Класс по умолчанию находится в namespace `\LisDev\Delivery`. При создании экземпляра класса необходимо -или использовать Full Qualified Class Name: +## Створення екземпляру класа +Клас знаходиться в namespace `\LisDev\Delivery`. При створенні екземпляру класу необхідно +або використовувати Full Qualified Class Name: ```php $np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0'); ``` -или указать используемый namespace в секции use: +або вказати namespace що використовується у секції use: ```php use LisDev\Delivery\NovaPoshtaApi2; ... $np = new NovaPoshtaApi2('Ваш_ключ_API_2.0'); ``` -Более подробную информацию по работе с namespace можно получить [на сайте документации php](https://www.php.net/manual/ru/language.namespaces.rationale.php) +Більш детальну інформацію по роботі з namespace можно отримати [на сайті документації php](https://www.php.net/manual/ru/language.namespaces.rationale.php) -## Создание экземпляра класса (с расширенными параметрами) -Рекомендуется использовать, если необходимо получать данные на языке, отличном от русского, выбрасывать Exception при ошибке запроса, или при отсутствии установленной библиотеки curl на сервере +## Створення екземпляра класу (з розширеними параметрами) +Якщо потрібно отримувати дані на мові, відмінної від російської, виключати Exception при помилці запросу, або за відсутності установленої бібліотеки curl на сервері ```php $np = new NovaPoshtaApi2( 'Ваш_ключ_API_2.0', - 'ru', // Язык возвращаемых данных: ru (default) | ua | en - FALSE, // При ошибке в запросе выбрасывать Exception: FALSE (default) | TRUE - 'curl' // Используемый механизм запроса: curl (defalut) | file_get_content + 'ru', // Мова повертаємих даних: ru (default) | ua | en + FALSE, // При помилці в запросі виключати Exception: FALSE (default) | TRUE + 'curl' // Використовуємий механізм запросу: curl (defalut) | file_get_content ); ``` -## Получение информации о трек-номере +## Отримання інформації про статус трек-номеру ```php $result = $np->documentsTracking('59000000000000'); ``` -## Получение сроков доставки +## Отримання термінів доставки ```php -// Получение кода города по названию города и области +// Отримання коду міста за його назвою та області $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); ``` -## Получение стоимости доставки +## Отримання вартості доставки ```php -// Получение кода города по названию города и области +// Отримання коду міста за його назвою та області $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); ``` -## Генерирование новой электронной накладной +## Генерація нової поштової накладної ```php -// Перед генерированием ЭН необходимо получить данные отправителя -// Получение всех отправителей +// Перед генерацією ЕН необхідно отримати дані відправника +// Отримання всіх відправників $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, '', '')) + // Замість FirstName, MiddleName, LastName можна ввести зареєстровані ПІБ відправника чи найменування фірми для юридичних особ + // (можна отримати за допомогою методу getCounterparties('Sender', 1, '', '')) // 'Description' => $sender['Description'], - // Необязательное поле, в случае отсутствия будет использоваться из данных контакта + // Необов'язкове поле, у випадку відсутності будуть використовуватися з даних контакта // 'Phone' => '0631112233', - // Город отправления + // Місто відправлення // 'City' => 'Белгород-Днестровский', - // Область отправления + // Область відправлення // 'Region' => 'Одесская', 'CitySender' => $sender['City'], - // Отделение отправления по ID (в данном случае - в первом попавшемся) + // Відділення відправника по ID (у цьому випадку - перше у списку) 'SenderAddress' => $senderWarehouses['data'][0]['Ref'], - // Отделение отправления по адресу + // Відділення за адресою // 'Warehouse' => $senderWarehouses['data'][0]['DescriptionRu'], ), - // Данные получателя + // Дані отримувача array( 'FirstName' => 'Сидор', 'MiddleName' => 'Сидорович', @@ -157,47 +157,47 @@ $result = $np->newInternetDocument( 'Warehouse' => 'Отделение №3: ул. Калачевская, 13 (Старая Дарница)', ), array( - // Дата отправления + // Дата відправлення 'DateTime' => date('d.m.Y'), - // Тип доставки, дополнительно - getServiceTypes() + // Тип доставки, додатково - getServiceTypes() 'ServiceType' => 'WarehouseWarehouse', - // Тип оплаты, дополнительно - getPaymentForms() + // Тип оплати, додатково - getPaymentForms() 'PaymentMethod' => 'Cash', - // Кто оплачивает за доставку + // Хто сплачує доставку 'PayerType' => 'Recipient', - // Стоимость груза в грн + // Вартість вантажу в грн 'Cost' => '500', - // Кол-во мест + // Кількість місць 'SeatsAmount' => '1', - // Описание груза + // Опис вантажу 'Description' => 'Кастрюля', - // Тип доставки, дополнительно - getCargoTypes + // Тип доставки, додатково - getCargoTypes 'CargoType' => 'Cargo', - // Вес груза + // Вага вантажу 'Weight' => '10', - // Объем груза в куб.м. + // Об'єм вантажу в м^3 'VolumeGeneral' => '0.5', - // Обратная доставка + // Зворотня доставка 'BackwardDeliveryData' => array( array( - // Кто оплачивает обратную доставку + // Хто оплачує зворотню доставку 'PayerType' => 'Recipient', // Тип доставки 'CargoType' => 'Money', - // Значение обратной доставки + // Значення зворотньої доставки 'RedeliveryString' => 4552, ) ) ) ); ``` -## Получение складов в определенном городе +## Отримання складів в зазначеному місті ```php -// В параметрах указывается город и область (для более точного поиска) +// В параметрах вказується місто і область (для більш точного пошуку) $city = $np->getCity('Киев', 'Киевская'); $result = $np->getWarehouses($city['data'][0]['Ref']); ``` -## Вызов произвольного метода +## Виклик довільного метода ```php $result = $np ->model('Имя_модели') @@ -209,7 +209,7 @@ $result = $np ->execute(); ``` -# Реализованные методы для работы с моделями +# Реалізовані методи для роботи з моделями ## Модель InternetDocument * save @@ -267,10 +267,10 @@ $result = $np * getTypesOfPayers * getTypesOfPayersForRedelivery -# Тесты -Актуальные тесты и примеры использования класса находятся в файле `tests/NovaPoshtaApi2Test.php` +# Тести +Актуальні тести та приклади використання класу знаходяться у файлі `tests/NovaPoshtaApi2Test.php` -Для запуска тестов локально необходимо выполнить в командной строке +Для запуску тестів локально необхідно виконати в командному рядку ``` composer install NOVA_POSHTA_API2_KEY=Ваш_ключ_API_2.0 vendor/phpunit/phpunit/phpunit tests diff --git a/README.ua.md b/README.ua.md deleted file mode 100644 index 61b3cde..0000000 --- a/README.ua.md +++ /dev/null @@ -1,277 +0,0 @@ -Документация на русском языке доступна [по ссылке](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.md) - -[![Build Status](https://travis-ci.com/lis-dev/nova-poshta-api-2.svg?branch=master)](https://travis-ci.com/lis-dev/nova-poshta-api-2) - -# Nova Poshta API 2.0 -Клас надає доступ до функцій API 2.0 служби доставки Нова Пошта - -# Підготовка -## Отримання ключа API -Для використання API потрібно: -* зареєструватися на сайті [Нової Пошти](https://novaposhta.ua) -* На [сторінці налаштувань](https://my.novaposhta.ua/settings/index#apikeys) в особистому кабінеті сгенерувати ключ для роботи з API - -Після отримання ключа API надається можливість використовувати всі методи класу [офіційний сайт з документації](https://my.novaposhta.ua/data/API2-200215-1622-28.pdf) - -## Установка останньої версії класу для роботи з API -### Git -Необхідно виконати в командному рядку -```git -git clone https://github.com/lis-dev/nova-poshta-api-2 -``` -### Composer -Необхідно створити файл ``composer.json`` з наступним змістом -```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 - -# Використання -## Підключення класу при установці через composer -```php -require __DIR__ . '/vendor/autoload.php'; -``` - -## Підключення класа за альтернативній установці -```php -require '/src/Delivery/NovaPoshtaApi2.php'; -``` - -## Створення екземпляру класа -Клас знаходиться в namespace `\LisDev\Delivery`. При створенні екземпляру класу необхідно -або використовувати Full Qualified Class Name: -```php -$np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0'); -``` -або вказати namespace що використовується у секції use: -```php -use LisDev\Delivery\NovaPoshtaApi2; -... -$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0'); -``` - -Більш детальну інформацію по роботі з namespace можно отримати [на сайті документації php](https://www.php.net/manual/ru/language.namespaces.rationale.php) - -## Створення екземпляра класу (з розширеними параметрами) -Якщо потрібно отримувати дані на мові, відмінної від російської, виключати Exception при помилці запросу, або за відсутності установленої бібліотеки curl на сервері -```php -$np = new NovaPoshtaApi2( - 'Ваш_ключ_API_2.0', - 'ru', // Мова повертаємих даних: ru (default) | ua | en - FALSE, // При помилці в запросі виключати Exception: FALSE (default) | TRUE - 'curl' // Використовуємий механізм запросу: curl (defalut) | file_get_content -); -``` - -## Отримання інформації про статус трек-номеру -```php -$result = $np->documentsTracking('59000000000000'); -``` - -## Отримання термінів доставки -```php -// Отримання коду міста за його назвою та області -$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); -``` -## Отримання вартості доставки -```php -// Отримання коду міста за його назвою та області -$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); -``` -## Генерація нової поштової накладної -```php -// Перед генерацією ЕН необхідно отримати дані відправника -// Отримання всіх відправників -$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, - ) - ) - ) -); -``` -## Отримання складів в зазначеному місті -```php -// В параметрах вказується місто і область (для більш точного пошуку) -$city = $np->getCity('Киев', 'Киевская'); -$result = $np->getWarehouses($city['data'][0]['Ref']); -``` -## Виклик довільного метода -```php -$result = $np - ->model('Имя_модели') - ->method('Имя_метода') - ->params(array( - 'Имя_параметра_1' => 'Значение_параметра_1', - 'Имя_параметра_2' => 'Значение_параметра_2', - )) - ->execute(); -``` - -# Реалізовані методи для роботи з моделями - -## Модель InternetDocument -* save -* update -* delete -* getDocumentPrice -* getDocumentDeliveryDate -* getDocumentList -* getDocument -* printDocument -* printMarkings -* documentsTracking -* newInternetDocument -* generateReport - -## Модель Counterparty -* save -* update -* delete -* cloneLoyaltyCounterpartySender -* getCounterparties -* getCounterpartyAddresses -* getCounterpartyContactPersons -* getCounterpartyByEDRPOU -* getCounterpartyOptions - -## Модель ContactPerson -* save -* update -* delete - -## Модель Address -* save -* update -* delete -* getCities -* getStreet -* getWarehouses -* getAreas -* findNearestWarehouse - -## Модель Common -* 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 -```