1. Go to this page and download the library: Download grisaia/nova-poshta 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/ */
grisaia / nova-poshta example snippets
use Grisaia\NovaPoshta\NovaPoshtaAPI;
use Grisaia\NovaPoshta\Services\SettlementService;
// Initialize the API client with your API key
$api = new NovaPoshtaAPI('your-api-key-here');
// Optional: Set custom timeout (default is 4 seconds)
$api->setTimeoutInSeconds(10);
// Optional: Add PSR-3 compatible logger
$api->setLogger($yourLogger);
// Get a service instance
$settlementService = $api->getService(SettlementService::class);
use Grisaia\NovaPoshta\Services\SettlementService;
use Grisaia\NovaPoshta\MethodProperties\Address\SettlementSearchProperties;
$settlementService = $api->getService(SettlementService::class);
// Get settlements list with pagination
$settlements = $settlementService->getSettlementList(
page: 1,
limit: 20,
regionRef: 'some-region-ref', // optional
areaRef: 'some-area-ref', // optional
hasWarehouse: true // optional
);
// Search for settlements
$searchProps = new SettlementSearchProperties();
$searchProps->setCityName('Київ');
$searchProps->setLimit(10);
$searchResults = $settlementService->searchSettlements($searchProps);
// Search settlement streets
$streets = $settlementService->searchSettlementStreets(
streetName: 'Хрещатик',
settlementRef: 'settlement-ref',
limit: 10,
page: 1
);
use Grisaia\NovaPoshta\Services\WarehouseService;
use Grisaia\NovaPoshta\MethodProperties\Address\WarehouseListProperties;
$warehouseService = $api->getService(WarehouseService::class);
// Get warehouses with filters
$warehouseProps = new WarehouseListProperties();
$warehouseProps->setCityName('Київ');
$warehouseProps->setPage(1);
$warehouseProps->setLimit(50);
$warehouseProps->setHasPostFinance(true);
$warehouseProps->satHasBicycleParking(false);
$warehouses = $warehouseService->getWarehouseList($warehouseProps);
// Get warehouse types
$warehouseTypes = $warehouseService->getWarehouseTypeList();
use Grisaia\NovaPoshta\Services\CounterpartyService;
use Grisaia\NovaPoshta\MethodProperties\Counterparty\CounterpartySaveProperties;
use Grisaia\NovaPoshta\MethodProperties\Counterparty\CounterpartyListProperties;
use Grisaia\NovaPoshta\DataAdapters\Enums\CounterpartyPersonType;
use Grisaia\NovaPoshta\DataAdapters\Enums\CounterpartyType;
$counterpartyService = $api->getService(CounterpartyService::class);
// Create a new counterparty
$saveProps = new CounterpartySaveProperties();
$saveProps->setFirstName('Іван');
$saveProps->setLastName('Петренко');
$saveProps->setPhone('0501234567');
$saveProps->setCounterpartyType(CounterpartyType::PrivatePerson);
$result = $counterpartyService->saveCounterparty($saveProps);
// Get counterparties list
$listProps = new CounterpartyListProperties(CounterpartyPersonType::Sender);
$listProps->setPage(1);
$listProps->setLimit(20);
$listProps->findByString('Петренко');
$counterparties = $counterpartyService->getCounterpartyList($listProps);
// Get contact persons for a counterparty
$contacts = $counterpartyService->getCounterpartyContactPerson('counterparty-ref', 1);
use Grisaia\NovaPoshta\Services\DocumentFileService;
use Grisaia\NovaPoshta\DataAdapters\Enums\DocumentPrintType;
$fileService = $api->getService(DocumentFileService::class);
// Save document labels to file
try {
$fileService->saveDocumentsFile(
destination: '/path/to/labels.pdf',
documents: ['20450123456789', '20450987654321'],
type: DocumentPrintType::Sticker,
timeout: 10
);
echo "Labels saved successfully";
} catch (FileSaveException $e) {
echo "Failed to save file: " . $e->getMessage();
}
use Grisaia\NovaPoshta\Services\AdditionalService;
use Grisaia\NovaPoshta\MethodProperties\AdditionalService\Save\OrderRedirectingProperties;
$additionalService = $api->getService(AdditionalService::class);
// Request package redirection
$redirectProps = new OrderRedirectingProperties();
$redirectProps->setDocumentNumber('20450123456789');
$redirectProps->setRecipientPhone('0501234567');
$redirectProps->setRecipientContactName('Нове Ім\'я');
$redirectProps->setNoteAddressRecipient('Нова адреса');
$result = $additionalService->requestAdditionalService($redirectProps);
use Grisaia\NovaPoshta\Services\CityService;
use Grisaia\NovaPoshta\MethodProperties\Address\CityListProperties;
$cityService = $api->getService(CityService::class);
// Get cities list
$cityProps = new CityListProperties();
$cityProps->setPage(1);
$cityProps->setLimit(50);
$cityProps->findByString('Київ');
$cities = $cityService->getCityList($cityProps);
// Convert settlement to city (Nova Poshta specific
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$logger = new Logger('nova-poshta');
$logger->pushHandler(new StreamHandler('path/to/logfile.log', Logger::INFO));
$api = new NovaPoshtaAPI('your-api-key');
$api->setLogger($logger);