[quote name=‘densvi’ timestamp=‘1436639577’ post=‘222567’]
Нижний Новгород, ему должны показать 2 пункта самовывоза ото 2-ух ТК с адресом, сроками и ценами в зависимости от веса груза.
[/quote]
Читайте документацию Аксиомуса и возможности их API, прыгать нужно от этого, а не от собственных желаний
[quote name='dbazhenov' timestamp='1436640155' post='222568']
Прикола в 4 разных запросах я не понял, в том числе нельзя сразу город указать и получить только пункты заданного города.
[/quote]
Возможно из-за того, что они сами потом обращаются к API соответствующих ТК, да и объем не маленький за один раз был бы.
[quote name='dbazhenov' timestamp='1436640155' post='222568']
Тоже самое и про стоимость доставки.
[/quote]
Да, стоимость доставки для каждой ТК для определенного города покупателя, определяется своим отдельным запросом. Тоже видимо по причине, что они сами обращаются по API к соответствующей ТК.
Вроде бы не должно это быть какой-то проблемой.
[quote name='dbazhenov' timestamp='1436640155' post='222568']
По каждому пункту у них есть название города и код города. Название города может не совпадать с тем, что введёт покупатель, например он введёт латинскими буквами или ошибку допустит.
Списка городов с кодами я не нашел.
[/quote]
Конечно же такая ситуация вполне возможна. Видимо надо делать какое-то соответствие. В модуле СДЭК в базу все города вроде бы записаны. Или как в Самовывозе по пунктам назначения, для которых маски городов можно указать.
Список городов с кодами для BoxBerry есть тут:
http://axiomus.ru/geo/boxberry.php
Для других ТК нет. Но их ведь можно получить при запросе.
Даниил, я еще не полностью понимаю все тонкости реализации в CS-Cart поэтому может и глупости какие-то говорю. Так что сорри, если что.
[quote name='densvi' timestamp='1436687599' post='222593']
Даниил, я еще не полностью понимаю все тонкости реализации в CS-Cart поэтому может и глупости какие-то говорю. Так что сорри, если что.
[/quote]
А причем здесь CS-Cart (тут без разницы какая CMS), всё крутится от возможностей API
[quote name='dbazhenov' timestamp='1436688074' post='222594']
А причем здесь CS-Cart (тут без разницы какая CMS), всё крутится от возможностей API
[/quote]
Даниил, тогда позвольте опишу некий алгоритм, как я себе вижу это:
0) Для начала я бы сделал в админке кнопку обновить список городов. По этой кнопке CMS обращается по API для каждой ТК, получает список городов с кодами, разбирает полученные xml и записывает в базу данных (её структуру придумать без проблем можно). Таким образом мы имеем БД со списком городов доставок для всех ТК, там же адреса пунктов самовывоза.
- Покупатель указывает город доставки. Должна работать некая маска (как сейчас можно сделать для пунктов назначения), которая бы устраняла простые ошибки в написании города (написание на английском, например и т.д.), а еще лучше привязываться к КЛАДР и при вводе города покупателем ему показываются подсказки из КЛАДР.
- С городом разобрались. Допустим, что он введен правильно или он выбран. На следующем шаге оформления покупатель выбирает, например, самовывоз. Ему должны показаться все доступные пункты самовывоза всех ТК в ранее выбранном городе.
Для этого, ищем в нашей БД город. Находим. Берем оттуда код города. Формируем xml, обращаемся по API к каждой ТК и получаем стоимость услуг, далее выводим ПВЗ выбранного города, доп. инфу и стоимость. По аналогии с сегодняшним модулем “Самовывоз”.
Как то так. Описанный алгоритм API Аксиомуса поддержит. А вот как это сделать в CS-Cart - большой вопрос для меня. Поэтому и написал, что всех тонкостей реализации в CS-Cart не знаю еще.
Densvi,
Обратитесь напрямую в Симтех - они только что закончили делать делать модуль интеграции с Аксиомусом для меня. Не думаю, что возьмут теперь дорого. Попросите установить его на какой-нибудь демо сервер, что бы Вы могли его протестить и посмотреть логику его работы. Все действия по формированию завки в Акисомус производятся в карточке самого зказа. Менеджер Антипова Екатерина.
Варианты заявок для переачи: Москва-Питер (доставка и самовывоз), DPD (доставка и самовывоз), Почта, Топделивери самовывоз.
По поводу ТопДеливери (я сам на этом накололся) - у Е-дост он есть в списке существующих ТК просто работающих в России, но расчет по ним они не производят.
По самовывозу - у меня реализовано теперь это следующим образом: я вручную создаю “расположение магазина” и к нему из списка подгруженных от Аксиомуса пунктов привязываю соответствие пункту DPD или ТопДеливери (Boxbery я не использую), ну или самого Акисомуса (если это Москва или СПб).
Вот, отлично.
А если хочется самому, то попытался объяснить как работать с API здесь:
Даниил, Супер видео. Будем копать дальше. Направление есть. Спасибо огромное за быстроту реакции, хотя и воскресенье сегодня.
[quote name=‘MrMaster’ timestamp=‘1436694454’ post=‘222602’]
По самовывозу - у меня реализовано теперь это следующим образом: я вручную создаю “расположение магазина” и к нему из списка подгруженных от Аксиомуса пунктов привязываю соответствие пункту DPD или ТопДеливери (Boxbery я не использую), ну или самого Акисомуса (если это Москва или СПб).
[/quote]
Вы вручную заводите несколько сотен расположений?
[quote name=‘densvi’ timestamp=‘1436705893’ post=‘222617’]
Даниил, Супер видео. Будем копать дальше. Направление есть. Спасибо огромное за быстроту реакции, хотя и воскресенье сегодня.
[/quote]
Понятно получилось? Страхов меньше стало? Работы много, понимаете теперь Даже в рамках одной компании нет единого стандарта (хотя привести к единому стандарту легко), что уж говорить о других доставках. Поэтому edost молодец, смог в один запрос всё объединить.
[quote name='dbazhenov' timestamp='1436707099' post='222618']
Понятно получилось? Страхов меньше стало? Работы много, понимаете теперь
[/quote]
Да, Даниил, по видео всё понятно. Страхов реально меньше стало. Теперь понятно хоть за что хвататься. Осталось теперь только правильно и в нужном месте вызвать это всё. Начну завтра разбираться и пробовать.
[quote name=‘densvi’ timestamp=‘1436708873’ post=‘222621’]
Да, Даниил, по видео всё понятно. Страхов реально меньше стало. Теперь понятно хоть за что хвататься. Осталось теперь только правильно и в нужном месте вызвать это всё. Начну завтра разбираться и пробовать.
[/quote]
Да, так же скриптом, вызывать и в цикле в базу записывать, можно прям функции из модуля “Поиск ближайших магазинов” использовать, которые создают точки в админке.
Останется решить два вопроса:
- Города
- Как определить какие точки выводить для покупателя.
Я в этих вопросах в своё время пришёл к пунктам назначения и базе городов для автоподстановки. Как Вы решите не знаю. Успехов. Работы много при любом раскладе. Сводить все поля нужно и долго.
[quote name=‘densvi’ timestamp=‘1436705893’ post=‘222617’]
Вы вручную заводите несколько сотен расположений?
[/quote]
Да. Выходит примерно 200 пунктов (средне-крупные города). Но тут плюс в том, что есть возможность добавлять описание, схему прохода, режим работы и т.д., а заодно отображать пункты на карте, используя стандартный модуль Самовывоза.
Наверное можно, судя по видео Даниила, все пункты самовывоза загружать списком в “Расположение магазина”, но это скорее только для BoxBerry, так как у них передается вместе с адресом еще и gps координаты. DPD и ТопДеливери передают только адрес. Если я правильно понимаю, то для отображения на карте этого не достаточно.
Даниил, обнаружилась ошибочка. В видео вы используете функцию simplexml_load_string чтобы распарсить xml Ответ от сервера Axsiomusa
В результате в некоторых запросах, например, get_regions, на стр. 29 интеграционного гида, кода города нет, что и видно в видео. Однако, в ответе сервера Аксиомуса, ДО использования simplexml_load_string код города ЕСТЬ.
Вывод: эта функция не правильно парсит xml
[quote name=‘densvi’ timestamp=‘1436812074’ post=‘222765’]
Даниил, обнаружилась ошибочка. В видео вы используете функцию simplexml_load_string чтобы распарсить xml Ответ от сервера Axsiomusa
В результате в некоторых запросах, например, get_regions, на стр. 29 интеграционного гида, кода города нет, что и видно в видео. Однако, в ответе сервера Аксиомуса, ДО использования simplexml_load_string код города ЕСТЬ.
Вывод: эта функция не правильно парсит xml
[/quote]
Нет.
Просто функция fn_print_r плохо подходит для распечатки объектов, так как создана для другого. Используйте var_dump .
Да и видео я снимал о другом Как вы будете делать свой модуль и какие функции будете использовать - ваше дело , php.net в помощь
Я не претендую на правильность использования php в работе с xml в этом видео, способов и функций много.
Попробовал var_dump - ситуация не изменилась. Просто добавился тип переменных. Кода города так и не появилось
[quote name='densvi' timestamp='1436817717' post='222771']
Попробовал var_dump - ситуация не изменилась. Просто добавился тип переменных. Кода города так и не появилось
[/quote]
Ну тогда используйте XmlReader например (http://php.net/manual/ru/book.xmlreader.php) , это уже детали.
Даниил, на деталях как правило часто всё и сыплется.
Мне кажется тут дело не в функциях fn_print_r; var_dump; print_r - скорее всего дело в самом формате ответа, в структуре xml ответа.
Если между тегами что-то стоит,то код города пропадает, если убрать оттуда наименование города, то появляется код города.
Либо формат (структура) не верный, либо все таки функция simplexml_load_string некорректно его обрабатывает.
Будем пробовать дальше.
[quote name='densvi' timestamp='1436819160' post='222777']
Даниил, на деталях как правило часто всё и сыплется.
Мне кажется тут дело не в функциях fn_print_r; var_dump; print_r - скорее всего дело в самом формате ответа, в структуре xml ответа.
Если между тегами что-то стоит,то код города пропадает, если убрать оттуда наименование города, то появляется код города.
Либо формат (структура) не верный, либо все таки функция simplexml_load_string некорректно его обрабатывает.
Будем пробовать дальше.
[/quote]
Оу. Я думаю Вы разберётесь. Это вообще не связано не с CS-Cart не с API аксиомуса, это чистый php . Тут Вам поможет google и документация по php . Функций для работы с XML много, попробуйте разные, это полезно.
Мне нравится XMLReader, например.
Всё просто оказывается. Просто после применения [color=#282828][font=arial, verdana, tahoma, sans-serif][size=3] simplexml_load_string [/size][/font][/color]надо обратиться к каждому элементу xml по имени и толькопотом печатать этоот элемент. Всё прекрасно работает. Спасибо Даниил.
Даниил, написал скриптик, которые берет результат запроса по API для Boxberry и работает с ним. Что сделал:
- добавляет пункты назначения
- добавляет “местоположение магазина”
- устанавливает связь между местоположением магазина и пунктом назначения на вкладке “самовывоз” у местоположения.
в админке проверил - всё ОК - галки все стоят. В phpmyadmin проверил таблицы - всё ок, вроде.
А дальше ерунда какая-то пошла. При оформлении заказа какой-бы город я не указывал, пункты самовывоза не показываются. Ну думаю, может что забыл. Посмотрел настройки способа доставки самовывоз, там все созданные местоположения в левой колонке, т.е. как выбранные. ОК.
Лезу в файлик /app/addons/rus_pickup/Tygh/Shippings/Services/Pickup.php
в нем нахожу такую строчку
<br />
$_stores = db_get_hash_array("SELECT $fields FROM ?:store_locations as a $join WHERE 1 $condition", 'store_location_id');<br />
делаю fn_print_die($_stores);
опс, а там только 9 магазинов (столько для Москвы я завел ранее руками). Сейчас для Москвы значительно больше местоположений.
Ладно, думаю, сделал следующее:
<br />
$my_zapros = db_quote("SELECT $fields FROM ?:store_locations as a $join WHERE 1 $condition", 'store_location_id');<br />
<br />
fn_print_r($my_zapros);<br />
в результате выдался SQL запрос. Я копирую его (предварительно заменив “?:” на “cscart”) в phpmyadmin и выполняю этот запрос.
И о чудо - мне выдались все местоположения в Москве - несколько десятков, а не 9 !!!
Выполнение в тупую этого запроса в файле Pickup.php выдает 9 магазинов.
Я в растерянности. Что делать? Где копать?
[quote name='densvi' timestamp='1436965836' post='223041']
Я в растерянности. Что делать? Где копать?
[/quote]
Таблица:
cscart_ult_object_sharing