lis-dev / nova-poshta-api-2 Goto Github PK
View Code? Open in Web Editor NEWPHP class for API 2.0 ukrainian delivery company "Nova Poshta"
PHP class for API 2.0 ukrainian delivery company "Nova Poshta"
Прежде хочу Вас поблагодарить за Ваш труд, интегрировал ее на свой сайт , но есть проблема, попробую описать:
а вот с получателем есть проблема. Ввожу город получателя "Покровск" по Вашему коду:
array(
'FirstName' => 'Виктория',
'MiddleName' => 'Викторовна',
'LastName' => 'Ремизова',
'Phone' => '380950960973',
'City' => 'Покровск',
'Region' => 'Донецкая',
'Warehouse' => 'Відділення №3 (до 30 кг): вул. Поштова (ран. Соціалистична), 12',
),
Пробовал сделать так же как и с отправителем , получаю ошибку от sdk:
Fatal error: Uncaught Exception: City is required filed for recipient in /home/virtwww/w_4girl-org_aa83ed29/http/admin/include/Delivery/NovaPoshtaApi2.php:866 Stack trace: #0 /home/virtwww/w_4girl-org_aa83ed29/http/admin/include/Delivery/NovaPoshtaApi2.php(928): LisDev\Delivery\NovaPoshtaApi2->checkInternetDocumentRecipient(Array) #1 /home/virtwww/w_4girl-org_aa83ed29/http/admin/include/creat_ttn_np.php(49): LisDev\Delivery\NovaPoshtaApi2->newInternetDocument(Array, Array, Array) #2 {main} thrown in /home/virtwww/w_4girl-org_aa83ed29/http/admin/include/Delivery/NovaPoshtaApi2.php on line 866
Подскажите что означает ошибка "Cost is required filed for new Internet document"?
Покажите как правильно пользоваться getDocumentList? у меня постоянно возрощяет пусто :(
$np = new NovaPoshtaApi2(NPKEY, 'ru');
$rez=$np->getDocumentList(array('GetFullList'=>1, "DateTimeFrom"=>"01.10.2018", "DateTimeFrom" => "12.10.2018"));
print_r($rez);
Array
(
[success] => 1
[data] => Array
(
)
[errors] => Array
(
)
[warnings] => Array
(
)
[info] => Array
(
[totalCount] => 0
)
[messageCodes] => Array
(
)
[errorCodes] => Array
(
)
[warningCodes] => Array
(
)
[infoCodes] => Array
(
))
Раньше все работало хорошо а теперь новая почта начала ругаться мол не выбран контрагент
[errors] => Array
(
[0] => Recipient not selected
[1] => ContactRecipient not selected
[2] => RecipientsPhone invalid format
)
Имея номер телефона получателя как проверить есть ли он у меня в НП и если есть получить индификатор, если нет завести?
Не могу понять, при вызове $senderInfo = $this->np->getCounterparties('Sender', 1, '', '');
в ответ приходит
[
"success" => true
"data" => array:1 [
0 => array:13 [
"Description" => "Приватна особа"
"Ref" => "dadb580b-7c5c-11e8-8b24-00"
"City" => "00000000-0000-0000-0000-0000"
"Counterparty" => null
"FirstName" => "Приватна особа"
"LastName" => ""
"MiddleName" => ""
"CounterpartyFullName" => ""
"OwnershipFormRef" => ""
"OwnershipFormDescription" => ""
"EDRPOU" => ""
"CounterpartyType" => "PrivatePerson"
"CityDescription" => ""
]
]
"errors" => []
"warnings" => []
"info" => array:1 [
"totalCount" => 1
]
"messageCodes" => []
"errorCodes" => []
"warningCodes" => []
"infoCodes" => []
]
Нету даных отправителя. В чем ошибка?
Новая Почта заблокировала возможность использования контрагентов-получателей в качестве отправителей. Таким образом, отправителя теперь необходимо создавать вручную. Для большинства пользователей метод save() модели Counterparty вернет ошибку о невозможности создания им контаргента-отправителя. Поддержка Новой Почты рекомендует использовать метод cloneLoyaltyCounterpartySender() для создания контрагента с данными аккаунта в другом городе. При этом, не смотря на то, что данный метод возвращает статус true и выполняется без ошибок, вновь созданного контрагента-отправителя вы не найдете ни вызвав getCounterparties, ни в личном кабинете (здесь вы можете только увидеть, что "Контрагент создается" без получения каких-либо временных рамок). Таким образом, в данный момент нет возможности динамически создать отправителя и сразу же его использовать для создания ЭН, можно работать только с уже существующими отправителями.
Необходимо актуализировать тесты в соответствие с текущей версией апи
'BackwardDeliveryData' => array(
array(
// Кто оплачивает обратную доставку
'PayerType' => 'Recipient',
// Тип доставки
'CargoType' => 'Money',
// Значение обратной доставки
'RedeliveryString' => 4552,
)
)
поля внутри массива полностью игнорируются. можно что угодно засунуть , но главное при правильных полях не создается наложеный платеж
Не нашол фукцию создаюшюю ЕН может я не разобрался но доки нет
Добрый день!
Подскажите что не так когда указываю отправку на адрес
вроде как пару раз сработало - потом начало отправить полюбому на отделение
при отправки на адрес указываю:
$optionsArray['ServiceType'] = 'WarehouseDoors';
$optionsArray['RecipientCityName'] = "Название города";
$optionsArray['RecipientAddressName'] = "Название улицы";
$optionsArray['RecipientHouse'] = "Номер дома";
$optionsArray['RecipientFlat'] = 'Этаж';
Такое вообще возможно организовать? Не нашёл инфы ни в документации, ни в данной либе. Может через подписание каких-то договоров?
Написал в техподдержку - молчат второй день.
Без возможности автоматически создавать накладные 90% функциональности всего API отмирает.
Fatal error: Class 'NovaPoshtaApi2' not found in F:\OSPanel\domains\test.loc\nova.php on line 3
После установки выдает такую ошибку. В чем может быть проблема?
Данный метод есть у новой почты. "getAreas"
Добрый день, подключил библиотеку, все работает , спасибо, но столкнулся уже второй раз с проблемой, что создало ттн не в тот город. кидаю код:
array(
'FirstName' => $row_order_data['order_name'],
'MiddleName' => $row_order_data['order_patronymic'],
'LastName' => $row_order_data['order_surname'],
'Phone' => $row_order_data['order_phone'],
'City' => 'Калинівка',
'Region' => 'Київська',
'Warehouse' => 'Відділення №1: вул. Центральна, 57',
),
Если данные получателя будут по такому адресу и городу- то к сожалению ттн создается на такое отделение :
Калинівка (Броварський р-н), Відділення № 1: вул. Чернігівська, 9/1
Было еще одно село, что так создалось..
Кто то сталкивался с такой проблемой?
Добрый день .. Пытаюсь разобратся .. Как можно получить города по идентификатору Области ..
Собственно сабж
Вартість доставки залежить від габаритів. але функція не має таких параметрів. відповідно, на більших габаритах вартість доставки невірна
Якшо немає errors, то вилітає notice, що $error не оголошена в методах getCity, getWarehouse, getArea.
Наприклад:
Notice: Undefined variable: error in src/Delivery/NovaPoshtaApi2.php on line 448
Fix:
оголосити змінну
$error = NULL;
Тут видем что если мы формируем для почто мата надо параметры груза указывать в OptionsSeat
Но если из масива $options убрать 'Weight' то начинает ругаться
Прежде всего спасибо за расширение. Очень удобное и понятное, но...
На днях ни с того ни с сего стал получать Error: Class 'LisDev\Delivery\NovaPoshtaApi2' not found in ....../DeliveryForm.php:76
Но все в данном файле на месте и самым первым юзом стоит use LisDev\Delivery\NovaPoshtaApi2
.
Как это понять и куда копать - ума не приложу...
Нужна помощь. не понятно в инструкции. Что вбивать в $senderInfo = $np->getCounterparties('Sender', 1, '', '');
Какие данные там нужны для последующего создания ТТН? С мануалами на НП путаница, там вообще часть страниц просто не открываются.
При создании документа для получения ТТН постоянно ошибка:
array (
'success' => false,
'data' =>
array (
),
'errors' =>
array (
0 => 'CitySender not found',
1 => 'SenderAddress not selected',
2 => 'CityRecipient not selected',
3 => 'Recipient not selected',
4 => 'BackwardDelivery Money is unavailable, CityRecipient not selected',
5 => 'ContactRecipient not selected',
),
Есть ли где-то прозрачный понятный мануал для этого АПИ?
Привет.
Спасибо за библиотеку, очень классная.
В Новой Почте появился метод getSettlements, для загрузки всех населенных пунктов, в которые делает доставку НП (т.е. не только те где есть отделения, но и те в которые делает адресную доставку), я себе добавил, вот так
function getSettlements($page = 0, $findByString = '', $ref = '') {
return $this->request('AddressGeneral', 'getSettlements', array(
'Page' => $page,
'FindByString' => $findByString,
'Ref' => $ref,
));
}
будет время обнови репозиторий.
Т.к. Новая Почта меняет API в рамках одной версии без предупреждения, необходимо реализовать работоспособность тестов и возможность определить неработающий функционал в кратчайшие сроки.
Для этого первым делом следует подключить автоматическую систему тестирования билдов.
За основу взять travis ci.
Как получить список городов определенной области?
Добрый день
как я понял, проштудировав доку почты, даты доставки по ТТН теперь нет в выдаче?
дата ориентировочной доставки не интересует, нужна именно дата доставки по ТТН. на сайте есть, а в доке нет(
Если отправлять не груз, а документы, используя newInternetDocument() то НП постоянно возвращает ошибку "VolumeGeneral must be empty" даже если VolumeGeneral не передаешь или установил в 0. Проблема в том, что в checkInternetDocumentParams() устанавливается вес по умолчанию в 0.0004 если он не указан, эту функцию лучше убрать (как минимум для 'CargoType' => 'Documents')
// В параметрах указывается город и область (для более точного поиска)
$city = $np->getCity('Киев', 'Киевская');
$result = $np->getWarehouses($city);
Как бы я ни указывал нужную мне величину, до API доходит 0.5. Пробовал передавать как числом, так и строкой.
Например, можно было бы этот параметр передавать в конструкторе.
В php8 request отдаёт пустой ответ при типе соединения curl
is_resource($ch) в PHP8 возвращает false
я так понимаю автор забил на проект
показалось что не работает все работет
Доброй ночи, с теми городами что я писал в вопросе 41 проблема решилась, спасибо Вам, но...(
теперь если город получателя будет - м. Покровськ, Покровська міськрада, Донецька обл. и выбрать отделение например - Відділення №2 (до 30 кг на одне місце): мкрн. Шахтарський, ТЦ
то создается накладная вот сюда :
Покровське (Мангушський р-н), Відділення №1: вул. Азовської флотилії, 2 (пос. Моряків)
Добрый день, все таки наверное существует еще один баг с городами, попытаюсь объяснить:
когда я заметил ошибку с созданиями городов первый раз, например если создать в город:
Кам'янське Дніпропетровська обл Відділення №12 (до 30 кг): бульв. Будівельників, 27а (маг.VARUS, ТЦ
то создаст вот сюда:
Кам'янське (Нікопольський р-н), Пункт приймання-видачі (до 30 кг): вул. Будівників, 3а
Эту проблему пофиксили в релизе 2 - 0.1.4 (вот ссылка Fixed: https://github.com/lis-dev/nova-poshta-api-2/releases/tag/0.1.4)
Но в этом релизе некорректно создавалась накладная , если выбрать город:
Покровськ, Покровська міськрада, Донецька обл. Відділення №2 (до 30 кг на одне місце): мкрн. Шахтарський, ТЦ
получалась сюда:
Покровське (Мангушський р-н), Відділення №1: вул. Азовської флотилії, 2 (пос. Моряків)
Эту пофиксили в релизе 2-0.1.5 , теперь опять моя посылка поехала в другой город(
Вернулась проблема что была пофиксина в релизе 2-0.1.4 с городом :
Кам'янське Дніпропетровська обл Відділення №12 (до 30 кг): бульв. Будівельників, 27а (маг.VARUS, ТЦ
опять создалось в :
Кам'янське (Нікопольський р-н), Пункт приймання-видачі (до 30 кг): вул. Будівників, 3а
Спасибо что помогаете в решении проблемы!
Ошибка
"success" => false
"data" => []
"errors" => array:1 [▼
0 => "Method InternetDocumentGeneral_documentsTracking not found"
]
Причем эта ошибка не всегда. Иногда она есть а иногда ее нет. Подскажите в чем проблема плиз?
Николаев, Отделение №12 (до 30 кг): ул. Пушкинская, 33 - вот выбранный город получателя
if (!isset($sender['CityRecipient']) || ! $recipient['CityRecipient']) {
$recipientCity = $this->getCity($recipient['City'], $recipient['Region']);
print_r($recipientCity)
[data] => Array
(
[0] => Array
(
[0] => Array
(
[Description] => Миколаїв
[DescriptionRu] => Николаев
[Ref] => db5c888c-391c-11dd-90d9-001a92567626
[Delivery1] => 1
[Delivery2] => 1
[Delivery3] => 1
[Delivery4] => 1
[Delivery5] => 1
[Delivery6] => 1
[Delivery7] => 0
[Area] => 71508135-9b87-11de-822f-000c2965ae0e
[Conglomerates] =>
[CityID] => 9
)
)
)
Undefined index: Ref in
$recipient['CityRecipient'] = $recipientCity['data'][0]['Ref']; - на этой строке затыкается. вверху массив, который есть перед этой строкой.
Как я понял. У нас тут вот массив вложенный еще раз, и тут должно быть $recipientCity['data'][0][0]['Ref']; Но иногда. в большинстве городов массив вложен 1 раз. И тогда все верно
Не поможете с решением?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.