Компания B2C Платежи и Логистика обратилась ко мне с просьбой сделать модуль (страничка в Маркете) интеграции их сервиса с магазинами на Битриксе. В этом мини-кейсе я опишу и как его использовать, и с какими сложностями пришлось столкнуться, работая на конечного клиента (пользователя модуля), а не для галочки. Проект выполнен в сотрудничестве с Александром Гусевым.
Особенности модуля
Большинство особенностей появилось в новой версии 2.0, так что, если у кого-то версия старая - пожалуйста, обновитесь.
1. Модуль максимально лоялен к пользователю. Предлагает варианты доставки по индексу. А если он не введен, то по названию города.
2. Позволяет рассчитывать стоимость доставки не только по весу, но и по объему (новое).
3. Позволяет включить Почту России в варианты доставки (новое).
4. Заказы для доставки компанией B2Cpl автоматически выгружаются на сервер компании и поступают в оборот (новое).
5. Присутствует обратная связь, показывающая в админ.части внутренний статус B2Cpl (новое). При желании это может быть вынесено и в публичную часть (не входит в данный модуль):
6. Отправленный на сервер B2Cpl заказ возвращает файл стикера, который можно удобно скачать и распечатать чтобы потом наклеить на посылку для передачи курьеру B2Cpl (новое):
Как правильно настроить модуль
1. Итак, вы ознакомились со службой, поняли, что вас оно полностью устраивает, заключаете с компанией договор, и начинаете работать.
2. Устанавливаете модуль посредством кнопки "Установить". У вас должны быть активны обновления вашей лицензии Битрикс, и наличие модуля Магазина обязательно конечно же.
3. В разделе "Настройки магазина / Автоматизированные службы доставки" после установки модуля появится новая неактивная служба доставки. (путь Рабочий стол / Магазин / Настройки магазина / Службы доставки / Автоматизированные)
4. Переходим в Службу. Мы видим несколько вкладок. Пробежимся по важным.
4.1. Базовая конфигурация. Включают название, описание, сортировку в списке доставок и (в последних версиях Битрикс) еще и изображение Службы.
4.2. Настройки доставки. Это уже обязательные настройки, которые вам необходимо внести.
ID клиента и ключ вам выдают при заключении договора. Для тестирования можете использовать тестовые доступы: test / test. (new) Символьный код для объема. Это код свойства инфоблока товаров, где содержится объем каждого товара. Требуется на случай, если вы работаете с объемными товарами и расчет стоимости будет зависеть от объема. Подробности уточняйте в компании. Если объем не используете, оставьте поле пустым. (new) Включить Почту России. В вариантах доставки появится почта России, простая посылка. За деталями обращайтесь в компанию. (new) ПВЗ (пункты выдачи) из окрестностей. Если опция указана, то в вариантах доставки будет указываться ПВЗ столичных городов для данного города. К примеру, для пригорода Новосибирска будет выведен ПВЗ Новосибирска. Если опцию убрать, то ПВЗ для данного пригорода указан не будет вовсе. (new) Статус заказа для выгрузки. Чтобы вам вручную не выгружать заказы сайта в кабинет B2Cpl, введена данная опция. Как только статус заказа поменяется на указанный, информация о заказе улетит в кабинет, и сотрудники B2Cpl возьмут его в оборот.
4.3. Привязка к свойствам заказа. Собственно здесь, вам нужно прописать в каком свойстве заказа содержится телефон (требуется, если вы будете использовать выгрузку на сайт B2Cpl) и где будет содержаться уже упомянутый внутренний статус B2Cpl.
Не забудьте активировать Службу после внесения изменений для начала работы!
Ну и наконец. Вам нужно убедиться, что у вас присутствует свойство заказа Индекс, отмеченное соответствующей галочкой:
И конечно же Местоположение, также отмеченное соответствующей галочкой:
Часть для разработчиков
О тонкостях и плюсах модуля можете почитать ниже. В какие сложности мы уперлись, и какие вопросы для решения перед собой поставили
1. Клиент должен ставить одной кнопкой и вбивать всего несколько опций.
2. У него может не быть базы индексов, или быть неполная. Он не должен заботиться об этом.
3. Мы не должны править шаблоны и лишать клиента обновлений.
Первый вопрос был решен просто, так как модуль всего лишь добавлял автоматизированную службу доставки. А вот второй вопрос без третьего уже решить сложнее.
Но мы решили это сообща с самой компаний. Обрисовав им ситуацию, что модулем (и сервисом) будут пользоваться тем охотнее, чем меньше он мороки доставит при установке. Таким образом, с их стороны был предоставлен функционал определения индекса по названию города!
Ну все, казалось бы, проблема решена: есть индекс - узнаем цену доставки, нет индекса - узнаем по городу. Но встала еще одна проблема - город может вернуть несколько индексов. Соответственно, в таком случае надо уведомить пользователя
Если город будет не найден, модуль тоже услужливо ответит посетителю
И даже после этого опять столкнулись со сложностями - индекс после предупреждения введен пользователем, но как обновить форму заказа, отправив запрос на сервер доставки? Но и это было решено автоматически и без правки шаблона - ищется поле индекса и на него вешается js-event blur.
Вот как-то так галопом по модулю скачивайте пользуйтесь, изучайте, и делайте такие же удобные модули. Или обращайтесь к нам
Никак не могу добиться выгрузки заказов с сайта в кабинет B2Cpl. На сайте используются торговые предложения. Может быть дело в них? Вес у товара в заказе установлен. Не знаю средств, как отладить событие выгрузки. Пробовал жесткий метод die() в методе ExportOrder, чтобы проанализировать выходные параметры, но в итоге "вес" нулевой, т.к. данные заказа, видимо, не успевают записаться. Что можете посоветовать?
Юрий, добрый день. Нет, дело в торговых предложениях быть не может. В новом релизе ожидается вывод сообщений об ошибке, с пояснением почему не происходит выгрузка. Рекомендую дождаться его, чтобы понять ошибку. Эта неделя ориентировочно.
Здравствуйте! Для покупателей было бы удобно, при выборе способа доставки, вместе со стоимостью доставки в ПВЗ, также видеть адрес пункта самовывоза и сроки доставки.
Антон, сообщите, пожалуйста, как только выйдет обновление. Вопрос с выгрузкой товаров в личный кабинет остался открытым. Крайне необходимо разобраться в этом, нужны средства отладки ошибок.
Юрий, эти выходные у меня край закрыть глобальные недочеты релиза, а потом в срочном порядке помогать тем, у кого что-то не получилось. Просто сейчас не могу помогать в частных случаях, потому что многое все равно упрется в недочеты основного.
Пытался разобраться в чем проблема выгрузки. Одна из проблем была настройка прав каталога, где создается временный файл .csv для экспорта.
Другая проблема, не читаются данные товаров заказа. То есть ID заказа есть, но характеристики товара отсутствуют. Привожу лог:
Module: Номер посылки;Номер клиента;Индекс;Город;ФИО;Телефон мобильный;Вес посылки;Полная стоимость доставки;Стоимость доставки к оплате;Товар;Кол-во ед. товара;Полная стоимость ед. товара;Стоимость ед. товара к оплате;Вес товара;Тип доставки;авиа;Оценочная стоимость посылки;; 23;1;;;;;0;291.50;0;;1;1902.50;1902.5;0;курьер;;1611
Из лога видно, что индекс, город, ФИО и т.д не выгружаются в файл экспорта. Кроме того, один из обязательных параметров выгрузки (WEIGHT), согласно API B2C, тоже не выгружается - пишет 0 в логе.
Так и не понял, к какому решению пришли. Получается, что в событии OnOrderAddHandler нет данных о товаре? Необходимо использовать другое событие? Вижу, что простой правкой здесь не отделаться. Я сам программист, но в Битриксе, к сожалению, не силен. Может быть Вы натолкнете на какое-то решение, сроки поджимают... Или стоит дождаться релиза? Сообщите, пожалуйста, ориентировочное время выхода обновления модуля.
Юрий, если честно, я не понял с какой проблемой вы столкнулись. Вы хотите выгрузку совершать сразу нового заказа? Релиз будет завтра, в любом случае лучше дождаться его.
Да, я думал, что можно не создавать новых статусов заказа, как в примере, "Отправлено Директ-Сервис". Скачал обновление, но появились другие ошибки.
Первое, не рассчитывается стоимость при выборе доставке. Прикладываю скрин.
Другая - важная проблема, не сохраняются настройки модуля. Я создал новый статус заказа "Отправлено Директ-Сервис" в точности как в инструкции. При попытке выбрать данный статус в настройка модуля B2C - ошибок никаких нет, но настройки не сохранились. Вручную в базе данных изменил данные настройки, провел заказ, изменил статус с "принято, ожидается оплата" на статус "отправлено директ-сервис", действие подвисло (иконка с надписью "Идет загрузка..."). Все правки провожу на локальной системе, но также проверял на бета-сайте, на живом сервере.
Я не знаю, как легче и проще донести информацию об ошибках. Я готов дать тестовый доступ к сайту, если нужно. Разобраться в чем причина - нет возможности.
1. Стоимость может не рассчитываться по причине отсутствия или некорректной настройки индекса. 2. Настройки службы доставки не сохраняются по причине ошибки Битрикс (большое количество профилей), этот вопрос решаем с ними. 3. Заказ не отправляется на сервер B2cpl по какой-то причине. Ошибка об этом должна выводиться в админке при смене статуса, но не выводится опять же по причине ошибки, которая будет исправлена Битриксом только в 12.5.6 модуля Магазина. Узнать что это за ошибка можно будет при предоставлении доступа на сайт (может телефон не указан, или другое важное поле).
Как влияет количество профилей на настройки модуля? Настройки разве не в базу пишутся? Не понял этого момента.
Услуги по поддержке данного компонента платные или бесплатные у Вас? Доступа в админ-панель достаточно? Вышлю его по ссылке, которую Вы указали в сообщении.
Как влияет количество профилей на настройки модуля? Настройки разве не в базу пишутся? Не понял этого момента.
Я вот тоже не понял. Убираю на тестовой установке список ПВЗ - все сохраняется. Добавляю - не сохраняется. Не смогу сам разобраться из-за времени, отдал это заслуженно техподдержке. Посмотрю что ответят - если решение с их стороны затянется - снова уберу временно этот список (но тогда нельзя будет детализированно выводить список ПВЗ, как это сделано сейчас).
Дело было в формировании пути к файлу экспорта: 'file' => urlencode('http://' . $arSite['SERVER_NAME'] . $path)
В настройках $arSite['SERVER_NAME'] был указан живой сайт, а тестировал я на beta.
Стикер сформировался нормально, надеюсь ошибок других нет.
Есть несколько вопросов.
1. В доставке из Москвы в г. Ростов-на-Дону на этапе оформления заказа на сайте, доставка составляла 292 руб. Эта цифру я вижу и в заказе в админке сайта. А в параметрах файла .csv, который выгрузился на сайт b2c - записано: 291.50 руб.
2. Номер партии получился: 20130709101450217. Эта цифра нормальная?
3. Оценочная стоимость уже включена при экспорте заказа? Потому что оценочная стоимость у меня влияет на размер страховки.
4. Если товар заказали и оплатили онлайн через кредитную карту, например, через робокассу. И заказ я выгрузил на сайт b2c. Транспортной компании надо отдельно сообщать о том, что доставка не наложенным платежом будет, т.е заказ и доставка оплачены уже?
Кстати, "рассчитать стоимость" доставки на этапе подтверждения заказа не удалось добиться, чтобы показывало. Нажимаю по ссылке - данных нет. Пробовал переиндексировать весь поиск, очищал полностью весь кэш.
1. В csv падает цена "как есть", без форматирования. В админке же, и в публичке идет форматирование согласно настройкам валюты. Скорее всего у вас идет округление для визуальных частей. Если это действительно критично, буду обрабатывать такую ситуацию.
2. Это орг.вопросы, лучше их решать с компанией (по адресу info@b2cpl.ru). Но насколько знаю - да, номер нормальный.
3. Оценочная стоимость передается в CSV также, да.
4. Это лучше тоже уточнить с компанией.
Кстати, "рассчитать стоимость" доставки на этапе подтверждения заказа не удалось добиться, чтобы показывало
У одного клиента похожая проблема, буду сейчас разбираться. Возможно, это и ваш случай. Я сообщу отдельно и выпущу фикс.
Юрий, по последнему - у вас кодировка windows1251? Если да, то последние обновления, которые я сейчас выпустил, решат проблему. Если нет - пишите по контактам сразу с доступами, буду разбираться.
Антон, спасибо! Теперь все работает. Настройки службы сохраняются и оценочная стоимость рассчитывается успешно! Хотя кодировка у меня именно UTF-8.
Вопрос с округлением цены необходимо решить, потому что клиенты могут даже из-за копеек находится в недоумении.
Еще один вопрос. Я не проверял этот момент. Вес товара в заказе должен быть обязательно для успешной выгрузки заказа на сайт b2c? Просто сейчас у меня вес не всем товарам проставлен. И был сделан заказ на товар, который без веса.
Юрий, без веса даже идеологически такой сервис не должен работать (иначе на каком основании выводить расчет стоимости?). Ну и, вероятно, он может не приниматься при загрузке на сервер b2cpl. По округлению копеек поставил задачу.
Почему-то при установке индекса 117546 доставки (Москва), показывается возможность B2Cpl Доставка (ПВЗ), хотя должен показывать возможность курьерской доставки. Вы можете проверить этот момент у себя?
Когда я приучу себя начинать вообще любой фидбек с "убедитесь, что проверка сайта не возвращает ошибок" (это внимание коллегам скорее). Проблема Юрия оказалась в ошибках сервера.
В ходе тестирования вашего продукта... обнаружил глюк... что если сменять город несколько раз... то индекс не изменяется... допустим я выбрал 1 город... а потом передумал и выбрал второй, а потом третий и т.д. то при этом индекс не меняется больше... Исправил так... если изменяется город... то поле индекса очищается... тогда все корректно срабатывает =) Привожу код своего изменения
Эдуард, спасибо, но проблема гораздо глубже, я над ней думал. Это скорее относится ко всему продукту, так как индекс подставляется автоматом (см. пример) после выбора города. Если же пользователь ввел индекс сам, а потом сменил город - непонятно, корректно ли его сбрасывать. Ну и внедриться в этот процесс практически невозможно на уровне модуля.
Действительно ошибка в настройках сервера была. До сих пор решаю ее с поддержкой хостинга. Еще при установке Битрикса проблема была в установке кодировки UTF (включения mbstring.func_overload), но я благополучно про это забыл. С этим компонентом пришлось вернуться снова к решению данного вопроса.
На локальной системе настроил и проверил сайт. Появились следующие вопросы.
В админке при формировании заказа вручную по кнопке "Добавить заказ" загружаются НЕ ВСЕ способы доставки. Устанавливаю как положено страну, область, город, а также устанавливаю индекс (по какой-то причине, индекс автоматически не устанавливается). Но в результате предлагается всегда два стандартных способа:
Этот вопрос крайне необходимо решить, т.к данный способ используется для формирования заказов по телефону. Общая сумма заказа сообщается клиенту, включая доставку.
Второй, менее важный недочет - это индекс при выборе города. Эдуард правильно заметил, есть глюки с установкой индекса. Именно при очистке индекса, глюк пропадает.
Антон, перешел по Вашей последней ссылке, тоже не меняется индекс при выборе города. Такая же ситуация и в админке. Крайне неудобно проверять индекс города по другим источникам. Текущий вариант решения остается только один? Предложенный вариант Эдуарда?
Юрий, так как рецидив был, вынужден оперировать только доступами, если у меня не моделируется просьба понять. В админке у меня все выводится, нужны доступы. (вы кстати и сами можете посмотреть в админке на test.d-it.ru, по доступам test / 111111).
Антон, перешел по Вашей последней ссылке, тоже не меняется индекс при выборе города
Потому что это проблема Битрикс я не знаю как тут поступить (я даже не знаю как ее преподнести - то ли недоработка, то ли ...). Внедриться в шаблон, и уж тем более в компонент, я не смогу. Попробуйте по способу Эдуарда, к примеру.
Доступы не могу дать, т.к. сейчас работаю только на локальной системе. На сервере вопрос с ошибками решается на уровне хостинга.
Я сейчас зашел на Ваш тестовый сервер, http://test.d-it.ru/ Нажимаю кнопку добавить заказ и та же проблема (проверял в 3х браузерах, ie, firefox, chrome). Подчеркиваю, именно при добавлении нового заказа. Если редактировать уже существующий заказ, таких проблем нет.
Юрий, извиняюсь, теперь понял. Тут скорее надочет самой админки (не могу это записать на баг модуля только). Я это поставлю в план на следующие доработки, чтобы как-то обойти сие поведение (доработки еще должны пройти одобрение компанией).
Пока могу посоветовать хак - выбираете город, индекс, жмете "применить" (без заполнения других полей, что вызовет ошибку добавления), выводятся все службы, потом добавляете http://my.jetscreenshot.com/18603/201...-kllp-23kb
А подскажите ответ на мой вопрос... как лучше организовать такое условие.... допустим выводить службу доставки B2CPL для всех городов кроме Москва... как лучше поступить... куда костыль вставить?
А почту России возможно отключить же в выводе, что бы не показывало: B2Cpl Доставка (Почта России - посылка с объяв. ценностью и налож. платежом) Я отключил галочку: Включить в результаты варианты Почту России Но все равно выводит почту России
Наши победили. В ближайшем релизе в обновлениях Битрикс будет выпущен фикс поведения индекса - при смене местоположения, индекс будет меняться всегда тоже. Так что проблемы такого рода должны разрешиться.
1. Спасибо, и правда потерялось количество. Чтобы не ждать фиксы, внесите, пожалуйста, у себя самостоятельно: в файле /bitrix/modules/b2cpl.delivery/include.php где-то на 470 строчке, после while ($arBasket = $rsBasket->Fetch()) вставьте сразу $arBasket['WEIGHT'] *= $arBasket['QUANTITY'];
2. Такого не делалось. Если такое поле есть (может присутствовать) в выгрузке, я добавляю.
1. Спасибо, поправлю у себя. 2. Честно говоря, точно не могу сказать - какой состав полей допускается для выгрузки. В формате xls данного поля нет. В документации API B2C описания состава полей для выгрузки - не нашел. Но в специальном файле .csv, в личном кабинете, под названием "Коды" есть заголовок "Комментарии", помимо остальных данных заказа. Поэтому я и подумал, может быть должна работать выгрузка и по комментарию тоже. Это необязательный пункт, для меня во всяком случае.
Важно! внести изменения в код модуля. Я прослушал разговоры колл-центра с клиентом по доставке.
Крайне недоволен остался тем, что у сотрудника колл-центра нет информации об адресе доставки. Это отражается клиентами на отзывах о доставке. Ошибка сохраняется, начиная с первого заказа. Я думал вначале, что проблема на их стороне. Связался с управляющим в компании, они выслали мне в подтверждение пример шаблона, загруженный автоматически. Ни в одном из заказов, загруженных автоматически, не было адреса доставки.
Оказывается, модуль не выгружает адрес доставки?
Этот момент необходимо исправить в срочном порядке.
Антон, а где исправления были внесены? Просто я сейчас смотрю, версия модуля 2.1.4 обновлена у меня еще 17.07.2013. И последняя версия тоже 2.1.4. Соответственно, обновить не могу, т.к номер версии тот же.
И второй вопрос, Вы внесли дополнительно коррективы по расчету веса? Я писал выше, что вес не удваивается при выгрузке заказа, внес изменения тогда вручную в коде.
Нашел еще одну неточность. Не учитывается округление до целых при выгрузке заказа в B2C.
Напишу на примере заказа.
Цена доставки в г. Владимир: 265 руб.
У нас наценка стоит 10% на доставку. В итоге цена доставки у нас на сайте: 291 руб 50 коп. (291, 5).
В настройках валюты установлено количество десятичных знаков = 0, т.е. все цены на сайте указаны без копеек. Там где производятся расчеты в копейках, идет округление до целых в рублях. Проблема в том, что при выгрузке заказа в транспортную компанию отправляется точная сумма до копеек, это неправильно.
Антон, здравствуйте, пытаюсь протестировать модуль с учеткой test - при оформлении заказа не предлагает ПВЗ почему-то, тестовый аккаунт имеет какие-то ограничения?
Андрей, здравствуйте. Нет, test полноценный аккаунт. Причина, по которой ПВЗ может не появляться: в указанном местоположении (индексе) его попросту нет или у товаров не указан вес.
Печаль... С последними обновлениями Битрикс, перестали загружаться настройки модуля. Антон, вы не могли посмотреть, открываются ли у Вас настройки?
Обновления Битрикс связаны с переходом на новое ядро 14.0. Прикладываю скрин модуля из админки.
Не могу включить службу, т.к не вижу ни одной настройки, все вкладки пустые. Включал лог ошибок, тоже не увидел проблем. С чем это связано так и не понял.
Проблема реально острая, т.к не могу использовать службу доставки!
Антон , написал на сайте. Там проблемы у Вас с регистрацией пользователей. Задал вопрос по быстрой форме.
Я проверил, проблема с загрузкой профилей в bitrix/modules/b2cpl.delivery/include.php Если закомментировать 'PROFILES' => self::GetProfiles(), то загружаются настройки, но без вкладки профили и платежные системы.
Антон , я создал заявку с вопросом. Но никаких уведомлений не получил о том, что заявка в рассмотрении. Закрыл вкладку, а теперь и вовсе не могу найти свой вопрос, где задавал.
Юрий, заявка поступила, она в работе в порядке очереди. Уведомление на почту вам придет при ответе (хотя и сама копия тикета должны была прилететь).
Может дело в спаме. Как вариант - вы можете создать еще один тикет с другой почты. Ну и самое главное - максимально опишите проблему в тикете, чтобы решить максимально оперативно все. Может сразу доступ предоставьте.
К сожалению, я вырос тот период, когда смогу каждого из вас обслуживать персонально. Прошу понять.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».