PHP code example of aunhurian / nova-poshta-sdk

1. Go to this page and download the library: Download aunhurian/nova-poshta-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

aunhurian / nova-poshta-sdk example snippets


// Створення екземпляру SDK
$apiKey = 'ваш_api_ключ';
$sdk = new \AUnhurian\NovaPoshta\SDK\NovaPoshtaSDK($apiKey);

// Отримання списку міст
$cities = $sdk->address()->getCities(null, 'Київ');

// Параметри для пошуку відділень
$warehouseParams = [
    'FindByString' => 'Відділення'
    // інші параметри
];

// Отримання списку відділень
$warehouses = $sdk->address()->getWarehouses(
    '8d5a980d-391c-11dd-90d9-001a92567626',
    'Відділення',
    1,
    20
);

// Відстеження посилки
$trackingInfo = $sdk->tracking()->getStatusDocuments('59000000000000');

// Отримання списку областей
$areas = $sdk->address()->getAreas();

// Пошук населених пунктів
$settlements = $sdk->address()->searchSettlements('Київ');

// Отримання списку міст з фільтрацією
$cities = $sdk->address()->getCities(null, 'Київ', 1, 20);

// Отримання списку відділень
$warehouses = $sdk->address()->getWarehouses(
    '8d5a980d-391c-11dd-90d9-001a92567626',
    'Відділення',
    1,
    20
);

// Отримання типів відділень
$warehouseTypes = $sdk->address()->getWarehouseTypes();

// Отримання вулиць у місті
$streets = $sdk->address()->getStreet('city_ref', 'Хрещатик', 1, 10);

// Створення нового контрагента (фізична особа)
$counterparty = $sdk->counterparty()->save(
    'PrivatePerson',
    'Іван',
    'Петренко',
    'Васильович',
    '380991234567',
    '[email protected]'
);

// Створення нового контрагента (організація)
$counterparty = $sdk->counterparty()->save(
    'Organization',
    null,
    null,
    null,
    null,
    null,
    'ТОВ "Компанія"',
    '12345678'
);

// Пошук контрагентів
$counterparties = $sdk->counterparty()->getCounterparties(null, 'Пет', 1, 10);

// Отримання контактних осіб контрагента
$contactPersons = $sdk->counterparty()->getCounterpartyContactPersons(
    '005056801329',
    'Recipient'
);

// Розрахунок вартості доставки
$cost = $sdk->document()->getDocumentPrice(
    '8d5a980d-391c-11dd-90d9-001a92567626',
    'db5c88de-391c-11dd-90d9-001a92567626',
    '1',
    'WarehouseWarehouse',
    500,
    1,
    1
);

// Розрахунок дати доставки
$date = $sdk->document()->getDocumentDeliveryDate(
    '8d5a980d-391c-11dd-90d9-001a92567626',
    'db5c88de-391c-11dd-90d9-001a92567626',
    'WarehouseWarehouse',
    '01.01.2023'
);

// Отримання списку накладних
$documents = $sdk->document()->getDocumentList(
    '01.01.2023',
    '01.02.2023',
    1,
    100
);

// Створення нової накладної (спрощений приклад)
$document = $sdk->document()->save([
    'PayerType' => 'Sender',
    'PaymentMethod' => 'Cash',
    'CargoType' => 'Cargo',
    'Weight' => 1,
    'ServiceType' => 'WarehouseWarehouse',
    'SeatsAmount' => 1,
    'Description' => 'Опис вантажу',
    'Cost' => 500,
    'CitySender' => '8d5a980d-391c-11dd-90d9-001a92567626',
    'Sender' => '5ace4a2e-13ee-11e5-add9-005056887b8d',
    'SenderAddress' => '2a8c3606-ab5b-11e9-8094-005056881c6b',
    'ContactSender' => '57b4218d-16d7-11e5-add9-005056887b8d',
    'SendersPhone' => '380991234567',
    'CityRecipient' => 'db5c88de-391c-11dd-90d9-001a92567626',
    'Recipient' => '7da56392-b64b-11e4-a77a-005056887b8d',
    'RecipientAddress' => '7da56392-b64b-11e4-a77a-005056887b8d',
    'ContactRecipient' => '57b4218d-16d7-11e5-add9-005056887b8d',
    'RecipientsPhone' => '380991234567',
]);

// Отримання статусу одного відправлення
$status = $sdk->tracking()->getStatusDocuments('59000000000000');

// Отримання статусу декількох відправлень
$statuses = $sdk->tracking()->getStatusDocumentsBatch([
    ['DocumentNumber' => '59000000000000'],
    ['DocumentNumber' => '59000000000001'],
]);

// Отримання повної історії відправлення
$history = $sdk->tracking()->getStatusHistory('59000000000000');

// Отримання типів вантажу
$cargoTypes = $sdk->common()->getCargoTypes();

// Отримання списку типів оплати
$paymentTypes = $sdk->common()->getTypesOfPayment();

// Отримання списку типів платників
$payerTypes = $sdk->common()->getTypesOfPayers();

// Отримання списку типів послуг
$serviceTypes = $sdk->common()->getServiceTypes();

// Отримання часових інтервалів доставки
$timeIntervals = $sdk->common()->getTimeIntervals(
    'db5c88de-391c-11dd-90d9-001a92567626',
    '01.01.2023'
);

// Отримання повної відповіді API
$response = $sdk->requestWithFullResponse('Address', 'getAreas', []);

// Отримання даних з відповіді
$data = $response->getData();

// Перевірка статусу відповіді
$isSuccess = $response->isSuccess();

// Отримання попереджень
$warnings = $response->getWarnings();

// Отримання інформаційних повідомлень
$info = $response->getInfo();

// Отримання статус-коду HTTP
$statusCode = $response->getStatusCode();

// Отримання сирих даних відповіді
$rawData = $response->getRawData();

// Пряме використання API через SDK
$cities = $sdk->request('Address', 'getCities', ['FindByString' => 'Київ']);

// Пряме використання API з повною відповіддю
$response = $sdk->requestWithFullResponse('Address', 'getCities', ['FindByString' => 'Київ']);
$cities = $response->getData();

// Створення екземпляру SDK
$sdk = new \AUnhurian\NovaPoshta\SDK\NovaPoshtaSDK('your_api_key');

// Налаштування фейкових відповідей
$mockResponses = [
    // Фейкова відповідь для запиту getAreas
    'Address.getAreas' => [
        'response' => [
            'success' => true,
            'data' => [
                [
                    'Ref' => '71508128-9b87-11de-822f-000c2965ae0e',
                    'Description' => 'Київська область',
                    'AreasCenter' => '8d5a980d-391c-11dd-90d9-001a92567626',
                ]
            ],
            'errors' => [],
            'warnings' => [],
            'info' => [],
        ],
    ],
    
    // Фейкова відповідь з перевіркою параметрів
    'Address.getCities' => [
        // Це спрацює тільки якщо параметри включають 'FindByString' => 'Київ'
        'params' => [
            'FindByString' => 'Київ',
        ],
        'response' => [
            'success' => true,
            'data' => [
                [
                    'Ref' => '8d5a980d-391c-11dd-90d9-001a92567626',
                    'Description' => 'Київ',
                ]
            ],
            'errors' => [],
            'warnings' => [],
            'info' => [],
        ],
    ],
    
    // Фейкова відповідь для невдалого запиту
    'Address.getWarehouses' => [
        'response' => [
            'success' => false,
            'data' => [],
            'errors' => ['Помилка API'],
            'warnings' => [],
            'info' => [],
        ],
        'statusCode' => 400,
    ],
];

// Встановлення фейкових відповідей
$sdk->setMockResponses($mockResponses);

// Тепер SDK буде використовувати фейкові відповіді замість реальних API-запитів
$areas = $sdk->address()->getAreas();
// $areas буде містити фейкові дані

// Для запитів з перевіркою параметрів
$cities = $sdk->address()->getCities(null, 'Київ');
// $cities буде містити фейкові дані, оскільки параметри збігаються

// Очищення фейкових відповідей для повернення до нормальної поведінки
$sdk->clearMockResponses();

try {
    $result = $sdk->address()->getAreas();
} catch (AUnhurian\NovaPoshta\SDK\Exceptions\NovaPoshtaApiException $e) {
    // Помилка API Нової Пошти
    echo "API помилка: " . $e->getMessage();
} catch (AUnhurian\NovaPoshta\SDK\Exceptions\NovaPoshtaHttpException $e) {
    // HTTP помилка (мережева помилка)
    echo "HTTP помилка: " . $e->getMessage();
} catch (Exception $e) {
    // Інші помилки
    echo "Помилка: " . $e->getMessage();
}