БРОНИРОВАНИЕ И ПРОДАЖА ПАССАЖИРСКИХ АВИАПЕРЕВОЗОК С ИСПОЛЬЗОВАНИЕМ ГЛОБАЛЬНОЙ РАСПРЕДЕЛИТЕЛЬНОЙ СИСТЕМЫ «СИРЕНА–ТРЭВЕЛ» СИСТЕМА ONLINE-TICKET ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ Версия 1.2 МОСКВА, 2010 год Содержание 1. Назначение и принцип работы системы Online-ticket 2. Настройка клиентской части системы Online-ticket 2.1. Запуск в ОС семейства windows 2.2. Запуск в ОС семейства *nix Приложение №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 программа выведет справку и прекратит работу. При подключении клиент посылает заявку в договорной отдел и скачивает с сайта необходимую ему версию ПО. Далее необходимо отредактировать файл конфигурации stat_client.conf, параметры, которые обязательно необходимо заполнить (поправить): connect - строка подключения к серверу, придет в письме; ca_cert - сертификат придет в письме, называется ca.crt; client_cert - сертификат клиента, придет в письме, содержит подстроку agn, ppr или awk, в зависимости от заказанной конфигурации; storage — путь к директории, куда клиент будет сохранять файлы; logger — путь к файлу, куда будет записываться лог. В конфигурационном файле скаченном с сайта, есть примеры заполнения всех параметров. Во всех поддерживаемых ОС клиент можно запустить, как из командной строки (вручную), так и в режиме демона (службы). 2.1. Запуск в ОС семейства windows a. Запуск из командной строки (из «окошка» explorer'а) Заходим в директорию, куда установлен клиент, запускаем stat_client.exe. Если в файле конфигурации все настроено верно, то появится черное окно, выводится в него ничего не будет. Контролировать работу по файлу лога и хранилищу, куда должны складываться файлы. Выключить клиент можно только закрыв окно (крестик в правом верхнем углу). b. Запуск клиента в качестве службы Для того, чтобы запустить клиента в качестве службы необходимо сначала службу инсталлировать. Инсталляция осуществляется командой stat_client.exe -i -n SC_1 -f tch.conf где ключ -i указывает на установку службы; -n имя службы (можно не указывать, по умолчания SC_0); -f путь и имя конфигурационного файла (можно не указывать, по умолчанию берет stat_client.conf из директории, где находится исполняемый файл). Зайти в Пуск->Панель управления->Администрирование->Службы. Запустить службу, и настроить тип запуска. (чтобы загружалась вместе с windows поставить авто) stat_client.exe -u -n SC_1 где ключ -u указывает на удаление службы; -n имя службы, которую надо удалить. c. Запуск двух служб (клиентов) на одной машине Если на одной машине требуется установить две службы, чтобы забирать файлы по двум разным сертификатам (например, двум агентствам), то имеется два пути: - создать две копии (две одинаковых директории) ПО online-ticket, отредактировать конфигурационные файлы и инсталлировать с указанием имени сервиса (см. выше). - создать два конфигурационного файла в одной директории и инсталлировать с указанием имени сервиса и пути к конфигурационному файлу (см. выше). Если рабочая директория программы переименовывается или перемещается, то службы необходимо удалить и поставить заново. 2.2. Запуск в ОС семейства *nix a. Запуск из командной строки Проверяем наличие директории «/var/run/stat_client/» и соответствующих прав доступа, если нет - создаем. Заходим в директорию, куда установлен клиент и запускаем ./stat_client Если в файле конфигурации все настроено верно, то в окне повиснет эта команда и выводится ничего не будет. Контролировать работу по файлу лога и хранилищу, куда должны складываться файлы. b. Запуск клиента в качестве демона Клиент также можно запустить со следующими опциями stat_client -d -p stat_client.pid -f stat_client.conf где ключ -d запускает в режиме демона; -p указывает путь к файлу и его имя. В нем сохранится pid (по умолчанию в /var/run/stat_client/) -f указывает путь и имя файла конфигурации. Для запуска вместе с OC предлагается записать команду в « /etc/rc.local». Остановить клиент можно запустив его с опцией stat_client -s -p stat_client.pid где ключ -s указывает демону остановиться; -p указывает путь к файлу и его имя. В нем хранится pid. c. Запуск двух служб (клиентов) на одной машине Если на одной машине требуется установить две версии клиента, чтобы забирать файлы по двум разным сертификатам (например, двум агентствам), то имеется два пути: - создать две копии (две одинаковых директории) ПО online-ticket, отредактировать конфигурационные файлы и запускать из разных директорий, но обязательно с указанием ключа -p. - создать два конфигурационного файла в одной директории и запускать с двумя разными конфигурационными файлами и фалами *.pid. Приложение №1. Описание XML-формата обменного файла <TICKETS version=”1.2”> <TICKET> <TYPE DESC=«TICKET, ETICKET, MCO, RECEIPT, EMD»>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,ERASE»>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> <OPRATE DESC=«курс перевода из валюты отчетности в валюту платежа»> number </OPRATE> <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> <FCMODE DESC=«режим тарификации AUTO, MANUAL»>varchar2(6)</FCMODE> <SEGMENTS> <SEGMENT> <SEGNO DESC=«номер участка –от 1 до 4»>number</SEGNO> <SEG_BSONUM DESC=«номер бланка на сегменте»>varchar2(20)</SEG_BSONUM> <COUPON_NO DESC=«номер купона»>number</COUPON_NO> <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> <TERM1 DESC=«терминал вылета»>varchar2(6)</TERM1> <TERM2 DESC=«терминал прибытия»>varchar2(6)</TERM2> <CARRIER DESC=«код перевозчика на участке – S7»>varchar2(2)</CARRIER> <CLASS DESC=«X,N…»>varchar2(2)</CLASS> <REIS>varchar2(5)</REIS> <FLYDATE DESC=«дата вылета»>varchar2(8)</FLYDATE> <FLYTIME DESC=«время вылета»>varchar2(4)</FLYTIME> <ARRDATE DESC=«дата прибытия»>varchar2(8)</ARRDATE> <ARRTIME DESC=«время прибытия»>varchar2(4)</ARRTIME> <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> <NRATE DESC=«курс перевода из валюты назначения в валюту оплаты – 25.9003»>number</NRATE> <NCURRENCY DESC=«код валюты назначения тарифа – USD, RUB…»>varchar2(3)</NCURRENCY> <OCURRENCY DESC=«код валюты отчетности – EUR…»>varchar2(3)</OCURRENCY> <OAMOUNT DESC=«сумма сбора в валюте отчетности 510.00»>number</OAMOUNT> <ORATE DESC=«курс перевода из валюты назначения в валюту отчетности – 0.7103»>number</ORATE> <OPRATE DESC=«курс перевода из валюты отчетности в валюту оплаты»>number</OPRATE> </TAX> </TAXES> <FOPS> <FOP> <TYPE DESC=«форма оплаты - CA, CC, IN, ПК >varchar2(50) </TYPE> <ORG DESC=«организация – MO (Министерство обороны)…»>varchar2(100) </ORG> <DOCSER DESC=«серия документа»>varchar2(10)</DOCSER> <DOCNUM DESC=«номер документа»>varchar2(20)</DOCNUM> <DOCINFO DESC=«полная информация о платежном документе»>varchar2(200)</DOCINFO> <AMOUNT DESC=«сумма итого в валюте оплаты 389.00»>number</AMOUNT> </FOP> </FOPS> </TICKET> </TICKETS> Приложение №2.Описание полей XML документа TICKETS — корневой узел XML документа , состоит из записи об операции TICKET. Поля записи об операции TICKET. Тип документа TICKET, ETICKET, MCO, RECEIPT, EMD CURRENCY код валюты оплаты - USD,RUB... DEALDATE дата продажи, возврата, обмена – дата сделки DEALTIME время продажи, возврата, обмена – время сделки SALE, REFUND для обычных билетов, ETSALE, ETREFUND для электронных, OPTYPE в случае обмена формируется пара сообщений, первое с данными возвращаемого билета, второе с данными выданного. Общий тип транзакции TRANS_TYPE SALE, REFUND, CANCEL, EXCHANGE, ERASE Если сообщение является данными 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 Заполняется для возвращаемых. Время продажи. RETTYPE Вид возврата – добровольный=0, вынужденный=1 TOURCODE Код тура DISP Код диспетчера TAP Технологический адрес пульта - PID OCURRENCY Код валюты отчетности – EUR,USD, RUB… Курс перевода из валюты назначения в валюту отчетности – ORATE 0.7103 курс перевода из валюты отчетности в валюту оплаты OPRATE NCURRENCY Код валюты назначения тарифа – USD, RUB… Курс перевода из валюты назначения в валюту оплаты – NRATE 25.9003 PNR PNR заказа TYPE PNR_LAT CONJ SALESTAMP SALEAG TO_BSONUM TYP_NUM SEGMENTS TAXES FOPS FCMODE PNR заказа на латинице Номера дополнительных бланков Заполняется для возвращаемых. Номер пункта продажи. Заполняется для возвращаемых. Код агентства. Заполняется для МСО. Номер основного билета Типографский номер бланка Одна или несколько записей участка маршрута SEGMENT Ни одной, одна или несколько записей сборов TAX Одна или несколько записей форм оплаты FOP Режим тарификации. «AUTO, MANUAL» Поля записи участка маршрута SEGMENT SEGNO SEG_BSONUM COUPON_NO IS_VOID STPO CITY1CODE CITY2CODE PORT1CODE PORT2CODE TERM1 TERM2 CARRIER CLASS REIS FLYDATE FLYTIME ARRDATE ARRTIME 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 NCURRENCY NRATE OAMOUNT OCURRENCY ORATE OPRATE Номер участка –от 1 до 4 Код таксы – RU, YQ… Сумма сбора в валюте оплаты 389.00 Сумма сбора в валюте назначения 15.00 Код валюты назначения тарифа — EUR, USD Курс перевода из валюты назначения в валюту оплаты — 1.33 Сумма сбора в валюте отчетности — 500.00 Код валюты отчетности — EUR, USD Курс перевода из валюты назначения в валюту отчетности — 1.56 курс перевода из валюты отчетности в валюту оплаты Поля записи формы оплаты FOP TYPE ORG DOCSER DOCNUM DOCINFO AMOUNT Форма оплаты - CA, СС, INV, ПК. Организация – MO (Министерство обороны)… Серия документа Номер документа Полная информация о платежном документе Сумма итого в валюте оплаты 389.00 Логика заполнения тега <FOP> : Изначально производится проверка полной информации о документе на соответствие номеру пластиковой карты по алгоритму: Соответствие шаблону: AADDDDDDDDDDDDDDDD A - буква D - цифра AA должно соответствовать 'VI','CA','JC','DC' или 'AX'. Проверяется также принадлежность номера карты к платежной системе. Если проврка успешная, то записываем в тег <DOCNUM>DDDDDDDDDDDDDDDD</DOCNUM> номер карты, без букв. При несовпадении платежной системы , или при несовпадении размеров строки, вся анализируемая строка помещается в тег <DOCINFO>, а <DOCNUM>, <DOCSER>, <ORG> заполняются, если в ГРС удалось определить номер, серию и организацию платежного документа . Представление операций. ПБ печать MCO. Формируется одно сообщение с данными по напечатанному MCO. OPTYPE равен SALE, или ETSALE, для электронных билетов, TRANS_TYPE равен SALE, MCO_TYPE равен PTA. ПБ печать билета. Формируется одно или два сообщения: одно сообщение с данными по напечатанному билету. OPTYPE равен SALE, или ETSALE, для электронных билетов, TRANS_TYPE равен SALE, MCO_TYPE не заполнен. второе с данными квитанции, если квитанция печатается. Тег /TICKETS/TICKET/TYPE равнен RECEIPT. Пока поддерживается только квитанция К95. Данные о сумме сбора в квитанции помещаются в единственный тег /TICKETS/TICKET/SEGMENTS/SEGMENT. П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 равен СANCEL, 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, если штраф соответствует возврату. ЗБ замена бланка Формируется одно сообщение с данными испорченного бланка. OPTYPE равен SALE . Поле TRANS_TYPE содержит ERASE , MCO_TYPE не заполнен. Внимание!!! В следующей версии (1.3) будут упразднены значения ETSALE и ETREFUND для поля /TICKETS/TICKET/OPTYPE, как атавизм оставшийся в формате со времен отсутствия поля /TICKETS/TICKET/TYPE. Продажу и возврат электронных документов предлагается определять по значениям ETICKET, EMD поля /TICKETS/TICKET/TYPE .