vxdiv / nova-poshta-api-2
用于乌克兰快递公司 "Nova Poshta" API 2.0 的 PHP 类
0.1.3
2019-10-09 17:25 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.4
This package is auto-updated.
Last update: 2024-09-10 03:49:56 UTC
README
Nova Poshta API 2.0
该类提供对 "Nova Poshta" 快递服务 API 2.0 的功能访问
准备
获取 API 密钥
使用 API 需要
- 在 Nova Poshta 网站上注册
- 在 设置页面 的个人账户中生成用于 API 操作的密钥
获取 API 密钥后,可以使用所有类方法 (官方文档)
安装最新版本的类以使用 API
Git
需要在命令行中执行
git clone https://github.com/lis-dev/nova-poshta-api-2
Composer
需要创建一个包含以下内容的 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
使用
创建类的实例
$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0');
创建类的实例(带扩展参数)
如果需要以非俄语获取数据,或在请求出错或服务器上未安装 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();
用于处理模型实现的方法
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