Vladq Posted September 6, 2013 Report Share Posted September 6, 2013 Здравствуйте. Есть готовый файл классов для работы с API запросами http://pastebin.com/mWMRy4eF1. Создаем файл с классом и кидаем в api/novaposhta.php 2. Далее нужно зарегистрировать свойство и класс. Открываем api/Simpla.php и там где// Свойства - Классы API private $classes = array( 'config' => 'Config', 'request' => 'Request', 'db' => 'Database',..... Добавляем 'NP' => 'novaposhta'По сути класс уже есть. Но вопрос: Каким запросом вызвать функцию в шаблоне?Например /** * Запрос на получение списка населённых пунктов, в которых есть склады Новой почты */public static function city()Давайте вместе внедрим это для общего блага ёмаё. Quote Link to post Share on other sites
Vladq Posted September 6, 2013 Author Report Share Posted September 6, 2013 Если бы можно было писать обычный синтаксис PHP, то проблемы бы никакой у меня не былоА здесь Smarty. Quote Link to post Share on other sites
Vladq Posted September 12, 2013 Author Report Share Posted September 12, 2013 Народ, помогите кто нибудь пожалуйста! Quote Link to post Share on other sites
mart Posted September 14, 2013 Report Share Posted September 14, 2013 Уважаемые программисты Вот в такой бредовой теме, где человек не знает что такое html css - вы активничаете и отписываетесь А вот в моей теме, где действительно нужна ваша помощь в smarty php - никто помочь не хочет Обидно В Вашей теме нет конкретного вопроса, на который можно ответить... А так там просто: у меня есть код - что с ним дальше делать... Quote Link to post Share on other sites
Gloobus Posted September 30, 2013 Report Share Posted September 30, 2013 А в чем собственно проблема? Класс уже есть, написан...Если вы к примеру хотите вывести города в корзине, открываем CartView.php и передаем в шаблон: $this->design->assign('citys', $this->NP->cyty()); а далее в шаблоне разбираем циклом: Список городов: {foreach $citys as $city} {$city->xxx}, {/foreach} а вот уже xxx это уже то, что возвращает city()... Я так понял, что возвращает она всегда xml, он потом интерпретирует ее в объект. Попробуй в том же CartView.php отправь в шаблон регультат var_dump того, что вернет city(), а в шаблоне просто выведи посмотреть.У меня просто api_key нету, что бы что-то пробовать, да и не интересна мне УкрПочта Quote Link to post Share on other sites
tumanenko Posted October 5, 2013 Report Share Posted October 5, 2013 Просто выводить данные о состоянии груза не интересно.Было бы интересно, если бы скрипт передавал данные о габарите и весе груза с описания на сайте в базы новой почты, так бы экономилось время на заполнении деклараций. А просто показывать где груз не особо то и интересно, особенно с учетом того, что он обычно за сутки доезжает до места получения Quote Link to post Share on other sites
Vladq Posted October 5, 2013 Author Report Share Posted October 5, 2013 Просто выводить данные о состоянии груза не интересно.Было бы интересно, если бы скрипт передавал данные о габарите и весе груза с описания на сайте в базы новой почты, так бы экономилось время на заполнении деклараций. А просто показывать где груз не особо то и интересно, особенно с учетом того, что он обычно за сутки доезжает до места полученияВообще то сабж о выводе все отделений НП в корзине заказа в строке "Адрес"О чем вы - я не знаю. Quote Link to post Share on other sites
pedro Posted October 8, 2013 Report Share Posted October 8, 2013 Vladq, а в файле классов ключ к API от балды или рабочий? Quote Link to post Share on other sites
Vladq Posted October 8, 2013 Author Report Share Posted October 8, 2013 Vladq, а в файле классов ключ к API от балды или рабочий?Рабочий. И было бы хорошо чтобы вы приняли участие в сабже, а не обошлись сам по себе или "моя хата скраю" как у нас принято. Quote Link to post Share on other sites
pedro Posted October 13, 2013 Report Share Posted October 13, 2013 Рабочий. И было бы хорошо чтобы вы приняли участие в сабже, а не обошлись сам по себе или "моя хата скраю" как у нас принято. можете мне в icq стукнуть 296892275 Quote Link to post Share on other sites
Fors Posted October 15, 2013 Report Share Posted October 15, 2013 У меня примерно так сделано {if stristr($delivery->name,"Нова Пошта")} Город/Склад {elseif stristr($delivery->name,"Ин-Тайм")} Город/Склад {/if} Quote Link to post Share on other sites
tumanenko Posted October 18, 2013 Report Share Posted October 18, 2013 Вообще то сабж о выводе все отделений НП в корзине заказа в строке "Адрес"О чем вы - я не знаю.Ммм. Вот сейчас я уже вник что это. Очень хорошее решение. А писал я о api Новой Почты, для отслеживания посылок. Сейчас в процессе изучения существующих наработок с api новой почты, странно что никто не реализовал автопросчет стоимости, заполнение электронных деклараций непосредственно из админки симплы. Мне например иногда не в кайф в очереди сидеть на новой почте, а так пришел с уже наклеенными декларациями и минимум на одну очередь меньше стоять. Quote Link to post Share on other sites
tumanenko Posted October 18, 2013 Report Share Posted October 18, 2013 И сразу вопрос по другим функциям, которые вы когда-то озвучивали:http://forum.simplacms.ru/topic/3008-integraciya-s-ukrainskimi-pochtovimi-sluzhbami/"- К заказу грамотно продумать и прикрутить номер ТТН, для онлайн мониторинга статуса посылки заказчиком.- Ну и очень бы хотелось реализовать полу-автоматическое СМС-информирование того же ТТН, или трек-номера, на телефон заказчика, через любой доступный SMS шлюх с открытым API. Уж ооочень много драгоценного времени занимает ручная SMS рассылка номеров ТТН клиентам." Что-то из этого было реализовано? Устал в ручную писать sms с номером декларации, да и 60% моих товаров имеют одинаковую стоимость доставки, что наводит на мысль о каком-то ускорении составления деклараций Новой Почты через API Quote Link to post Share on other sites
Yushi Posted October 23, 2013 Report Share Posted October 23, 2013 Для себя разобрался с классом.Кому нужно пишите. Quote Link to post Share on other sites
Vladq Posted November 10, 2013 Author Report Share Posted November 10, 2013 И сразу вопрос по другим функциям, которые вы когда-то озвучивали:http://forum.simplacms.ru/topic/3008-integraciya-s-ukrainskimi-pochtovimi-sluzhbami/"- К заказу грамотно продумать и прикрутить номер ТТН, для онлайн мониторинга статуса посылки заказчиком.- Ну и очень бы хотелось реализовать полу-автоматическое СМС-информирование того же ТТН, или трек-номера, на телефон заказчика, через любой доступный SMS шлюх с открытым API. Уж ооочень много драгоценного времени занимает ручная SMS рассылка номеров ТТН клиентам." Что-то из этого было реализовано? Устал в ручную писать sms с номером декларации, да и 60% моих товаров имеют одинаковую стоимость доставки, что наводит на мысль о каком-то ускорении составления деклараций Новой Почты через API Именно так у меня выглядит СМС информирование. Quote Link to post Share on other sites
Vladq Posted November 10, 2013 Author Report Share Posted November 10, 2013 Кстати, может кому пригодится.Пока самая дешевая смс рассылка в Украине на этот моментAPI sms-sms-.com.ua0,13 коп. за СМС по Украинеhttp://pastebin.com/Qd54WGAH Quote Link to post Share on other sites
Vladq Posted November 10, 2013 Author Report Share Posted November 10, 2013 Для себя разобрался с классом.Кому нужно пишите. Нужно многимВыложите здесь, в этой теме. Quote Link to post Share on other sites
tumanenko Posted November 10, 2013 Report Share Posted November 10, 2013 Именно так у меня выглядит СМС информирование.Круто! И я такое хочу Quote Link to post Share on other sites
Yushi Posted July 3, 2014 Report Share Posted July 3, 2014 Итак пишу, как сделал у себя:Принцип такой: В поле таблицы заказов добавил поле с номером ТТН(это номер руками вбивает администратор после отправки груза), и в шаблоне статуса заказа админской части, и в шаблоне статуса заказа для пользователя выводится статус посылки по этому ТТН, полученный по API Новой Почты. В папке api/ создаем файл NP.php c содержимым: <?php require_once('Simpla.php'); class NP extends Simpla{ /* Город отправителя */ public $out_city='Киев'; /* Отправитель */ public $out_company='ПП Петров'; /* Склад */ public $out_warehouse='1'; /* Представитель отправителя */ public $out_name='Петров Иван Иваныч'; /* Телефон отправителя */ public $out_phone='0671234567'; /* API ключ */ public $api_key='0166186b16d0e49771a0aebf25ac4770'; /* Описание посылки */ public $description='Взуття'; /* Описание упаковки */ public $pack='Коробка'; /** * Функция отправки запроса на сервер Новой почты $xml — запрос */ public function send($xml){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://orders.novaposhta.ua/xml.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml")); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec($ch); curl_close($ch); return $response; } /** * Запрос на расчёт стоимости доставки $to_city — город получатель $weight — вес $pub_price — заявленная стоимость $height — высота коробки $width — ширина коробки $depth — длинна коробки */ public function price($to_city,$weight,$pub_price,$date,$height=0,$width=0,$depth=0){ $xml='<?xml version="1.0" encoding="utf-8"?> <file> <auth>'.NP::$api_key.'</auth> <countPrice> <senderCity>'.NP::$out_city.'</senderCity> <recipientCity>'.$to_city.'</recipientCity> <mass>'.$weight.'</mass> <height>'.$depth.'</height> <width>'.$width.'</width> <depth>'.$depth.'</depth> <publicPrice>'.$pub_price.'</publicPrice> <deliveryType_id>4</deliveryType_id> <floor_count>0</floor_count> <date>'.$date.'</date> </countPrice> </file>'; $xml = simplexml_load_string(NP::send($xml)); return $xml->cost; } /** * Запрос на создание декларации на отправку $order_id — номер заказа на вашем сайте (для вашего удобства) $city — город получения $warehouse — номер склада получения $name — имя получателя $surname — фамилия получателя $phone — телефон получателя $weight — вес посылки $pub_price — заявленная стоимость $date — дата отправки $payer — плательщик (1 — получатель, 0 — отправитель, 2 — третья сторона) */ public function ttn($order_id,$city,$warehouse,$name,$surname,$phone,$weight,$pub_price,$date,$payer=0){ $xml='<?xml version="1.0" encoding="utf-8"?> <file> <auth>'.NP::$api_key.'</auth> <order order_id="'.$order_id.'" sender_city="'.NP::$out_city.'" sender_company="'.NP::$out_company.'" sender_address="'.NP::$out_warehouse.'" sender_contact="'.NP::$out_name.'" sender_phone="'.NP::$out_phone.'" rcpt_city_name="'.$city.'" rcpt_name="ПП '.$surname.'" rcpt_warehouse="'.$warehouse.'" rcpt_contact="'.$name.'" rcpt_phone_num="'.$phone.'" pack_type="'.NP::$pack.'" description="'.NP::$description.'" pay_type="1" payer="'.$payer.'" cost="'.$pub_price.'" date="'.$date.'" weight="'.$weight.'"> <order_cont cont_description="'.NP::$description.'" /> </order> </file>'; $xml = simplexml_load_string(NP::send($xml)); return array('oid'=>$order_id,'ttn'=>trim($xml->order->attributes()->np_id)); } /** * Запрос на удаление декларации из базы Новой почты $ttn — номер декларации, которую нужно удалить */ public function remove($ttn){ $xml='<?xml version="1.0" encoding="utf-8"?> <file> <auth>'.NP::$api_key.'</auth> <close>'.$ttn.'</close> </file>'; $xml = simplexml_load_string(NP::send($xml)); } /** * Запрос на печать маркировок для декларации (производит перенаправление на страницу печати) $ttn — номер декларации, которую нужно напечатать */ public function printit($ttn){ header('location: http://orders.novaposhta.ua/pformn.php?o='.$ttn.'&num_copy=4&token='.NP::$api_key); } /** * Запрос на получение списка складов Новой почты для определённого города (или полный список, если город не указан) $filter — город, по которому нужно отфильтровать список складов Новой почты */ public function warenhouse($filter=false){ $xml='<?xml version="1.0" encoding="utf-8"?> <file> <auth>'.NP::$api_key.'</auth> <warenhouse/>'; if($filter){ $xml.='<filter>'.$filter.'</filter>'; } $xml.='</file>'; $xml = simplexml_load_string(NP::send($xml)); return($xml); } /** * Запрос на получение списка населённых пунктов, в которых есть склады Новой почты */ public function city(){ $xml='<?xml version="1.0" encoding="utf-8"?> <file> <auth>'.NP::$api_key.'</auth> <city/> </file>'; $xml = simplexml_load_string(NP::send($xml)); return($xml); } public function tracking($ttn){ $xml=' <?xml version="1.0" encoding="UTF-8"?> <file> <auth>'.$this->api_key.'</auth> <tracking> <barcode>'.$ttn.'</barcode> </tracking> </file>'; $xml = simplexml_load_string($this->send($xml)); //var_dump($xml); return($xml); } } Далее в таблицу s_orders, добавим поле:Теперь в файле simpla/OrderAdmin.phpпосле кода: $order->comment = $this->request->post('comment'); Добавим: $order->delivery_number = $this->request->post('delivery_number'); перед кодом: $this->design->assign('purchases', $purchases); $this->design->assign('purchases_count', $purchases_count); $this->design->assign('subtotal', $subtotal); $this->design->assign('order', $order);Добавляем: //Статус по номеру ТТН из новой почты if ($order->delivery_number) { $this->design->assign('tracking', $this->np->tracking($order->delivery_number)); } В шаблоне: simpla/design/html/order.tplпосле: <li> <label class=property>Адрес <a href='http://maps.yandex.ru/' id=address_link target=_blank><img align=absmiddle src='design/images/map.png' alt='Карта в новом окне' title='Карта в новом окне'></a></label> <div class="edit_order_detail" style='display:none;'> <textarea name="address">{$order->address|escape}</textarea> </div> <div class="view_order_detail"> {$order->address|escape} </div> </li> Добавляем: <li> <label class=property>Номер посылки</label> <div class="edit_order_detail" style='display:none;'> <input name=" delivery_number" class="simpla_inp " type="text" value="{$order-> delivery_number|escape}" /> </div> <div class="view_order_detail"> {$order-> delivery_number|escape} </div> </li> <li> <label class=property>Статус посылки</label> <div class="view_order_detail"> <b>{$tracking->document["status"]}</b> </div> </li> Далее, в файле view\OrderView.php:После кода: // Все валюты $this->design->assign('all_currencies', $this->money->get_currencies()); Добавим: // Получим статус посылки по номеру ТТН от Новой почты $this->design->assign('tracking', $this->np->tracking($order->delivery_number)); И наконец в шаблоне пользователя design/вашшаблон/order.tplпосле: {if $order->name} <tr> <td> Имя </td> <td> {$order->name|escape} </td> </tr> {/if} Добавляем инфу о номере и статусе посылки: {if $order->delivery_number} <tr> <td> Номер посылки </td> <td> {$order->delivery_number|escape} <br /> Статус в Новой Почте: <br /> <b>{$tracking->document["status"]}</b> </td> </tr> {/if} Вроде бы все.Если что забыл пишите. Quote Link to post Share on other sites
Wallkar Posted August 2, 2015 Report Share Posted August 2, 2015 Не работает код, после завершения заказа ошибка: Fatal error: Call to a member function tracking() on a non-object in /home/virtwww/w_shop_113c0b12/http/view/OrderView.php on line 116 Quote Link to post Share on other sites
mishanya Posted August 2, 2015 Report Share Posted August 2, 2015 Не работает код, после завершения заказа ошибка: Fatal error: Call to a member function tracking() on a non-object in /home/virtwww/w_shop_113c0b12/http/view/OrderView.php on line 116 ошибка вам говорит что функция tracking не является объектом. нужно смотреть сам файл OrderView.php и тот откуда эта ф-я вызывается, прикрепите файл. Quote Link to post Share on other sites
Wallkar Posted August 2, 2015 Report Share Posted August 2, 2015 (edited) в файл OrderView.php я добавлял только // Получим статус посылки по номеру ТТН от Новой почты $this->design->assign('tracking', $this->np->tracking($order->delivery_number)); все делал строго по инструкции, может что недоглядел. OrderView.phpNP.php Edited August 2, 2015 by Wallkar Quote Link to post Share on other sites
mishanya Posted August 2, 2015 Report Share Posted August 2, 2015 в файл OrderView.php я добавлял только // Получим статус посылки по номеру ТТН от Новой почты $this->design->assign('tracking', $this->np->tracking($order->delivery_number)); все делал строго по инструкции, может что недоглядел. в api/Simpla.php класс NP зарегистрирован? 'NP' => 'novaposhta' попробуйте еще обратиться к класу с большой буквы $this->design->assign('tracking', $this->NP->tracking($order->delivery_number)); Quote Link to post Share on other sites
Wallkar Posted August 3, 2015 Report Share Posted August 3, 2015 Simpla.php у меня вобще небыло я его создавал по подобию https://github.com/pikusov/Simpla/blob/master/api/Simpla.phpи прописал 'NP' => 'novaposhta' с большой буквы также писал, результат нулевой. У меня стойкое впечатления что я что-то не то делаю. Quote Link to post Share on other sites
mishanya Posted August 3, 2015 Report Share Posted August 3, 2015 (edited) Simpla.php у меня вобще небыло я его создавал по подобию https://github.com/pikusov/Simpla/blob/master/api/Simpla.phpи прописал 'NP' => 'novaposhta' с большой буквы также писал, результат нулевой. У меня стойкое впечатления что я что-то не то делаю. видимо у вас есть файл Newcms.php? тогда нужно добавить туда 'NP' => 'novaposhta' и вызывать как описано выше Edited August 3, 2015 by mishanya Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.