Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

19.11.20

Интеграция - Сайты и интернет-магазины

C 2011 года я занимаюсь интеграцией с интернет-магазинами и за это время, наверное, повидал все. Делал интеграцию как «культурными», так и «экзотическими» способами. Количество магазинов исчисляется сотнями. В этой серии статей я буду делиться своим опытом, а также выкладывать какие-то полезные наработки.

Поехали.

 

Этап 0: Выбор модели обмена

 

Нам надо понять, какими объектами мы будем обмениваться с сайтом. Наиболее популярные варианты удобно представить в виде таблицы:

 

Базовый

Расширенный №1

Расширенный №2

Полный

Загрузка заказов

+

+

+

+

Выгрузка статусов, комментариев, трек-номера заказа

 

+

+

+

Выгрузка остатков и цен

 

 

+

+

Выгрузка всех корректировок по заказу

 

 

 

+

 

Эта таблица наглядно показывает какими объектами нам предстоит обмениваться, а так же при общении с Заказчиком / Работодателем позволяет максимально быстро прийти к нужной модели обмена. Дело в том, что часто приходилось сталкиваться с заказчиками, которые изначально не совсем понимают что конкретно они хотят получить от обмена. Благодаря этой таблице Вам будет проще понять друг друга.

  • «Базовый» — это по сути самый простой и самый популярный вариант обмена. При таком варианте обмена нам будет доступен самый широкий выбор способов получения данных

  • «Расширенный №1» и «Расширенный №2» — часто называют «двухсторонним» обменом с сайтом. И в отличает от «Базового» здесь мы уже имеем некоторые ограничения в доступных методах обмена. На моей практике далеко не у всех сайтов есть API (или какой-ли метод обмена), позволяющий передавать все необходимые данные «культурным» способом

  • «Полный» - это пожалуй самый сложный и трудоемкий способ обмена. Зачастую для полноценного решения это задачи приходится читать и писать прямо в базу данных MYSQL сайта. Однако у многих  современных движков есть API, позволяющее красиво решить данную задачу

Где же выгрузка каталога? Практика показывает, что чаще всего каталог на сайте формируется альтернативными способами. На это есть множество причин, но об этом речь пойдет в отдельной статье.

 

Этап 1: Выбор способа обмена данными

 

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

CommerceML

На примере Битрикс это выглядит так:

  • Нам нужно авторизоваться на сайте

  • Далее сделать запрос к сайту https://АдресСайта.РФ/bitrix/admin/1c_exchange.php?type=sale&mode=query

  • В ответ мы получим XML со всеми заказами, который легко можно загрузить в 1с

Подобный формат обмена имеет огромное количество движков, например тот же Insales, NetHouse, CS-Cart, NetCat, Diafan.CMS и т.д.

API

Аббревиатура API расшифровывается как «Application Programming Interface» (интерфейс программирования приложений, программный интерфейс приложения).

Это тоже отличный способ обмена, с которым работать одно удовольствие. Яркими представителями подобных обменов являются: INSALES, Storeland, AdvantShop.

Суть обмена заключается в том, что у сайта есть программный интерфейс для взаимодействия с внешними системами, который содержит набор команд таких как:

  • Получения заказам

  • Выгрузки остатков

  • Обновления цен

  • Корректировки заказа

  • Выгрузки трек-номера

  • Создания/Удаления товара в каталоге

  • и. т. д.

Как правило сайт «отдает» и «получает» от нас данные в формате JSON или XML.

 

MYSQL

Это способ обмена, имеющий самые широкие возможности для чтения и записи данных. Однако для чтения и записи данных извне вам понадобиться сделать некоторые настройки на стороне хостинга, где установлен сайт. Пример настройки на примере хостинга Beget:

Хочу обратить внимание, что я поставил доступ для чтения и записи извне с любого IP. Безусловно это не очень безопасно. Когда загрузчик будет переведен в «боевой режим», нужно будет ограничить IP адреса, с которых будет идти чтение и запись данных. Однако для тестирования — это идеальный вариант. Ведь у программиста на рабочем ПК часто нет «статического IP», что может усложнить разработку. Из всех протестированных мной хостинг-провайдеров, beget оказался самым удобным для тестирование/разработки загрузчика, работающего по данной модели обмена.

Обычно при обмене подобным способом я предпочитаю не ждать пока клиент откроет доступ (поверьте это всегда не быстро), а сделать копию базы и уже начать с ней работать (в идеале иметь и копию сайта).

Некоторые хостинг провайдеры не могут дать прямой доступ извне на чтение/запись (например reg.ru), он дают подобный доступ только через ssl, что немного усложняет разработку.

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

 

Парсинг сайта

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

  • Мегагрупп — загрузка заказов не позволяла забирать все необходимые данные, выгрузка данных о статусе, комментарии отсутствовала

  • TIU.RU – заказы можно было загрузить по API, однако для выгрузки статусов пришлом делать парсинг и «имитацию» ручного изменения статуса для полной автоматизации выгрузки данных

  • Alltrades – не было корректной загрузки заказов

 

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

Главная проблема подобного обмена в его ненадежности, так как малейшая корректировка верстки сайта (со стороны админки) приводит к тому, что обмен перестанет работать. Ведь по сути для получение/отправки данных мы имитируем заход на сайт (в его админ. панель) и начинаем «программно», ориентируясь на «верстку» читать данные. Если данные располагаются на нескольких страницах — делаем перелистывание страниц. Перед внедрение подобного способа обмена, обязательно нужно предупредить Вашего заказчика о всех возможных последствиях. Естественно ни о какой гарантии не может быть речи. Изменения на сайте могут произойти в любой момент и Заказчик должен понимать, что ему придется оперативно устранять проблему. Поэтому заключайте сразу договор на ТП:)

 

Парсинг почты

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

Данные удобнее всего получать по протоколу IMAP. Он позволяет идентифицировать «не прочитанные» письма. Выгоднее всего для подобного обмена завести отдельную почту.

Как идентифицировать заказы полученные по электронной почте? Чаще всего уникальный номер заказа будет записан в теме письма после символа «№» или «#».

Когда приходится прибегать к подобным обменам? На моей практики подобные обмены встречались по загрузке данных из:

  • Landing Page - так называемые одностраничные сайты с каким-то горячим предложением. Раняя версия конструктора одностраничных сайтов LPMOTOR при создании заявки отправлял данные либо на почту, либо на мобильный телефон

  • Скрипты для сайтов типа «купить в 1 клик»

  • «Самописные сайты» без базы данных (да да и такое тоже встречалось на моем пути)

 

Этап 2: Идентификация

 

Клиенты:

Практика показала, что самый лучший вариант идентификации физ. лиц — это Телефон, потом e-mail. При этом телефон для поиска нужно привести в нужный формат (убрать пробелы, доп. символы и разделители, убрать +7 и 8).

ФИО и адрес не являются уникальными идентификаторами, есть огромное количество людей, даже в одного городе с одинаковым ФИО.

Юр. лицо правильнее всего искать по ИНН.

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

 

Товары:

На мой взгляд самый надежный вариант — ИД товара на сайта. Однако не всегда этот вариант доступен. Второй по популярности вариант — это артикул. Но с ним не все так однозначно. Далеко не всегда он уникален. Часто встречаются интернет-магазины, где с одним артикулом может быть множество товаров, с разными характеристиками (например товары с разными цветами имеют один артикул).

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

 

Заказы:

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

 

Этап 3. Синхронизация статусов

 

Тема статусов очень объемная. Как правило главной сложностью здесь является то, что состав статусов на сайте и в 1С отличается.

Для решения это задачи можно использовать «таблицу соответствия» или привести статусы «к общему знаменателю». Как правило клиенты выбирают первый вариант.

Еще одним решением данной проблемы может быть добавление нового реквизита в 1С «статус на сайте».

 

Этап 4. Обновление Цен и Остатков

 

Для выгрузки Цен и Остатков на сайт, на стороне 1С уже должен быть загружен каталог с товарами, содержащий уникальный идентификатор, по которому Вы будете находить товар на сайте.

Как правило данный этап не содержит каких-либо подводных камней. Главное здесь определиться с частотой обмена для будущего фонового задания.

 

Этап 5. Регламентное задание

 

Ну и завершающая стадия разработки, после того, как вы закончили тестирование — перевод обработки в работу в «фоновом режиме» по расписанию. Пример настройки обработки (для выполнения по расписанию)

 

Ну а сама обработка для запуска в ручном режим выглядит так: 

 

По сути мы должны сделать так, чтобы Процедура «ЗагрузитьЗаказы», которую при тестировании запускали простым кликом по одноименной кнопке стала доступна для выполнения в фоновом режиме по расписанию. Данный задача легко решается с помощью БСП, я сделаю отдельную статью с примером подобной обработки. После выполнения фонового задания в журнале регистрации можно увидеть подробности работы обработки:

 

Часто задаваемые вопросы:

 

1) Почему бы не писать данные сразу в 1С?

Ответ: На мой взгляд есть ряд причин, почему подобная схема обмена является менее популярной чем перечисленные выше варианты:

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

  • Доступность — зачастую у 1С программиста просто нет доступа к сайту, для того, чтобы вносить корректировки в механизм формирования заказа (или за работу сайта уже отвечает какая-то организация). Более того, если это SaaS решение (insales, Мегагрупп, Storeland) — это просто невозможно

  • Надежность — тут конечно спорный вопрос. Но база хостинга находится в Дата Центре, за ее работой ведется наблюдение и риск отказа хоть и есть, но он значительно ниже чем база на Вашем сервере. Просто представьте что будет, если клиент будет оформлять заказа и в момент записи данных произойдет ошибка или данные по какой-то причине не запишутся?

2) Как часто надо загружать заказы, Какая периодичность выгрузки остатков, и.т.д.

Ответ: На этот вопрос нет однозначного ответа. Все во многом зависит от специфики работы и ресурсов, которые Вам предоставляются. Так например если раз в 5 секунд обращаться к серверу за заказами, вероятно это не очень понравится многим хостинг провайдерам и Вас могут забанить (если речь идет про коннект к базе MYSQL).

обмен с интернет-магазином интеграция сайтом CommerceML API парсинг сайта загрузка заказов

См. также

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

20400 руб.

19.12.2023    4195    28    9    

27

СБП. Оплата по QR-коду Сайты и интернет-магазины Программист Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Бухгалтерский учет Управленческий учет Платные (руб)

В настоящее время система СБП очень часто стала использоваться в повседневной жизни. Одна из систем интеграции СБП через СБЕР. Данная конфигурация является инструментом интеграции СБП в Альфа Авто. Данная система не просто формирует статический QR, а динамический, а значит, в системе будет привязка и на покупателя, и на документ.

6000 руб.

25.10.2022    6126    31    4    

10

Оптовая торговля Розничная торговля Сайты и интернет-магазины Программист Платформа 1С v8.3 Оперативный учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

ВАЖНО: расширения не предназначены для модуля обмена Битрикс 8.х. Полный список ограничений см. ниже в разделе ОГРАНИЧЕНИЯ. Расширение предназначено для выгрузки на сайт Битрикс сопутствующих товаров, аналогов, рекомендованных и прочих связанных товаров.

3600 руб.

25.07.2018    45696    87    77    

95

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Россия Платные (руб)

Модуль выгрузки товаров услуг из 1С для сайта "Авито" раздел "Автозагрузка" выполнена в виде обработки. Обработка подходит для конфигураций УТ, УНФ и Розница. Данная обработка позволяет создавать шаблон с объявлениями для "Авито" - "Автозагрузка".

4200 руб.

07.06.2022    17164    46    56    

40

Сайты и интернет-магазины Программист Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Платные (руб)

Данный модуль предоставляет возможность выгружать заказы из 1С: Управление торговлей 11 версии в "MEASOFT" (ранее "Курьерская служба 2008").

9600 руб.

27.04.2022    11262    19    3    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. khodyrev 12.01.21 19:51 Сейчас в теме
Доброго времени суток!
Подскажите пожалуйста, как сделать синхронизацию 1С Розница ПРОФ с сайтом через CommerceML?
7. Bukaska 140 22.01.21 16:13 Сейчас в теме
(1) Пишите в техподдержку)))
2. markbraer 73 12.01.21 22:37 Сейчас в теме
Здравствуйте!
Администрирование - Обмен с сайтом - Настройки обмена с сайтом- Создать
3. пользователь 21.01.21 15:47
Сообщение было скрыто модератором.
...
5. пользователь 21.01.21 16:27
Сообщение было скрыто модератором.
...
6. пользователь 21.01.21 16:28
Сообщение было скрыто модератором.
...
4. пользователь 21.01.21 16:26
Сообщение было скрыто модератором.
...
8. kery76 27.01.21 11:49 Сейчас в теме
Добрый день, нужен о сделать обмен сайтом через mysql, на 11.3 ут была большая доработка для обмена полусырая меня не устраивала полностью не работала возможность дозагружать измененные товары или добавлять только всю номенклатуру целиком((, фильтры не работали что грузить а что нет, либо нужно эту доработку причесать и адаптировать под ут 11.4 или создать новую с возможностью постоянного добавления функционала.
9. markbraer 73 27.01.21 12:09 Сейчас в теме
(8) Напишите мне на почту. Мой логин собака Яндекс ру
10. kery76 27.01.21 12:28 Сейчас в теме
11. dimaster 40 07.02.21 20:12 Сейчас в теме
woocommerce с розницей интегрили?
12. markbraer 73 07.02.21 20:42 Сейчас в теме
(11) С Розницей много всего интегрировал. Но на самом деле логика всех интеграций одинаковая. С woocommerce работал тоже
dimaster; +1 Ответить
13. dimaster 40 08.02.21 14:00 Сейчас в теме
(12) можете выложить решение на инфостарте? за см. за деньги. интересует woo+розница
14. HaIIpuKoJIe 17.03.21 12:12 Сейчас в теме
(13)1c data exchange с унф вроде бы норм работает, думаю и на рознице взлетит. Попробуйте дэмо.
15. user700159_fisherj838 17.03.21 21:01 Сейчас в теме
Интересует интеграция Могуты с Розницей 2.3
16. пользователь 04.08.21 11:20
Сообщение было скрыто модератором.
...
17. markbraer 73 04.08.21 12:04 Сейчас в теме
(16) Если есть вопросы - Напишите мне на почту. Мой логин собака Яндекс ру
18. lorra 06.05.22 01:56 Сейчас в теме
Добрый день, у нас магазин на сайте 100 сп, работаем по договору комиссии, но в бухгалтерском учете надо оприходовать товар и продать его комитенту, огромный поток информации, вручную не забить, нужна интеграция с сайтом, может уже есть решение?
19. markbraer 73 06.05.22 16:31 Сейчас в теме
(18) НА каком движке работает сайт?
20. пользователь 24.06.22 11:35
Сообщение было скрыто модератором.
...
21. пользователь 24.06.22 11:59
Сообщение было скрыто модератором.
...
22. пользователь 24.06.22 12:39
Сообщение было скрыто модератором.
...
Оставьте свое сообщение