lis-dev / nova-poshta-api-2
用于乌克兰快递公司 "Nova Poshta" API 2.0 的 PHP 类
0.1.6
2020-12-09 13:43 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.4
This package is auto-updated.
Last update: 2024-09-26 13:23:18 UTC
README
乌克兰语文档可通过以下链接获取 链接
Nova Poshta API 2.0
该类提供对 Nova Poshta 2.0 API 功能的访问
准备
获取 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
使用
通过 Composer 安装时连接类
require __DIR__ . '/vendor/autoload.php';
通过替代安装连接类
require '<path_to_dir>/src/Delivery/NovaPoshtaApi2.php';
创建类实例
类默认位于 namespace \LisDev\Delivery
。在创建类实例时,需要使用全限定类名或指定使用的 namespace
$np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0');
或在使用 use 部分中指定
use LisDev\Delivery\NovaPoshtaApi2; ... $np = new NovaPoshtaApi2('Ваш_ключ_API_2.0');
有关使用 namespace 的更多信息,请参阅 php 文档网站
创建具有扩展参数的类实例
如果需要用不同于俄语的语言获取数据,或者请求失败时抛出异常,或者服务器上未安装 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['data'][0]['Ref']);
调用任意方法
$result = $np ->model('Имя_модели') ->method('Имя_метода') ->params(array( 'Имя_параметра_1' => 'Значение_параметра_1', 'Имя_параметра_2' => 'Значение_параметра_2', )) ->execute();
实现用于处理模型的函数
InternetDocument 模型
- 保存
- 更新
- 删除
- 获取文档价格
- 获取文档交付日期
- 获取文档列表
- 获取文档
- 打印文档
- 打印标记
- 跟踪文档
- 创建新的 InternetDocument
- 生成报告
Counterparty 模型
- 保存
- 更新
- 删除
- 克隆忠诚度发送方 Counterparty
- 获取 Counterparties
- 获取 Counterparty 地址
- 获取 Counterparty 联系人
- 通过 EDRPOU 获取 Counterparty
- 获取 Counterparty 选项
ContactPerson 模型
- 保存
- 更新
- 删除
Address 模型
- 保存
- 更新
- 删除
- 获取城市
- 获取街道
- 获取仓库
- 获取区域
- 查找最近的仓库
Common 模型
- 获取 Counterparty 类型
- 获取向后运输货物类型
- 获取货物描述列表
- 获取货物类型
- 获取文档状态
- 获取所有权形式列表
- 获取托盘列表
- 获取付款方式
- 获取时间间隔
- 获取服务类型
- 获取轮胎和轮毂列表
- 获取托盘列表
- 获取付款人类型
- 获取重新配送付款人类型
测试
当前测试用例和类使用示例位于文件 tests/NovaPoshtaApi2Test.php
中
要本地运行测试,需要在命令行中执行
composer install
NOVA_POSHTA_API2_KEY=Ваш_ключ_API_2.0 vendor/phpunit/phpunit/phpunit tests