Skip to content

Commit 0460cf3

Browse files
authored
Merge pull request #49 from lis-dev/48-readme
#48 updated readme, added Ukrainian readme
2 parents 9054456 + 506f5c6 commit 0460cf3

2 files changed

Lines changed: 279 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
Документація українською мовою доступна [за посиланням](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.ua.md)
2+
13
[![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)
24

35
# Nova Poshta API 2.0

README.ua.md

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
Документация на русском языке доступна [по ссылке](https://github.com/lis-dev/nova-poshta-api-2/blob/master/README.md)
2+
3+
[![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)
4+
5+
# Nova Poshta API 2.0
6+
Клас надає доступ до функцій API 2.0 служби доставки Нова Пошта
7+
8+
# Підготовка
9+
## Отримання ключа API
10+
Для використання API потрібно:
11+
* зареєструватися на сайті [Нової Пошти](https://novaposhta.ua)
12+
* На [сторінці налаштувань](https://my.novaposhta.ua/settings/index#apikeys) в особистому кабінеті сгенерувати ключ для роботи з API
13+
14+
Після отримання ключа API надається можливість використовувати всі методи класу [офіційний сайт з документації](https://my.novaposhta.ua/data/API2-200215-1622-28.pdf)
15+
16+
## Установка останньої версії класу для роботи з API
17+
### Git
18+
Необхідно виконати в командному рядку
19+
```git
20+
git clone https://github.com/lis-dev/nova-poshta-api-2
21+
```
22+
### Composer
23+
Необхідно створити файл ``composer.json`` з наступним змістом
24+
```json
25+
{
26+
"require": {
27+
"lis-dev/nova-poshta-api-2": "~0.1.0"
28+
}
29+
}
30+
```
31+
і запустити з командного рядку команду ``php composer.phar install`` чи ``php composer.phar update``
32+
Або виконати в командному рядку
33+
```
34+
composer require lis-dev/nova-poshta-api-2
35+
```
36+
### Альтернативна установка
37+
Необхідно завантажити архів за посиланням
38+
```
39+
https://github.com/lis-dev/nova-poshta-api-2/archive/master.zip
40+
```
41+
# Формати даних
42+
Для вхідних даних використовуються PHP масиви, відповідь сервера може бути отримана в форматі:
43+
* як PHP масив
44+
* JSON
45+
* XML
46+
47+
# Використання
48+
## Підключення класу при установці через composer
49+
```php
50+
require __DIR__ . '/vendor/autoload.php';
51+
```
52+
53+
## Підключення класа за альтернативній установці
54+
```php
55+
require '<path_to_dir>/src/Delivery/NovaPoshtaApi2.php';
56+
```
57+
58+
## Створення екземпляру класа
59+
Клас знаходиться в namespace `\LisDev\Delivery`. При створенні екземпляру класу необхідно
60+
або використовувати Full Qualified Class Name:
61+
```php
62+
$np = new \LisDev\Delivery\NovaPoshtaApi2('Ваш_ключ_API_2.0');
63+
```
64+
або вказати namespace що використовується у секції use:
65+
```php
66+
use LisDev\Delivery\NovaPoshtaApi2;
67+
...
68+
$np = new NovaPoshtaApi2('Ваш_ключ_API_2.0');
69+
```
70+
71+
Більш детальну інформацію по роботі з namespace можно отримати [на сайті документації php](https://www.php.net/manual/ru/language.namespaces.rationale.php)
72+
73+
## Створення екземпляра класу (з розширеними параметрами)
74+
Якщо потрібно отримувати дані на мові, відмінної від російської, виключати Exception при помилці запросу, або за відсутності установленої бібліотеки curl на сервері
75+
```php
76+
$np = new NovaPoshtaApi2(
77+
'Ваш_ключ_API_2.0',
78+
'ru', // Мова повертаємих даних: ru (default) | ua | en
79+
FALSE, // При помилці в запросі виключати Exception: FALSE (default) | TRUE
80+
'curl' // Використовуємий механізм запросу: curl (defalut) | file_get_content
81+
);
82+
```
83+
84+
## Отримання інформації про статус трек-номеру
85+
```php
86+
$result = $np->documentsTracking('59000000000000');
87+
```
88+
89+
## Отримання термінів доставки
90+
```php
91+
// Отримання коду міста за його назвою та області
92+
$sender_city = $np->getCity('Белгород-Днестровский', 'Одесская');
93+
$sender_city_ref = $sender_city['data'][0]['Ref'];
94+
// Отримання коду міста за його назвою та області
95+
$recipient_city = $np->getCity('Киев', 'Киевская');
96+
$recipient_city_ref = $recipient_city['data'][0]['Ref'];
97+
// Дата відправки вантажу
98+
$date = date('d.m.Y');
99+
// Отримання приблизної дати прибуття вантажу між складами в різних містах
100+
$result = $np->getDocumentDeliveryDate($sender_city_ref, $recipient_city_ref, 'WarehouseWarehouse', $date);
101+
```
102+
## Отримання вартості доставки
103+
```php
104+
// Отримання коду міста за його назвою та області
105+
$sender_city = $np->getCity('Белгород-Днестровский', 'Одесская');
106+
$sender_city_ref = $sender_city['data'][0]['Ref'];
107+
// Отримання коду міста за його назвою та області
108+
$recipient_city = $np->getCity('Киев', 'Киевская');
109+
$recipient_city_ref = $recipient_city['data'][0]['Ref'];
110+
// Вага вантажу
111+
$weight = 7;
112+
// Ціна в грн
113+
$price = 5450;
114+
// Отримання вартості доставки вантажу з зазначеною вагою та вартістю між складами в різних містах
115+
$result = $np->getDocumentPrice($sender_city_ref, $recipient_city_ref, 'WarehouseWarehouse', $weight, $price);
116+
```
117+
## Генерація нової поштової накладної
118+
```php
119+
// Перед генерацією ЕН необхідно отримати дані відправника
120+
// Отримання всіх відправників
121+
$senderInfo = $np->getCounterparties('Sender', 1, '', '');
122+
// Вибір відправника у конкретному місті (у цьому випадку - першому за списком)
123+
$sender = $senderInfo['data'][0];
124+
// Інформація склада відправника
125+
$senderWarehouses = $np->getWarehouses($sender['City']);
126+
// Генерація нової ЕН
127+
$result = $np->newInternetDocument(
128+
// Дані відправника
129+
array(
130+
// Дані користувача
131+
'FirstName' => $sender['FirstName'],
132+
'MiddleName' => $sender['MiddleName'],
133+
'LastName' => $sender['LastName'],
134+
// Замість FirstName, MiddleName, LastName можна ввести зареєстровані ПІБ відправника чи найменування фірми для юридичних особ
135+
// (можна отримати за допомогою методу getCounterparties('Sender', 1, '', ''))
136+
// 'Description' => $sender['Description'],
137+
// Необов'язкове поле, у випадку відсутності будуть використовуватися з даних контакта
138+
// 'Phone' => '0631112233',
139+
// Місто відправлення
140+
// 'City' => 'Белгород-Днестровский',
141+
// Область відправлення
142+
// 'Region' => 'Одесская',
143+
'CitySender' => $sender['City'],
144+
// Відділення відправника по ID (у цьому випадку - перше у списку)
145+
'SenderAddress' => $senderWarehouses['data'][0]['Ref'],
146+
// Відділення за адресою
147+
// 'Warehouse' => $senderWarehouses['data'][0]['DescriptionRu'],
148+
),
149+
// Дані отримувача
150+
array(
151+
'FirstName' => 'Сидор',
152+
'MiddleName' => 'Сидорович',
153+
'LastName' => 'Сиродов',
154+
'Phone' => '0509998877',
155+
'City' => 'Киев',
156+
'Region' => 'Киевская',
157+
'Warehouse' => 'Отделение №3: ул. Калачевская, 13 (Старая Дарница)',
158+
),
159+
array(
160+
// Дата відправлення
161+
'DateTime' => date('d.m.Y'),
162+
// Тип доставки, додатково - getServiceTypes()
163+
'ServiceType' => 'WarehouseWarehouse',
164+
// Тип оплати, додатково - getPaymentForms()
165+
'PaymentMethod' => 'Cash',
166+
// Хто сплачує доставку
167+
'PayerType' => 'Recipient',
168+
// Вартість вантажу в грн
169+
'Cost' => '500',
170+
// Кількість місць
171+
'SeatsAmount' => '1',
172+
// Опис вантажу
173+
'Description' => 'Кастрюля',
174+
// Тип доставки, додатково - getCargoTypes
175+
'CargoType' => 'Cargo',
176+
// Вага вантажу
177+
'Weight' => '10',
178+
// Об'єм вантажу в м^3
179+
'VolumeGeneral' => '0.5',
180+
// Зворотня доставка
181+
'BackwardDeliveryData' => array(
182+
array(
183+
// Хто оплачує зворотню доставку
184+
'PayerType' => 'Recipient',
185+
// Тип доставки
186+
'CargoType' => 'Money',
187+
// Значення зворотньої доставки
188+
'RedeliveryString' => 4552,
189+
)
190+
)
191+
)
192+
);
193+
```
194+
## Отримання складів в зазначеному місті
195+
```php
196+
// В параметрах вказується місто і область (для більш точного пошуку)
197+
$city = $np->getCity('Киев', 'Киевская');
198+
$result = $np->getWarehouses($city['data'][0]['Ref']);
199+
```
200+
## Виклик довільного метода
201+
```php
202+
$result = $np
203+
->model('Имя_модели')
204+
->method('Имя_метода')
205+
->params(array(
206+
'Имя_параметра_1' => 'Значение_параметра_1',
207+
'Имя_параметра_2' => 'Значение_параметра_2',
208+
))
209+
->execute();
210+
```
211+
212+
# Реалізовані методи для роботи з моделями
213+
214+
## Модель InternetDocument
215+
* save
216+
* update
217+
* delete
218+
* getDocumentPrice
219+
* getDocumentDeliveryDate
220+
* getDocumentList
221+
* getDocument
222+
* printDocument
223+
* printMarkings
224+
* documentsTracking
225+
* newInternetDocument
226+
* generateReport
227+
228+
## Модель Counterparty
229+
* save
230+
* update
231+
* delete
232+
* cloneLoyaltyCounterpartySender
233+
* getCounterparties
234+
* getCounterpartyAddresses
235+
* getCounterpartyContactPersons
236+
* getCounterpartyByEDRPOU
237+
* getCounterpartyOptions
238+
239+
## Модель ContactPerson
240+
* save
241+
* update
242+
* delete
243+
244+
## Модель Address
245+
* save
246+
* update
247+
* delete
248+
* getCities
249+
* getStreet
250+
* getWarehouses
251+
* getAreas
252+
* findNearestWarehouse
253+
254+
## Модель Common
255+
* getTypesOfCounterparties
256+
* getBackwardDeliveryCargoTypes
257+
* getCargoDescriptionList
258+
* getCargoTypes
259+
* getDocumentStatuses
260+
* getOwnershipFormsList
261+
* getPalletsList
262+
* getPaymentForms
263+
* getTimeIntervals
264+
* getServiceTypes
265+
* getTiresWheelsList
266+
* getTraysList
267+
* getTypesOfPayers
268+
* getTypesOfPayersForRedelivery
269+
270+
# Тести
271+
Актуальні тести та приклади використання класу знаходяться у файлі `tests/NovaPoshtaApi2Test.php`
272+
273+
Для запуску тестів локально необхідно виконати в командному рядку
274+
```
275+
composer install
276+
NOVA_POSHTA_API2_KEY=Ваш_ключ_API_2.0 vendor/phpunit/phpunit/phpunit tests
277+
```

0 commit comments

Comments
 (0)