БРОНИРОВАНИЕ И ПРОДАЖА ПАССАЖИРСКИХ АВИАПЕРЕВОЗОК С ИСПОЛЬЗОВАНИЕМ ГЛОБАЛЬНОЙ РАСПРЕДЕЛИТЕЛЬНОЙ СИСТЕМЫ «СИРЕНА–ТРЭВЕЛ» СИСТЕМА ONLINE-TICKET ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ МОСКВА, 2009 год Содержание 1. Назначение и принцип работы системы Online-ticket 2. Настройка клиентской части системы Online-ticket Приложение №1. Описание XML-формата обменного файла Приложение №2. Описание полей XML документа 1. Назначение и принцип работы системы Online-ticket Система оперативной передачи информации о продажах авиабилетов (далее системы Online-ticket) предназначена для автоматизации процесса обработки финансовой информации и учета операций над билетами (продажа, обмен, возврат и т.д.) в режиме реального времени. Схема работы системы Online-ticket представлена на рис.1. Рассмотрим каким образом информация о продаже билета от кассира поступает заинтересованным сторонам. В качестве заинтересованной стороны может выступать агентство, авиакомпания, пункт продажи или любая их комбинация. Касси р ГР С Сервер Клиент Общая директория (папка) Online-ticket Программа учета финансовой информации Рис.1. Схема работы системы Online-ticket. При выполнении кассиром одной из системных операций с билетом, таких как: печать билета, обмен билета при изменении условий полета, БЛ обмен билета при изменении фамилии, возврат в АРС «Сирена-Трэвел» (далее ГРС), формируется управляющее сообщение для сервера системы Online-ticket, который на основе полученных данных формирует один или несколько XMLфайлов для клиента. Таким образом, информация об операции с билетом «почти мгновенно» оказывается у сервера системы Online-ticket. Следующий этап - это передача сформированного XML-файла заинтересованным сторонам. Файл передается только по запросу приемной стороны, поэтому на данном этапе возможны два случая: 1. Клиент подключен к серверу; 2. Клиент не подключен к серверу. Если клиент подключен к серверу, то он получит сообщение из очереди почти мгновенно. Если клиент не подключен к серверу в данный момент, то сообщение (которое состоит из идентификатора клиента и XML-файла) встанет в очередь на доставку и будет там находится пока клиент не установит соединение с сервером. После авторизации (об этом ниже), клиент делает запрос на наличие сообщений для него, и в случае положительного ответа «забирает» их из очереди сообщений клиентам. Из выше сказанного следует, что если клиенту требуется получать информацию мгновенно, то он должен всегда находится в состоянии соединения с сервером, и при разрыве связи подключаться заново. В программе клиента при разрыве соединения реализовано автоматическое подключение. Клиент получив XML-файл сохраняет его в директории (папке) указанной в файле конфигурации. В данную директорию (папку), также имеет доступ программа обрабатывающая финансовую информацию и ведущая учет проданных билетов. Авторизация клиентов основана на основе сертификатов. Клиенту после обработки заявки высылается два файла: 1. ca.crt - корневой сертификат авторизационного центра; 2. имя клиента.pem - данный файл содержит серификат клиента и его закрытый ключ. Данные файлы после их получения необходимо скопировать в директорию с программой и указать к ним путь в конфигурационном файле. Внимание!!! Файл «имя клиента.pem» не должен быть доступен никому, кроме пользователя работающего с системой. В противном случае ваши данные с сервера может скачать любой обладатель данного файла. 2. Настройка клиентской части системы Online-ticket В настоящее время поддерживаются две разновидности программы клиента: одна для семейства операционных систем (ОС) Windows, другая GNU/Linux. Клиент включает в себя 5 файлов: 1. Исполняемый файл: stat_client.exe - Windows, stat_client - Linux; 2. Файл конфигурации (stat_client.conf - по умолчанию); 3. ca.crt - корневой сертификат (сертификат авторизационного центра); 4. «***».pem - сертификат пользователя; 5. client.out - лог-файл. При запуске исполняемого файла с ключом --help программа выведет справку и прекратит работу. На рис.1. представлен вывод программы для семейства ОС Windows, а на рис.2. для семейства ОС GNU/Linux, рассмотрим назначение аргументов: C:\tick>stat_client --help Current version: 0.9.3 Help option requested Command line parameters: -i [ --install ] -u [ --uninstall ] -s [ --start ] -n [ --name ] arg (=SC_0) --help Install Windows service Uninstall Windows service Work as Windows service (used by Windows SCM. Don't use!!!) Custom Windows service name show this message -f [ --config-file ] arg (=stat_client.conf) configuration file Config file parameters: --connect arg --ca_cert arg --client_cert arg --client_id arg --storage arg --prefix arg (=prefix) --ext arg (=.xml) --logger arg (=dest=cout) --keepalive arg (=10) --reconnect arg (=10) --openssl_conf arg --openssl_conf_sect arg host:port, example 127.0.0.1:7777 path to the authorization center certificate path to the client certificate if no certificates, name is requered storage directory prefix for file name extension for output files: .txt, .xml logger settings Keep Alive Interval Reconnect Interval path to custom openssl.conf name of section in openssl.conf Рис.1. Листинг вывода программы при вызове помощи для ОС Windows. Прокоментируем назначение аргументов. Секция «Command line parameters»: i - инсталлирует программу и позволяет рабтать ей в качестве службы Windows. Перед установкой новой версии обязательно необходимо удалить старую. Программу можно запускать и без установки из консоли Windows или файлового менеджера Norton Commander, Total Commander и т.п.; u - удаляет программу; f - указывает путь к файлу конфигурации; s, n - на данный момент не используются. Секция «Config file parameters»: connect - данный ключ в виде аргумента указывает адрес сервера в формате host:port, причем через пробел можно указывать следующий сервер и так далее; сa_cert - аргументом является полный путь к корневому сертификату (сертификату авторизационного центра); client_cert - аргументом является полный путь к сертификату клиента; storage - полный путь к директории, куда буду записываться XML-файлы; prefix - задает префикс с которого будет начинаться имя созданного файла; ext - задает расширение созданного файла xml или txt; logger - задает полный путь к лог-файлу; (возможны 3 варианта: dest=file - вывод в файл, dest=cout - вывод на консоль, dest=syslog вывод в порт); keepalive - интервал времени в секундах с момента последнего получения данных от сервера, после которого проверяется состояние соединения; reconnect - интервал времени в секундах до следующей попытки подключения, в случае не успешной настоящей попытки. Если указан список серверов, то попытка подключения будет производится к следующему в списке. client_id, openssl_conf, openssl_conf_sect - не используются. [Andrey@Linux ticket]$ ./client.gnu --help Current version: 0.9.3 Help option requested Command line parameters: -d [ --daemon ] -s [ --stop ] -p [ --pidfile ] arg --help -f [ --config-file ] arg (=stat_client.conf) Config file parameters: --connect arg --ca_cert arg --client_cert arg --client_id arg --storage arg --prefix arg (=prefix) --ext arg (=.xml) --logger arg (=dest=cout) --keepalive arg (=10) --reconnect arg (=10) --openssl_conf arg --openssl_conf_sect arg Work as UNIX daemon Stop UNIX daemon Custom Name of PID file show this message configuration file host:port, example 127.0.0.1:7777 path to the authorization center certificate path to the client certificate if no certificates, name is requered storage directory prefix for file name extension for output files: .txt, .xml logger settings Keep Alive Interval Reconnect Interval path to custom openssl.conf name of section in openssl.conf Рис.2. Листинг вывода программы при вызове помощи для ОС GNU/Linux. Секция «Command line parameters»: d - запуск в виде демона; s - останавливает демон; p - имя PID-файла (чтобы запустить программу необходимо создать в каталоге /var/run/ папку с названием программы, в нашем случае stat_client или обязательно указать ключ); f - указывает путь к файлу конфигурации. Секция «Config file parameters» имеет такие же аргументы, как и в случае клиента для ОС Windows. Приложение №1. Описание XML-формата обменного файла <TICKETS> <TICKET> <TYPE DESC=«TICKET, ETICKET, MCO»>varchar2(10)</CURRENCY> <CURRENCY DESC=«код валюты оплаты – USD,RUB...»>varchar2(3)</CURRENCY> <DEALDATE DESC=«дата продажи, возврта, обмена – дата сделки»> varchar2(8) /DEALDATE> <DEALTIME DESC=«время продажи, возврта, обмена – время сделки»>varсhar2(6) </DEALTIME> <OPTYPE DESC=«SALE,REFUND»>varchar2(10)</OPTYPE> <TRANS_TYPE DESC=«SALE,REFUND,CANCEL,EXCHANGE»>varchar2(10)</TRANS_TYPE> <MCO_TYPE DESC=«PTA, PENALTY, RECEIPT»>varchar2(10)</MCO_TYPE> <STAMP DESC=«валидатор»>varchar2(10)</STAMP> <BSONUM DESC=«номер БСО - 421 4200000001»>varchar2(20)</BSONUM> <EX_BSONUM DESC=«номер БСО сданного билета, или выданного взамен»>varchar2(20) </EX_BSONUM> <FIO DESC=«ФИО пассажира»>varchar2(100)</FIO> <PASS DESC=«документ, удостоверяющий личность»>varchar2(100)</PASS> <GENERAL_CARRIER DESC=«ответственный перевозчик – 421»>varchar2(10) </GENERAL_CARRIER> <TCC DESC=«расчетный код для бланков ТКП – 99А, 421…»>varchar2(3)</TCC> <SALEDATE DESC=«дата продажи, для возвращаемых»>varchar2(8)</SALEDATE> <SALETIME DESC=«время продажи, для возвращаемых»>varchar2(6)</SALETIME> <RETTYPE DESC=«вид возврата – добровольный=0, вынужденный=1»>varchar2(1)</RETTYPE> <TOURCODE DESC=«код тура»>varchar2(15)</TOURCODE> <DISP DESC=«код диспетчера»>varchar2(20)</DISP> <TAP DESC=«технологический адрес пульта - PID»>varchar2(100)</TAP > <OCURRENCY DESC=«код валюты отчетности – EUR…»> varchar2(3) </OCURRENCY> <ORATE DESC=«курс перевода из валюты назначения в валюту отчетности – 0.7103»> number </ORATE> <NCURRENCY DESC=«код валюты назначения тарифа – USD, RUB…»> varchar2(3) </NCURRENCY> <NRATE DESC=«курс перевода из валюты назначения в валюту оплаты – 25.9003»> number </NRATE> <PNR>varchar2(8)</PNR> <PNR_LAT>varchar2(8)</PNR_LAT> <CONJ DESC=«номера дополнительных бланков»>varchar2(100)</CONJ> <SALESTAMP DESC=«номер пункта продажи для возвращаемых»> varchar2(8) </SALESTAMP> <SALEAG DESC=«номера дополнительных бланков»>varchar2(6)</SALEAG> <TO_BSONUM DESC=«номер основного билета»>varchar2(20)</TO_BSONUM> <TYP_NUM DESC=«типографский номер бланка»>varchar2(20)</TYP_NUM> <SEGMENTS> <SEGMENT> <SEGNO DESC=«номер участка –от 1 до 4»>number <IS_VOID DESC=«F – flight, V – VOID, S - Surface»>varchar2(1)</IS_VOID> <STPO DESC=«признак стоповера, 0 – остановка разрешена, 1 – запрещена на билете Х»>number</STPO> <CITY1CODE DESC=«код ,как на бланке – SIP»>varchar2(3)</CITY1CODE> <CITY2CODE DESC=«код ,как на бланке – VKO»>varchar2(3)</CITY2CODE> <PORT1CODE DESC=«код ,как на бланке – SIP»>varchar2(3)</PORT1CODE> <PORT2CODE DESC=«код ,как на бланке – VKO»>varchar2(3)</PORT2CODE> <CARRIER DESC=«код перевозчика на участке – S7»>varchar2(2)</CARRIER> <CLASS DESC=«X,N…»>varchar2(2)</CLASS> <REIS>varchar2(5)</REIS> <FLYDATE>varchar2(8)</FLYDATE> <FLYTIME>varchar2(4)</FLYTIME> <BASICFARE DESC=«базовый тариф, FARE BASIS, название атрибута некорректное, но так уж исторически сложилось»>varchar2(13)</BASICFARE> <FARE DESC=«тариф в валюте оплаты 10360.00»>number</FARE> <NFARE DESC=«тариф в валюте назначения 400.00»>number</NFARE> </SEGMENT> </SEGMENTS> <TAXES> <TAX> <SEGNO DESC=«номер участка –от 1 до 4»>number</SEGNO> <CODE DESC=«Код таксы – RU, YQ…»>varchar2(20)</CODE> <AMOUNT DESC=«сумма сбора в валюте оплаты 389.00»>number</AMOUNT> <NAMOUNT DESC=«сумма сбора в валюте назначения 15.00»> number </NAMOUNT> </TAX> </TAXES> <FOPS> <FOP> <TYPE DESC=«форма оплаты - CASH, СС, INV, INVOICE…»>varchar2(50) </TYPE> <ORG DESC=«организация – MO (Министерство обороны)…»>varchar2(100) </ORG> <DOCSER>varchar2(100)</DOCSER> <DOCNUM>varchar2(200)</DOCNUM> <AMOUNT DESC=«сумма итого в валюте оплаты 389.00»>number</AMOUNT> </FOP> </FOPS> </TICKET> </TICKETS> Приложение №2.Описание полей XML документа TICKETS — корневой узел XML документа , состоит из записи об операции TICKET. Поля записи об операции TICKET. Тип документа TICKET, ETICKET, MCO CURRENCY код валюты оплаты - USD,RUB... DEALDATE дата продажи, возврата, обмена – дата сделки время продажи, возврата, обмена – время DEALTIME сделки SALE, REFUND для обычных билетов, ETSALE, ETREFUND для электронных, OPTYPE в случае обмена формируется пара сообщений, первое с данными возвращаемого билета, второе с данными выданного. Общий тип транзакции TRANS_TYPE SALE, REFUND, EXCHANGE Если сообщение является данными MCO то MCO_TYPE указывается тип MCO из ряда : PTA, RECEIPT, PENALTY STAMP валидатор номер БСО - 421 4200000001 BSONUM если ТКП - тип бланков и номер если нет - код авиакомпании, пробел и номер Заполняется при обменах, обеспечивает связь пары сообщений по обмену. EX_BSONUM Содержит номер БСО сданного билета для сообщения SALE, или выданного взамен для REFUND FIO ФИО пассажира PASS документ, удостоверяющий личность GENERAL_CARRIER ответственный перевозчик - 421 TCC расчетный код для бланков ТКП – 99А, 421… SALEDATE Заполняется для возвращаемых. Дата продажи. Заполняется для возвращаемых. Время SALETIME продажи. Вид возврата – добровольный=0, RETTYPE вынужденный=1 TOURCODE Код тура DISP Код диспетчера TAP Технологический адрес пульта - PID OCURRENCY Код валюты отчетности – EUR,USD, RUB… Курс перевода из валюты назначения в валюту ORATE отчетности – 0.7103 NCURRENCY Код валюты назначения тарифа – USD, RUB… TYPE NRATE PNR CONJ SALESTAMP SALEAG TO_BSONUM TYP_NUM SEGMENTS TAXES FOPS Курс перевода из валюты назначения в валюту оплаты – 25.9003 PNR заказа Номера дополнительных бланков Заполняется для возвращаемых. Номер пункта продажи. Заполняется для возвращаемых. Код агентства. Заполняется для МСО. Номер основного билета Типографский номер бланка Одна или несколько записей участка маршрута SEGMENT Ни одной, одна или несколько записей сборов TAX Одна или несколько записей форм оплаты FOP Поля записи участка маршрута SEGMENT SEGNO IS_VOID STPO CITY1CODE CITY2CODE PORT1CODE PORT2CODE CARRIER CLASS REIS FLYDATE FLYTIME BASICFARE FARE NFARE номер участка – от 1 до 4 F – flight, V – VOID, S - Surface Признак стоповера, 0 – остановка разрешена, 1 – запрещена (на билете Х) Код города отправления, как на бланке - LED Код города прибытия, как на бланке - MOW Код порта отправления, как на бланке - PUL Код порта прибытия, как на бланке - VKO Код перевозчика на участке – S7 X,N… Номер рейса Дата отправления . ДДММГГГГ Время отправления . ЧЧММ Базовый тариф, FARE BASIS, название атрибута некорректное, но так уж исторически сложилось Тариф в валюте оплаты 10360.00 Тариф в валюте назначения 400.00 Поля записи сбора TAX SEGNO CODE AMOUNT NAMOUNT Номер участка –от 1 до 4 Код таксы – RU, YQ… Сумма сбора в валюте оплаты 389.00 Сумма сбора в валюте назначения 15.00 Поля записи формы оплаты FOP TYPE ORG DOCSER DOCNUM AMOUNT Форма оплаты - CASH, СС, INV, INVOICE… Организация – MO (Министерство обороны)… Серия документа Номер документа Сумма итого в валюте оплаты 389.00 Представление операций. ПБ печать MCO. Формируется одно сообщение с данными по напечатанному MCO. OPTYPE равен SALE, или ETSALE, для электронных билетов, TRANS_TYPE равен SALE, MCO_TYPE равен PTA. ПБ печать билета. Формируется одно сообщение с данными по напечатанному билету. OPTYPE равен SALE, или ETSALE, для электронных билетов, TRANS_TYPE равен SALE, MCO_TYPE не заполнен. ПO и БЛ обмен билета. Формируется пара сообщений, в обоих TRANS_TYPE равен EXCHANGE: первое с данными возвращаемого билета, OPTYPE равен REFUND, или ETREFUND, для электронных билетов, второе с данными выданного взамен билета OPTYPE равен SALE, или ETSALE, для электронных билетов. В обоих сообщениях пары заполняется поле EX_BSONUM, которое содержит номер БСО сданного билета для сообщения SALE, или выданного взамен для REFUND, таким образом, пара связывается по полям EX_BSONUM и BSONUM. Так же в информации о сданном билете заполняются поля SALEDATE, SALETIME, SALESTAMP, SALEAG, поле MCO_TYPE не заполняется. ОТ отказ от билета. Формируется одно сообщение с данными по возвращаемому билету. TRANS_TYPE равен REFUND, OPTYPE равен REFUND, или ETREFUND, для электронных билетов. Заполняются поля SALEDATE, SALETIME, SALESTAMP, SALEAG, поле MCO_TYPE не заполняется. АП возврат билета Формируется пара сообщений в обоих TRANS_TYPE равен REFUND: первое с данными возвращаемого билета, OPTYPE равен REFUND, или ETREFUND, для электронных билетов, поле MCO_TYPE не заполняется; второе с данными МСО, OPTYPE равен SALE, или ETSALE, для электронных билетов, MCO_TYPE равен RECEIPT. В сообщении с данными МСО заполняется поле TO_BSONUM, которое содержит номер БСО сданного билета, таким образом, МСО связывается по полю TO_BSONUM с BSONUM сданного билета. Так же в информации о сданном билете заполняются поля SALEDATE, SALETIME, SALESTAMP, SALEAG. ПШ печать штрафа Формируется одно сообщение с данными МСО. OPTYPE равен SALE, или ETSALE, для электронных билетов, MCO_TYPE равен PENALTY. Заполняется поле TO_BSONUM, которое содержит номер БСО билета, по которому взимается штраф. Поле TRANS_TYPE содержит EXCHANGE, если штраф соответствует обмену, или REFUND, если штраф соответствует возврату.