Технология Callbacks
Механизм Callback используется для передачи сведений о заказе или статичных данных по договору, пассажиру, пользователю и др.
Настройка
Раздел настройки Callback находится в разделе "Настройки - Настройки Callbacks":
Отправка Callback осуществляется по HTTP методами GET или POST. Тело сообщения может иметь любой формат, а передаваемые значения подставляются на место специальных параметров-заменителей:
Параметры:
Использовать Callback – включает механизм Callback;
Адрес Callback – URL получателя сообщений (обязательный параметр);
Callback HTTP Headers – список заголовков HTTP:
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: http://sap.com/xi/WebService/soap1.1
User-Agent: Corteos
Cookie2: $Version=1
Authorization: Basic QsdfgSDGHFasdfSADFxaWM=
Callback method (POST/GET) – HTTP-метод (обязательный параметр). Необходимо ввести “POST” или “GET” без кавычек;
Callback body – тело сообщения.
ОБРАТИТЕ ВНИМАНИЕ
При редактировании коллбэков доступна возможность протестировать отправку, чтобы было удобнее настраивать интеграцию. Однако, из соображений безопасности необходимо сначала добавить принимающий адрес в белый список.
Поэтому перед настройкой и тестированием коллбэков следует обратиться к агенту и указать ссылку, на которую будут отправляться запросы.
Callback по заказам
Callbacks отправляются только по заказам для следующих событий (@EventType):
заказ создан (@EventType=NewOrder);
заказ оформлен (выписан билет или сформирован ваучер) (@EventType=OrderTicketed);
заказ отменен (@EventType=OrderCanceled);
в заказ добавлен файл (@EventType=OrderPushStaticFile) (доступен при активации мода "Уведомление клиента о добавлении файла к заказу"(ModMailToClientAfterAddedFiles) ) ;
у заказа изменился статус (@EventType=OrderStateChanged);
Актуально для отелей, когда статус "У поставщика" меняется на "Выполнен" или "Отказано в размещении" = "Отменен";у заказа изменилась стоимость (@EventType=OrderPriceChanged);
в заказ добавлен файл (@EventType = OrderPushStaticFile).
Данное callback-сообщение отправляется по адресу, указанному в настройках, в том случае, если заказ изменил свой статус.
Формирование командировки происходит следующим образом: при бронировании любой услуги (например, перелета в город Санкт-Петербург), сначала создается командировка в статусе "Черновик" и далее в нее добавляется заказ по этой услуге (тоже в статусе "Черновик").
Бронирования при этом не происходит. По факту создания заказа придет callback.
При добавлении каждого нового заказа в командировку будет формироваться callback.
При вызове бронирования бронируются все услуги в командировке. После проставления бюджетных кодов в командировке, если они применяются, можно перевести командировку в "Чистовик". Далее командировку можно оформить – то есть выписать все автоматизированные услуги.
На каждую смену статуса заказа формируется callback.
Вы можете использовать SOAP или REST
приемник для сообщения. В 1-м случае в теле сообщения необходимо указать всю структуру SOAP-объекта – например,
Envelope, Body и так далее. Рекомендуется отправить тестовое сообщение к своему сервису при помощи SOAP UI и получить полный набор заголовков и структуру сообщения.
Ниже приведен набор переменных, которые можно использовать в данном callback:
@id_Reserve – уникальный системный номер заказа, по которому произошло событие;
@id_ComplexReserve – идентификатор командировки;
@OuterId - Внешний идентификатор командировки;
@EventType – тип события (см. выше доступные типы);
@ReserveState – текущее состояние заказа, значение из набора:
creating – создается;
draft – черновик;
readyforissuance – готов к оформлению;
inprocess – в обработке;
finished – выполнен;
canceled – отменен;
queued – ожидает реакции агента;
onconfirmation – у поставщика;
needswork – ожидает реакции клиента;
error – ошибка обработки заказа.
@ComplexState – текущее состояние командировки, значение из набора:
draft – черновик;
authorizing – идет авторизация;
cleancopy – чистовик;
forexecution – на исполнении;
canceled – отменена;
finished – завершена.
@EventDescription – текстовое описание события;
@CallbackId – timestamp сервера, сформированный на момент отправки сообщения;
@DIC:DictionaryName - Значение кода из указанного справочника.
Callback по статике
MetaDictionaryOnReserveTypeDependency - MetaDictionaryOnReserveTypeDependency
Пример xml-формата для объекта:
<SimpleMetaDictionary> <id_Relation /> <Type>Relate</Type> <id_MetaDictionary>0</id_MetaDictionary> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>0</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>0</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>
MetaDictionaryOnCodeDependency - MetaDictionaryOnCodeDependency
Пример xml-формата для объекта:
<SimpleMetaDictionary> <id_Relation /> <Type /> <id_MetaDictionary>0</id_MetaDictionary> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>0</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>0</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>
MetaCodeOnCodeDependency - MetaCodeOnCodeDependency
Пример xml-формата для объекта:
<SimpleMetaCode> <id_MetaCode>0</id_MetaCode> <id_Relation /> <Type /> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>
MetaCodeOnReserveTypeDependency - MetaCodeOnReserveTypeDependency
Пример xml-формата для объекта:
<SimpleMetaCode> <id_MetaCode>0</id_MetaCode> <id_Relation /> <Type>Relate</Type> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>
MetaCodeOnOrganizationDependency - MetaCodeOnOrganizationDependency
Пример xml-формата для объекта:
<SimpleMetaCode> <id_MetaCode>0</id_MetaCode> <id_Relation /> <Type>Relate</Type> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>
MetaDictionaryForOrganization - MetaDictionaryForOrganization
Пример xml-формата для объекта:
<SimpleMetaDictionary> <id_Relation /> <Type>Relate</Type> <id_MetaDictionary>0</id_MetaDictionary> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>0</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>0</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>
MetaCodeForPerson - Персона - структурные коды
Пример xml-формата для объекта:
<SimpleMetaCode> <id_MetaCode>0</id_MetaCode> <id_Relation /> <Type>Relate</Type> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>
SimpleMetaDictionary - SimpleMetaDictionary
Пример xml-формата для объекта:
<SimpleMetaDictionary> <id_MetaDictionary /> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>1</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>2</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>
SimpleMetaCode - SimpleMetaCode
Пример xml-формата для объекта:
<SimpleMetaCode> <id_MetaCode /> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>
Person - Персона - личные данные (ФИО, дата рождения)
Пример xml-формата для объекта:
<Person> <id_Person /> <LastName /> <FirstName /> <SurName /> <Comment /> <id_Organization /> <LastNameLatin /> <FirstNameLatin /> <SurNameLatin /> <BirthDate /> <id_Country>0</id_Country> <Gender>F</Gender> <id_Group>0</id_Group> <id_ClientCreator /> <IsClient>false</IsClient> <id_Client /> <id_Role /> <alpha2 /> </Person>
MileCard - Персона - мильные и бонусные карты
Пример xml-формата для объекта:
<MileCard> <id_Card /> <id_Person>0</id_Person> <Number /> <AirlineCode /> </MileCard>
Document - Персона - документ
Пример xml-формата для объекта:
<Document> <id_Document /> <id_Person>0</id_Person> <id_Country iata="" /> <id_DocumentType>0</id_DocumentType> <Number /> <DateGiven></DateGiven> <DateValid></DateValid> <DocumentTypeName>Иностранный документ</DocumentTypeName> </Document>
Contact - Персона - контактная информация
Пример xml-формата для объекта:
<Contact> <id_Contact /> <id_Person>0</id_Person> <id_ContactType>0</id_ContactType> <Content /> <ContactTypeName /> </Contact>
Сообщение может содержать в себе следующие переменные:
@Type
название типа объекта;
@Before
предыдущее состояние объекта;
@After
актуальное состояние объекта.