vxdiv/nova-poshta-api-2

用于乌克兰快递公司 "Nova Poshta" API 2.0 的 PHP 类

0.1.3 2019-10-09 17:25 UTC

This package is auto-updated.

Last update: 2024-09-10 03:49:56 UTC


README

Build Status

Nova Poshta API 2.0

该类提供对 "Nova Poshta" 快递服务 API 2.0 的功能访问

准备

获取 API 密钥

使用 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 installphp 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