Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 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 парсинг сайта загрузка заказов

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

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

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси.

59990 руб.

05.09.2023    6606    83    74    

63

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15663    9    17    

9

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1043    5    0    

5

Обмен данными с сайтом. БП 3.0

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

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31185    108    100    

62

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17430    6    15    

13

Выгрузка для АВИТО

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

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

4200 руб.

07.06.2022    15244    42    56    

37
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. khodyrev 12.01.21 19:51 Сейчас в теме
Доброго времени суток!
Подскажите пожалуйста, как сделать синхронизацию 1С Розница ПРОФ с сайтом через CommerceML?
7. Bukaska 140 22.01.21 16:13 Сейчас в теме
(1) Пишите в техподдержку)))
2. markbraer 32 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 32 27.01.21 12:09 Сейчас в теме
(8) Напишите мне на почту. Мой логин собака Яндекс ру
10. kery76 27.01.21 12:28 Сейчас в теме
11. dimaster 39 07.02.21 20:12 Сейчас в теме
woocommerce с розницей интегрили?
12. markbraer 32 07.02.21 20:42 Сейчас в теме
(11) С Розницей много всего интегрировал. Но на самом деле логика всех интеграций одинаковая. С woocommerce работал тоже
dimaster; +1 Ответить
13. dimaster 39 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 32 04.08.21 12:04 Сейчас в теме
(16) Если есть вопросы - Напишите мне на почту. Мой логин собака Яндекс ру
18. lorra 06.05.22 01:56 Сейчас в теме
Добрый день, у нас магазин на сайте 100 сп, работаем по договору комиссии, но в бухгалтерском учете надо оприходовать товар и продать его комитенту, огромный поток информации, вручную не забить, нужна интеграция с сайтом, может уже есть решение?
19. markbraer 32 06.05.22 16:31 Сейчас в теме
(18) НА каком движке работает сайт?
20. пользователь 24.06.22 11:35
Сообщение было скрыто модератором.
...
21. пользователь 24.06.22 11:59
Сообщение было скрыто модератором.
...
22. пользователь 24.06.22 12:39
Сообщение было скрыто модератором.
...
Оставьте свое сообщение