{{indexmenu_n>0003}} ====== Импорт товаров на сайт ====== На данной странице описан протокол (алгоритм) процесса импорта товаров на сайт на платформе komiz.io из системы бухгалтерского учета, например "1C". ===== Основные тезисы ===== * Предполагается, что при каждом последующем обращении системой бухгалтерского учета к сайту, будут выгружаться только те товары, информация которых была изменена после последнего обращения, а также те, что были созданы. Преследуются цели экономии ресурсов. * Для того чтобы повысить безопасность процесса обмена данными используется секретный ключ. Он используется для формирования параметра ''signature'' (см. далее). Значение данного ключа можно узнать зайдя в раздел **Настройки / Другие настройки / Интеграция с системой бухгалтерского учета** в панели управления сайтом. Данный ключ не должен передаваться третьим лицам. * **НУЖНО ПОМНИТЬ!** В настройках панели управления сайта необходимо указать требуемый тип работы с системой бух. учета. Это можно сделать в разделе **Настройки / Другие настройки / Интеграция с системой бухгалтерского учета**. * **НУЖНО ПОМНИТЬ!** Если передается товар без модификаций, то он игнорируется * В текущей версии нет возможности удалять товары и модификации. Это требует обсуждения * Если передать только часть необязательной информации, то только она будет отредактирована. В том числе, если передать не все модификации, то только те, что переданы, будут отредактированы, а информация остальных останется неизменной (и они не будут удалены). * Помните, что в данном механизме действуют [[dev:as:ogranicheniia|ограничения]]. Процесс обмена данными происходит посредством одного обращения системы бухгалтерского учета к сайту, в процессе которого передается файл с данными товаров. Обращения происходят по адресу: ''http://site.domain/accounting-system/offer-import/'', где вместо ''site.domain'' используется домен панели управления синхронизируемого сайта. ===== Отправка файла с данными товаров ===== В процессе данного обращения необходимо передать следующие параметры: * ''signature'' - "подпись", формируемая как хэш секретного ключа, вычисляемый по алгоритму [[https://tools.ietf.org/html/rfc3174|US Secure Hash Algorithm 1 (SHA1)]]. * ''type'' - тип импорта: ''import_as_xml'' либо ''import_as_zip'' (описание см. ниже). * ''file_name'' - имя, которое будет иметь передаваемый XML файл. **ВНИМАНИЕ!** Рекомендуем в имени файла использовать только буквы латинского алфавита (например, "file"). * Также передается сам файл, имя которого указывается как значение параметра ''file_name''. Если тип импорта ''import_as_xml'', то передается XML файл, иначе, если тип импорта ''import_as_zip'', то передается файл ZIP архива, в корне которого, как минимум, лежит XML файл с именем **offers.xml**. Также могут быть размещены файлы изображений товаров, относительные адреса которых указываются в тегах '''' XML файла. * [не обязательно] ''lang_dev_name'' - "имя для разработчика" языка сайта (берется из одноименного поля в настройках языка на сайте). Этот язык будет использован для всех языково-зависимых данных. Если не передается, то будет использован язык по умолчанию. * [не обязательно] ''time_zone'' - временная зона, в которой будут интерпретироваться даты и время (например, ''Europe/Paris''). [[http://php.net/manual/ru/timezones.php|Список поддерживаемых временных зон]]. Если данный параметр не передается, то используется временная зона из настроек сайта. * [не обязательно] ''test'' - если передать данный параметр, а его значение будет равно ''1'' (единица), то система перейдет в режим тестирования. При этом будут производиться все операции кроме внесения изменений в базу данных сайта (в том числе не будет производиться проверок существования товаров и тому подобное). * [не обязательно] ''addOfferAndModKey'' - если передать данный параметр, а его значение будет равно ''0'' (ноль), то система будет игнорировать ситуации, когда возникает необходимость создавать товары или модификации товаров. * [не обязательно] ''editOfferAndModKey'' - если передать данный параметр, а его значение будет равно ''0'' (ноль), то система будет игнорировать ситуации, когда возникает необходимость редактировать товары или модификации товаров. * [не обязательно] ''addSizeAndColorKey'' - если передать данный параметр, а его значение будет равно ''0'' (ноль), то система будет блокировать процесс импорта, если передан не существующий размер или цвет. В противном случае, система будет создавать их. Если не возникло никаких ошибок на стороне сайта и передаваемые параметры корректны, то сайт выводит в поток текст, в первой строке которого содержится ''success'', а во второй - текст дополнительного описания ответа. Для разделения строк используется спецсимвол ''\n''. Если возникла ошибка на стороне сайта либо передаваемые параметры некорректны, то сайт выводит в поток текст, в первой строке которого содержится ''failure'', а во второй - текст описания ошибки. Для разделения строк используется спецсимвол ''\n''. ===== Схема процесса импорта товаров ===== На рис. 1 приведено схематическое изображение протокола обмена данными описанного выше. {{ :dev:as:offer-import-scheme.png?nolink |Схема процесса импорта товаров}}