{{indexmenu_n>0001}} ====== Экспорт заказов с сайта ====== На данной странице описан протокол (алгоритм) процесса экспорта заказов с сайта на платформе komiz.io в систему бухгалтерского учета, например "1C". ===== Основные тезисы ===== * При каждом последующем обращении системой бухгалтерского учета к сайту, будут выгружаться только те заказы, информация которых была изменена после последнего обращения, а также те, что были созданы. * **ОБРАТИТЕ ВНИМАНИЕ!** Еще одним условием выгрузки заказа является то, что в этот момент у него должен быть установлен один из статусов, отмеченных флагом **Отправлять информацию о заказе в систему бухгалтерского учета при установке этого статуса**. Данный флаг устанавливается в разделе **Заказы / Статусы заказа**. * Для того чтобы повысить безопасность процесса обмена данными используется секретный ключ. Он используется для формирования параметра ''signature'' (см. далее). Значение данного ключа можно узнать зайдя в раздел **Настройки / Другие настройки / Интеграция с системой бухгалтерского учета** в панели управления сайтом. Данный ключ не должен передаваться третьим лицам. * Помните, что в данном механизме действуют [[dev:as:ogranicheniia|ограничения]]. Процесс обмена данными происходит посредством двух обращений системы бухгалтерского учета к сайту: - Получение XML файла с данными заказов; - Отправка подтверждения об обработке полученных заказов. Обращения происходят по адресу: ''http://site.domain/accounting-system/order-export/'', где вместо ''site.domain'' используется домен панели управления синхронизируемого сайта. ===== Получение XML файла с данными заказов ===== В процессе первого обращения необходимо передать следующие параметры: * ''signature'' - "подпись", формируемая как хэш секретного ключа, вычисляемый по алгоритму [[https://tools.ietf.org/html/rfc3174|US Secure Hash Algorithm 1 (SHA1)]]. * ''type'' - тип обращения. Для первого равно ''export''. * [не обязательно] ''time_zone'' - временная зона, в которой будут интерпретироваться даты и время (например, ''Europe/Paris''). [[http://php.net/manual/ru/timezones.php|Список поддерживаемых временных зон]]. Если данный параметр не передается, то используется временная зона из настроек сайта. * [не обязательно] ''additionalFieldArray'' - массив дополнительных полей, которые необходимо экспортировать. Значением каждого элемента массива является значение поля "Имя в интерфейсе" для определенного дополнительного поля. Если данный параметр не передать, то дополнительные поля не будут экспортированы. Если не возникло никаких ошибок на стороне сайта и передаваемые параметры корректны, то сайт выводит в поток содержимое XML файла со списком экспортируемых заказов. Если возникла ошибка на стороне сайта либо передаваемые параметры некорректны, то сайт выводит в поток текст, в первой строке которого содержится ''failure'', а во второй - текст описания ошибки. Для разделения строк используется спецсимвол ''\n''. ===== Отправка подтверждения об обработке полученных заказов ===== После того, как системой бухгалтерского учета был получен XML файл со списком заказов, а также после того как они были обработаны, необходимо выполнить второй запрос к сайту. В процессе данного обращения необходимо передать следующие параметры: * ''signature'' - "подпись", формируемая как хэш секретного ключа, вычисляемый по алгоритму [[https://tools.ietf.org/html/rfc3174|US Secure Hash Algorithm 1 (SHA1)]]. * ''type'' - тип обращения. Для второго равно ''export_confirm''. * ''session_id'' - идентификатор сессии обмена данными с системой бухгалтерского учета. Значение данного параметра передается на первом этапе в XML файле в атрибуте ''sessionId'' тега ''orders''. Это же значение необходимо передать на втором этапе. * ''status'' - статус операции. Если заказы успешно обработаны, то необходимо передать значение ''success''. В противном случае значением данного параметра может быть текст описания произошедшей ошибки. * [не обязательно] ''orderCodeArray'' - массив кодов заказов. Если передать данный параметр, то только те заказы, чьи коды будут содержаться в данном массиве, будут отмечены сайтом как успешно переданные системе бухгалтерского учета. **ВНИМАНИЕ!** Данные действия производятся только в случае, если значение передаваемого параметра ''status'' = ''success''. Если не возникло никаких ошибок на стороне сайта и передаваемые параметры корректны, то, в зависимости от значения параметра ''status'' происходит следующее. * Если ''status'' равен ''success'', то сайт помечает переданные на первом этапе заказы, как успешно синхронизированные и при следующем обращении не будет их передавать. * Если ''status'' не равен ''success'', то сайт оповещает разработчиков платформы о данной ошибке. В любом случае (т.е. не зависимо от значения параметра ''status'') сайт выводит в поток текст, в первой строке которого содержится ''success'', а во второй - текст дополнительного описания ответа. Для разделения строк используется спецсимвол ''\n''. Если возникла ошибка на стороне сайта либо передаваемые параметры некорректны, то сайт выводит в поток текст, в первой строке которого содержится ''failure'', а во второй - текст описания ошибки. Для разделения строк используется спецсимвол ''\n''. ===== Схема процесса экспорта заказов ===== На рис. 1 приведено схематическое изображение протокола обмена данными описанного выше. {{ :dev:as:order-export-scheme.png?nolink |Схема процесса экспорта заказов}}