Vladq Опубликовано 6 сентября, 2013 Жалоба Поделиться Опубликовано 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()Давайте вместе внедрим это для общего блага ёмаё. Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 6 сентября, 2013 Автор Жалоба Поделиться Опубликовано 6 сентября, 2013 Если бы можно было писать обычный синтаксис PHP, то проблемы бы никакой у меня не былоА здесь Smarty. Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 12 сентября, 2013 Автор Жалоба Поделиться Опубликовано 12 сентября, 2013 Народ, помогите кто нибудь пожалуйста! Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 14 сентября, 2013 Жалоба Поделиться Опубликовано 14 сентября, 2013 Уважаемые программисты Вот в такой бредовой теме, где человек не знает что такое html css - вы активничаете и отписываетесь А вот в моей теме, где действительно нужна ваша помощь в smarty php - никто помочь не хочет Обидно В Вашей теме нет конкретного вопроса, на который можно ответить... А так там просто: у меня есть код - что с ним дальше делать... Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 30 сентября, 2013 Жалоба Поделиться Опубликовано 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 нету, что бы что-то пробовать, да и не интересна мне УкрПочта Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 5 октября, 2013 Жалоба Поделиться Опубликовано 5 октября, 2013 Просто выводить данные о состоянии груза не интересно.Было бы интересно, если бы скрипт передавал данные о габарите и весе груза с описания на сайте в базы новой почты, так бы экономилось время на заполнении деклараций. А просто показывать где груз не особо то и интересно, особенно с учетом того, что он обычно за сутки доезжает до места получения Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 5 октября, 2013 Автор Жалоба Поделиться Опубликовано 5 октября, 2013 Просто выводить данные о состоянии груза не интересно.Было бы интересно, если бы скрипт передавал данные о габарите и весе груза с описания на сайте в базы новой почты, так бы экономилось время на заполнении деклараций. А просто показывать где груз не особо то и интересно, особенно с учетом того, что он обычно за сутки доезжает до места полученияВообще то сабж о выводе все отделений НП в корзине заказа в строке "Адрес"О чем вы - я не знаю. Цитата Ссылка на сообщение Поделиться на другие сайты
pedro Опубликовано 8 октября, 2013 Жалоба Поделиться Опубликовано 8 октября, 2013 Vladq, а в файле классов ключ к API от балды или рабочий? Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 8 октября, 2013 Автор Жалоба Поделиться Опубликовано 8 октября, 2013 Vladq, а в файле классов ключ к API от балды или рабочий?Рабочий. И было бы хорошо чтобы вы приняли участие в сабже, а не обошлись сам по себе или "моя хата скраю" как у нас принято. Цитата Ссылка на сообщение Поделиться на другие сайты
pedro Опубликовано 13 октября, 2013 Жалоба Поделиться Опубликовано 13 октября, 2013 Рабочий. И было бы хорошо чтобы вы приняли участие в сабже, а не обошлись сам по себе или "моя хата скраю" как у нас принято. можете мне в icq стукнуть 296892275 Цитата Ссылка на сообщение Поделиться на другие сайты
Fors Опубликовано 15 октября, 2013 Жалоба Поделиться Опубликовано 15 октября, 2013 У меня примерно так сделано {if stristr($delivery->name,"Нова Пошта")} Город/Склад {elseif stristr($delivery->name,"Ин-Тайм")} Город/Склад {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 18 октября, 2013 Жалоба Поделиться Опубликовано 18 октября, 2013 Вообще то сабж о выводе все отделений НП в корзине заказа в строке "Адрес"О чем вы - я не знаю.Ммм. Вот сейчас я уже вник что это. Очень хорошее решение. А писал я о api Новой Почты, для отслеживания посылок. Сейчас в процессе изучения существующих наработок с api новой почты, странно что никто не реализовал автопросчет стоимости, заполнение электронных деклараций непосредственно из админки симплы. Мне например иногда не в кайф в очереди сидеть на новой почте, а так пришел с уже наклеенными декларациями и минимум на одну очередь меньше стоять. Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 18 октября, 2013 Жалоба Поделиться Опубликовано 18 октября, 2013 И сразу вопрос по другим функциям, которые вы когда-то озвучивали:http://forum.simplacms.ru/topic/3008-integraciya-s-ukrainskimi-pochtovimi-sluzhbami/"- К заказу грамотно продумать и прикрутить номер ТТН, для онлайн мониторинга статуса посылки заказчиком.- Ну и очень бы хотелось реализовать полу-автоматическое СМС-информирование того же ТТН, или трек-номера, на телефон заказчика, через любой доступный SMS шлюх с открытым API. Уж ооочень много драгоценного времени занимает ручная SMS рассылка номеров ТТН клиентам." Что-то из этого было реализовано? Устал в ручную писать sms с номером декларации, да и 60% моих товаров имеют одинаковую стоимость доставки, что наводит на мысль о каком-то ускорении составления деклараций Новой Почты через API Цитата Ссылка на сообщение Поделиться на другие сайты
Yushi Опубликовано 23 октября, 2013 Жалоба Поделиться Опубликовано 23 октября, 2013 Для себя разобрался с классом.Кому нужно пишите. Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 10 ноября, 2013 Автор Жалоба Поделиться Опубликовано 10 ноября, 2013 И сразу вопрос по другим функциям, которые вы когда-то озвучивали:http://forum.simplacms.ru/topic/3008-integraciya-s-ukrainskimi-pochtovimi-sluzhbami/"- К заказу грамотно продумать и прикрутить номер ТТН, для онлайн мониторинга статуса посылки заказчиком.- Ну и очень бы хотелось реализовать полу-автоматическое СМС-информирование того же ТТН, или трек-номера, на телефон заказчика, через любой доступный SMS шлюх с открытым API. Уж ооочень много драгоценного времени занимает ручная SMS рассылка номеров ТТН клиентам." Что-то из этого было реализовано? Устал в ручную писать sms с номером декларации, да и 60% моих товаров имеют одинаковую стоимость доставки, что наводит на мысль о каком-то ускорении составления деклараций Новой Почты через API Именно так у меня выглядит СМС информирование. Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 10 ноября, 2013 Автор Жалоба Поделиться Опубликовано 10 ноября, 2013 Кстати, может кому пригодится.Пока самая дешевая смс рассылка в Украине на этот моментAPI sms-sms-.com.ua0,13 коп. за СМС по Украинеhttp://pastebin.com/Qd54WGAH Цитата Ссылка на сообщение Поделиться на другие сайты
Vladq Опубликовано 10 ноября, 2013 Автор Жалоба Поделиться Опубликовано 10 ноября, 2013 Для себя разобрался с классом.Кому нужно пишите. Нужно многимВыложите здесь, в этой теме. Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 10 ноября, 2013 Жалоба Поделиться Опубликовано 10 ноября, 2013 Именно так у меня выглядит СМС информирование.Круто! И я такое хочу Цитата Ссылка на сообщение Поделиться на другие сайты
Yushi Опубликовано 3 июля, 2014 Жалоба Поделиться Опубликовано 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} Вроде бы все.Если что забыл пишите. Цитата Ссылка на сообщение Поделиться на другие сайты
Wallkar Опубликовано 2 августа, 2015 Жалоба Поделиться Опубликовано 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 Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 августа, 2015 Жалоба Поделиться Опубликовано 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 и тот откуда эта ф-я вызывается, прикрепите файл. Цитата Ссылка на сообщение Поделиться на другие сайты
Wallkar Опубликовано 2 августа, 2015 Жалоба Поделиться Опубликовано 2 августа, 2015 (изменено) в файл OrderView.php я добавлял только // Получим статус посылки по номеру ТТН от Новой почты $this->design->assign('tracking', $this->np->tracking($order->delivery_number)); все делал строго по инструкции, может что недоглядел. OrderView.phpNP.php Изменено 2 августа, 2015 пользователем Wallkar Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 августа, 2015 Жалоба Поделиться Опубликовано 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)); Цитата Ссылка на сообщение Поделиться на другие сайты
Wallkar Опубликовано 3 августа, 2015 Жалоба Поделиться Опубликовано 3 августа, 2015 Simpla.php у меня вобще небыло я его создавал по подобию https://github.com/pikusov/Simpla/blob/master/api/Simpla.phpи прописал 'NP' => 'novaposhta' с большой буквы также писал, результат нулевой. У меня стойкое впечатления что я что-то не то делаю. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 3 августа, 2015 Жалоба Поделиться Опубликовано 3 августа, 2015 (изменено) Simpla.php у меня вобще небыло я его создавал по подобию https://github.com/pikusov/Simpla/blob/master/api/Simpla.phpи прописал 'NP' => 'novaposhta' с большой буквы также писал, результат нулевой. У меня стойкое впечатления что я что-то не то делаю. видимо у вас есть файл Newcms.php? тогда нужно добавить туда 'NP' => 'novaposhta' и вызывать как описано выше Изменено 3 августа, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.