Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Current »

Технология 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 – тело сообщения.

ОБРАТИТЕ ВНИМАНИЕ

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

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

Агент в свою очередь ставит задачу в Okdesk на вайтлистинг данного адреса. Support Corteos добавит адрес в соответствующий раздел.

Если адрес не завайтлистен в Corteos система будет выдавать ошибку:

image-20240530-131201.png

Статья о том, как протестировать отправку callbackов https://corteos-platform.atlassian.net/wiki/x/7ekM

Отправки Callback

Коллбек из Кортеос отправляется в принимающие систему каждые 5 минут, но не более 10 раз. Прекращается отправка при получении статуса 200

Callback  по  заказам

Callbacks отправляются по заказам для следующих событий (@EventType):

  • заказ создан (@EventType=NewOrder);

  • заказ оформлен (выписан билет или сформирован ваучер) (@EventType=OrderTicketed);

  • заказ отменен (@EventType=OrderCanceled);

  • в заказ добавлен файл (@EventType=OrderPushStaticFile) (доступен при активации мода "Уведомление клиента о добавлении файла к заказу"(ModMailToClientAfterAddedFiles) ) ;

  • у заказа изменился статус (@EventType=OrderStateChanged);
    Актуально для отелей, когда статус "У поставщика" меняется на "Выполнен" или "Отказано в размещении" = "Отменен";

  • у заказа изменилась стоимость (@EventType=OrderPriceChanged);

  • в заказ добавлен файл (@EventType = OrderPushStaticFile).

Когда происходит изменение статуса командировки без изменения при этом статуса заказа, также отправляется callback, поля с информацией о заказе (номер заказа и статус заказа) при этом не заполнены.
Если изменение заказа влечет за собой изменение статуса командировки, то будет отправлен callback о изменении командировки с данными о заказе.

Данное callback-сообщение отправляется по адресу, указанному в настройках, в том случае, если заказ изменил свой статус. 

Формирование командировки происходит следующим образом: при бронировании любой услуги (например, перелета в город Санкт-Петербург), сначала создается командировка в статусе "Черновик" и далее в нее добавляется заказ по этой услуге (тоже в статусе "Черновик").
Бронирования при этом не происходит. По факту создания заказа придет callback.

При добавлении каждого нового заказа в командировку будет формироваться callback.

При вызове бронирования бронируются все услуги в командировке. После проставления бюджетных кодов в командировке, если они применяются, можно перевести командировку в "Чистовик". Далее командировку можно оформить – то есть выписать все автоматизированные услуги. 

На каждую смену статуса заказа формируется callback.

Вы можете использовать SOAP или REST

  • приемник для сообщения. В 1-м случае в теле сообщения необходимо указать всю структуру SOAP-объекта – например, 

EnvelopeBody и так далее. Рекомендуется отправить тестовое сообщение к своему сервису при помощи 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 сервера, сформированный на момент отправки сообщения)

CallbackId - не уникальное значение и иногда (могут) совпадать для разных заказов. Это будет означать что CallbackId были сформированы в одно и тоже мгновение.

  • @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

    • актуальное состояние объекта.

  • No labels