Интеграция opencart retailcrm+instagram+мой склад+google Analytics

На примере рабочего проекта будет описана интеграция opencart retailcrm + мойсклад по шагам, включая выгрузку товаров и настройку синхронизации. Система в целом упрощает с точки зрения сопровождения бизнес, обзор далее — тому подтверждение.

Термины

ИМ — интернет-магазин; срм или РЦРМ — retailcrm

Как всё работает

Каталог товаров/категорий по крону парсится с ИМ в РЦРМ. Заказы в РЦРМ подгружаются режиме реального времени вместе с контрагентами. Если на стороне срм происходят изменения, то новые данные автоматически отправляются в ИМ. Из РЦРМ заказы с контрагентами передаются в МойСклад. Остатки по всем товарам синхронизируются из МойСклад в ИМ. Связь односторонняя. В
МойСклад данные по каталогу товаров не изменяются. Если какая-то позиция на ИМ отсутствует, то она автоматически создаются при синхронизации с МойСклад.

Opencart

Интеграция opencart с retailcrm производилась с помощью бесплатного модуля https://ocmod.net/modul-retailcrm

Какие задачи удалось решить:
      — формирование ICML-каталога с сайта,
      — синхронизация статусов и полей заказов и клиентов,
      — передача заказов/клиентов с сайта в retailCRM

Инструкция по настройке модуля в опенкарт

1 Opencart. Вкладка «ГЛАВНАЯ»

Заполнил поля адрес retailcrm и Api ключ RetailCRM

В настройке торговых зон поставил «Российская Федерация»

Остальное оставил по умолчанию

2 Opencart.Вкладка «СПРАВОЧНИКИ»

Сопоставил способы доставки ИМ и retailcrm. Для доставки через СДЕК потребовалось создать отдельный способ доставки в retailcrm.

Сопоставил статусы заказов там и там. Недостающие статусы добавил в retailcrm
#статусы retailcrm

Сопоставил способы оплаты там и там. Для оплаты наложенный платеж СДЕК магазина создал в ритейлсрм отдельный способ

Указал оплату и доставку по умолчанию

Указал статус пропавших заказов «черновик«. Это когда посетитель не доводит заказ до конца, т.е. не нажимает кнопку подтвердить заказ

3 Opencart.Другие вкладки

Я оставил без изменений кроме «Пользовательские поля». Они позволяют передавать доп.инфу о покупателях и о заказе. Я использовал такую возможность, чтобы передавать информацию о купоне, которым воспользовался покупатель.

Подробнее о настройке передачи купона в ритейлСРМ здесь

Изначально во вкладке пусто. Нужно зайти в подраздел настраиваемые поля в разделе покупатели и добавить хоть одно поле.

Затем вернуться обратно во вкладку модуля интеграции и установить соответствующее пользовательское поле из CРМ.

Как создавать поля в ритейле — здесь

4 Opencart.Настройка задач синхронизации в кроне

Чтобы в ритейле появился каталог товаров из ИМ необходимо включить выгрузку. В кроне прописал

* */4 * * * /usr/bin/php /path/to/opencart/system/cron/icml.php >> /path/to/opencart/system/logs/cronjob_icml.log 2>&1

Для получения изменений и новых данных, например, кода добавили клиенту или заказу новые сведения в ритейле нужно записать в кроне.

*/5 * * * * /usr/bin/php /path/to/opencart/system/cron/history.php >> /path/to/opencart/system/logs/cronjob_history.log 2>&1

*/5 означает, что периодичность будет раз в 5 минут

RetailCRM

Теперь перейдем непосредственно к настройке РЦРМ. Для ознакомления с системой предоставляется пробный период. По истечению какого-то времени понадобится перейти на тариф «
Профессиональный», который поддерживает все описанные в статье возможности. Подробнее

Инструкция по настройке РЦРМ

1 RetailCRM.ICML файл каталога

В настройках указал, где лежит xml выгрузки в opencart (формат, который поддерживает ритейл). Эта настройка в разделе Настройки->магазины->магазины доступна для уже добавленных сайтов. Я добавил новый, т.к. не пользовался ранее. Там вошел во вкладку каталог и выставил вот такие параметры

В основной вкладке прописал адрес сайта, символьный код и галочку — активность.

2 RetailCRM.Статусы

На *.retailcrm.ru/admin/statuses добавил все необходимые статусы в соответствии со статусами в ИМ. При этих действиях попутно создал пару статусных групп, когда не нашел подходящих под некоторые статусы.

Там же в подразделе переходы статусов для обоих типов заказа выделил все статусы и сохранил.

3 RetailCRM.Оплаты

*.retailcrm.ru/admin/payment-types

По умолчанию уже присутствуют около 5 простых способов оплат, не интегрированных в платежные системы. Для проекта создал особый способ оплаты с интеграцией для платежей через сбербанк.

Предварительно подключил к срм виджет сбербанк эквайринг

4 RetailCRM.Доставки

https://docs.retailcrm.ru/Users/Administration/Dictionaries/SettingTypeOfDelivery?account=https://snegiriki.retailcrm.ru

5 RetailCRM.Сбербанк эквайринг


Указал ключ доступа к АПИ срм. Но прежде создал его в ритейлСРМ в разделе
Настройки/Интеграции/Ключи доступа к API Подробнее какие разрешения выставлять ключу https://im-business.com/marketplace/sberbank-ekvajring/#Application

и заполнил все поля, что просил мастер установки

Для заполнения некоторых полей потребуется информация от сбербанка. Нужно заключить с ним договор.

После завершения настройки виджета я через личный кабинет сбербанк эквайринга отправил запрос в тех. поддержку(в ЛК можно выбрать из шаблонов):

Здравствуйте. Прошу подключить callback-уведомления на боевой среде на URL https://sberbank.imb-service.ru/payments/pay-callback.html. Уведомления нужны без контрольной суммы.

Более подробно весь процесс настройки описан на сайте разработчика виджета Там в конце приводятся возможные проблемы. Лично у меня возникла ошибка, которая не описана у разработчика: undefined index:vat. Оказалось, что в заказе не был установлен параметр НДС.

Видео инструкция по оплате через виджет сбербанк экваринг в ритейлСРМ https://youtu.be/ztIMWk16X20

6
RetailCRM.Валидация

Валидации помогают контролировать изменения в заказах и настраиваются в разделе настройки->системные->валидации https://*.retailcrm.ru/admin/settings/validation

Я реализовал для своего проекта след. валидации:

1. Невозможен переход в группу возврата из ранних статусов по заказу.


дублирую условие из скриншота

changeSet.isUpdate() and changeSet.hasChangedField('status') and order.status.group.name == 'Возврат' and changeSet.oldValue('status').ordering < 35

2. Если заказ перешел из статуса Новый в любой другой, то вернуть статус Новый обратно уже нельзя. Статус Новый должен быть только для новых заказов.

дублирую условие из скриншота

changeSet.isUpdate() and changeSet.hasChangedField('status')and order.status.ordering < 10

3. Невозможно изменение статусов заказа на раннюю обработку из статуса «Доставляется».

дублирую условие из скриншота

changeSet.isUpdate() and changeSet.hasChangedField('status') and changeSet.oldValue('status').code == 'delivering' and order.status.code == 'processed'

7 RetailCRM.Почта

Делаем с помощью retailcrm интернет — торговлю омниканальной благодаря возможности агрегировать там корресподенцию со своих почтовых аккаунтов.

Настройки->Системные ->Почта

Настройки->магазины->магазины

8 RetailCRM. Instagram и facebook

Продолжаем организовывать омниканальную интернет-торговлю. В РЦРМ настроил виджет для обработки
функционалом retailcrm сообщений из instagram.
Сервис автоматически будет получать корреспонденцию от клиентов , если установить модуль в разделе retailcrm Настройки->интеграция->маркетплейс

Что потребовалось

До установки виджета из маркетплейса retailcrm я в инстаграм магазина (была обычная страничка) перевел в режим бизнес-аккаунта (не требуется вложений). Об этом подробнее здесь https://youtu.be/GdVwFPWxW9c

Все действия описаны в инструкции

Интеграция с сервисом Мойсклад

МойСклад является удобным инструментом
управления торговлей касательно складского учета. Важно, что сервис может принимать сделки amocrm и других систем, в том числе retailcrm.

1 МойСклад. Подготовка к импорту товаров

Выгрузка каталога из ритейлсрм в МС напрямую через модуль обмена не поддерживается. Необходимо импорт делать через настройки-> интеграции МойСКЛАД, выбирая файл xml каталога товаров у себя на компьютере или указывая внешний url(например, с сайта ИМ)

Я импортировал в МойСклад все товары с помощью выгрузки модуля интеграции opencart retailcrm. Но перед этим добавил немного изменений туда, чтобы заработала связка МойСклад->opencart и
МойСклад-> retailcrm

Изменения коснулись файла admin\model\extension\retailcrm\icml.php

ЦельГде расположеноИзменение
Коду товара МойСклад присвоить значение Model в Опенкартстроку
$e->setAttribute('id', $product['product_id'] . '#' . $offerId);
заменить на
$e->setAttribute('id', $product['model'] . '#' . $offerId);


Коду товара МойСклад присвоить значение Model опенкарт
строку
$e->setAttribute('id', $product['model']);
заменить на
$e->setAttribute('id', $product['model']);

связать товары ритейлСРМ и МойСклад. Для этого в xml нужно вставлять параметр
xmlId
после фргамента
$e->appendChild($this->dd->createElement(‘price’))->appendChild($this->dd->createTextNode($price));
вставить
$e->appendChild($this->dd->createElement('xmlId')) ->appendChild($this->dd->createTextNode($product['product_id']));

2 МойСклад. Импорт товаров

Зашел в настройки->импорт->товары (Яндекс.Маркет)

Импортировал выгрузку xml ритейлсрм с сайта ИМ (формат, который поддерживает МОЙСКЛАД)

3 МойСклад. Модуль обмена retailcrm

Указал настройки подключения к МойСклад. В качестве ключа интеграции использовал отдельный с максимальными правами доступа к retailCRM.

Для того, чтобы во вкладке Статусы правильно связать две системы, потребуется в МойСклад создать недостающие статусы сделок согласно инструкции.

Если после настройки обмена заказы по-прежнему не поступают в МОйСКлад из retailcrm, то нужно внимательно ознакомиться с записями вкладки Журнал.

4 МойСклад. Модуль интеграции с opencart

С целью обновлять товарные остатки в ИМ поставил модуль интеграции opencart МойСКлад https://ciframe.ru/moysklad-opencart-connector/ 

Данное решение условно бесплатное, имеет ограничение до 1000 товаров и недоступны некоторые настройки.

Задал основные настройки обмена: статус, логин, пароль. Потом по наитию выбрал параметры во вкладках настройки товаров, настройки заказов. Упор делал на то, чтобы создавались категории,товары и обновлялись остатки при синхронизации.

Важно правильно настроить параметры связи.

В пункте 1 данного раздела я производил модификацию модуля retailcrm в ИМ, чтобы товары связывались по параметрам код товара(МойСклад) <- модель(Opencart) 


При успешной настройке можно будет в последней вкладке связать товары. Нажимаем «связать товары», а потом обновить товары. После этого станет доступным обновление складских остатков.

видео по добавлению остатков в МойСклад поможет правильно организовать складской учет https://youtu.be/kh8GDaOUDcA

Для регулярного обновления товаров настройте крон/планировщик/crontab на своем хостинге. Тип крона «Исполняемый бинарный файл» строка крона выглядит так(1 — обновление товаров, 2 — обновление остатков):

1. wget -O /dev/null ‘https://snegiriki.ru/index.php?route=extension/module/ms_integration/updateProducts’
2. wget -O /dev/null ‘https://snegiriki.ru/index.php?route=extension/module/ms_integration/updateStock’

Google universal analytics

Систему аналитики запускал по инструкции
https://octemplates.net/octemplates-knowledge-base/analytics-ecommerce

т.к. у меня на cms opencart установлен шаблон OCTemplates. Очень упрощает муторный процесс по установке счетчиков
google и настройку целей . Сделал как в инструкции и сразу заработало без выяснения извечного вопроса «почему не поступают данные».

Проблемы интеграции, которые удалось решить с помощью тех. поддержки

МойСклад

Здравствуйте, подскажите, пожалуйста, почему не появляются в МойСклад заказы и товары из ритейлСРМ. Соответствия складов, магазинов и статусов заданы.

Модуль интеграции с МойСклад не позволяет загрузить каталог в МойСклад. Если у вас есть интернет магазин, откуда заказы планируется загружать в RetailCRM, то наиболее верным решением было бы сформировать каталог в этом интернет магазине. При этом в системе МойСклад должен быть аналогичный каталог.

Необходимый для RetailCRM формат каталога описан по ссылке. Порядок загрузки описан по ссылке. Требование к каталогу для интеграции с МойСклад описано по ссылке.

Если интернет магазина нет или заказы будут поступать в систему без товаров (согласовываться по телефону или через чат), то можно использовать скрипт по ссылке. Он не поддерживается нами, но всё ещё позволяет сделать каталог товаров на основе данных из системы МойСклад. Скрипт нужно будет разместить на внешнем сервере и настроить его периодический запуск, для обновления файла каталога.

RetailCRM

Подскажите, пожалуйста, почему не получается выбрать склад отгрузки в заказах?https://skr.sh/sBXODhnWsKF

В случае, если в заказе выбран интеграционный тип доставки, информацию по складу нужно указать в настройках модуля. Для Сдэк вам нужно указать город склада по ссылке. Эта информация используется для расчёта доставки.

Подскажите как подключить retailcrm
Chat https://skr.sh/sBV4Lgdf1ud

crm chat доступен на тарифе «Профессиональный» На тарифе появляется возможность выбрать количество пользователей для данного раздела и оплатить RetailCRM Chat в личном кабинете (скриншот). Он появится на панели с разделами после оплаты и активации. Вы сможете активировать раздел если перейдёте в Настройки — Интеграция — Чаты (скриншот)

Для дальнейшей работы вам потребуется подключить интеграционные модули, которые позволят принимать сообщения клиентов из разных каналов. Найти доступные модули вы можете если перейдёте в Настройки — Интеграция — Маркетплейс (скриншот)

подскажите почему в заказе способ оплаты сбербанка эквайринга можно выбрать только, когда в качестве способа доставки указан СДЕК? Получается, что интеграционные типы оплаты работают только с интеграционными типами доставок?

Для выбранного типа доставки в заказе, и других необходимых кроме СДЭК, потребуется в настройках разрешить этот тип оплаты — пример.

Если доставка интеграционная, то настроить разрешенные типы оплаты потребуется в настройках модуля интеграции.

После этого для настроенного типа доставки, при его выборе в заказе, можно будет использовать этот тип оплаты.

подскажите почему у всех товаров остатки равны нулю? В ICML файла магазина поля quantity имеют значения больше нуля. Также к ритейл подключен модуль интеграции с МойСклад. Когда в Мойсклад увеличиваю остаток, то в ритейле ничего не происходит.

У вас в ICML нет xmlId ни у одного товара.

Модуль для OpenCart не предполагает выгрузки этого параметра, так как в OpenCart нет поля из которого его можно брать.

Чтобы передавать xmlId вам нужно определить, в каком из полей OpenCart значение совпадает с внешним кодом товара в МойСклад. После этого внести в код генерации каталога изменения, для выгрузки в файл этого поля, в теге xmlId. Правила кастомизации модуля описаны по ссылке. Важно так же учитывать требования к формату xmlId (ссылка).

Заказать кастомизацию модуля можно у наших партнёров (ссылка).

при настроенной интеграции ритейл+ МС из опенкарта остатки не идут в ритейл? или в любом случае не идут? а из ритейла в опенкарт напрямую остатки обновляются?

при настроенной интеграции ритейл+ МС из опенкарта остатки не идут в ритейл?

В RetailCRM есть понятие «общий остаток» и остаток по складам. Из OpenCart с каталогом может быть передан общий остаток, но он игнорируется, если включено редактирование складских остатков. В этом режиме ожидаются остатки по складам, которые из OpenCart не передаются.

а из ритейла в опенкарт напрямую остатки обновляются?

Модуль не выгружает остатки в OpenCart. Выгружается только общий остаток с каталогом.

Здравствуйте, подскажите, из-за чего может быть ошибка https://skr.sh/sBdj7EYrt8F, когда я нажимаю кнопку сгенерировать счет в заказе в разделе оплаты через сбербанка эквайринга?

У товаров не задан тип НДС

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *