Класс предоставляет доступ к функциям 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": "dev-master"
}
}
и запустить из командной строки команду php composer.phar install
или php composer.phar update
Или выполнить в командной строке
composer require lis-dev/nova-poshta-api-2:dev-master
Необходимо скачать архив по ссылке
https://github.com/lis-dev/nova-poshta-api-2/archive/master.zip
Для входящих данных используются PHP массивы, ответ сервера может быть получен в формате:
- как PHP массив
- JSON
- XML
$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0');
Рекомендуется использовать, если необходимо получать данные на языке, отличном от русского, выбрасывать 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',
// Объем груза в куб.м.
'VolumeGeneral' => '0.5',
// Обратная доставка
'BackwardDeliveryData' => array(
array(
// Кто оплачивает обратную доставку
'PayerType' => 'Recipient',
// Тип доставки
'CargoType' => 'Money',
// Значение обратной доставки
'RedeliveryString' => 4552,
)
)
)
);
// В параметрах указывается город и область (для более точного поиска)
$city = $np->getCity('Киев', 'Киевская');
$result = $np->getWarehouses($city);
$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