Платежные web-сервисы: Сервис интеграции с платежной системой (оплата через терминалы) — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Создание виртуального каталога)
 
(не показана 71 промежуточная версия 6 участников)
Строка 16: Строка 16:
 
==Введение==
 
==Введение==
 
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора.
 
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора.
Модуль совместим со следующими платежными системами:  
+
Модуль совместим со следующими платежными системами (платежные шлюзы):  
* '''TourPay'''<br />
+
* Appex
* '''PayTravel'''<br />
+
* Assist
 
+
* Chronopay
===Ссылка на тестовый сервис===
+
* Contact
С работой тестового [http://demo.megatec.ru/Finance/FinanceService.asmx сервиса для интеграции с платежной системой] вы можете ознакомиться на нашем демо-сервере.
+
* PayTravel
 +
* Qiwi
 +
* TourPay
  
 
==Установка==
 
==Установка==
Для установки '''Сервиса для интеграции с платежной системой''' нужно создать директорию '''Finance''' в каталоге <code>c:/inetpub/wwwroot/</code> (корневом каталоге '''IIS''') и выложить туда распакованные файлы из архива <code>mw-finance-2007.2.XX.XXXX.zip</code>
+
Для установки '''Сервис интеграции с платежной системой''' нужно создать директорию '''Finance''' в каталоге <code>c:/inetpub/wwwroot/</code> (корневом каталоге '''IIS''') и выложить туда распакованные файлы из архива <code>mw-finance-2007.2.XX.XXXX.zip</code>
 
В управлении '''IIS''' необходимо создать виртуальный каталог для папки '''Finance'''.
 
В управлении '''IIS''' необходимо создать виртуальный каталог для папки '''Finance'''.
 +
 +
[[Файл: Ls0260.png|left|Полезная информация]] <BR>
 +
Лицензия проверяется в зависимости от того, какая платежная система
 +
задана в настройке <add key="PaymentSystem" value=""/><br /><br />
  
 
===Создание виртуального каталога===
 
===Создание виртуального каталога===
Строка 48: Строка 54:
  
 
==Настройка==
 
==Настройка==
После установки ''сервис для интеграции'' (например «Сервис для интеграции с платежной системой Название_Системы») доступен по адресу<br />
+
После установки ''сервис интеграции'' (например «Сервис интеграции с платежной системой Название_Системы») доступен по адресу<br />
 
<code><nowiki>http://ip-адрес сервера Мастер-Веб/Finance/FinanceService.asmx</nowiki></code>.
 
<code><nowiki>http://ip-адрес сервера Мастер-Веб/Finance/FinanceService.asmx</nowiki></code>.
  
Строка 76: Строка 82:
  
 
| 2
 
| 2
| Определяет '''тип платежной системы''' при сохранении платежей.
+
|Определяет '''тип платежной системы''' при сохранении платежей.
 
Информация о типе платежной системы записывается в [[Мастер-Тур:Работа с группой путевок#История путевки|историю по путевке]].<br />
 
Информация о типе платежной системы записывается в [[Мастер-Тур:Работа с группой путевок#История путевки|историю по путевке]].<br />
 
Для системы '''«Мастер-Финанс»''' информация записывается в столбец '''DP_PAYMENTSSYS''' таблицы <code>'''[FIN_DOGOVOR_PAID]'''</code>.<br />
 
Для системы '''«Мастер-Финанс»''' информация записывается в столбец '''DP_PAYMENTSSYS''' таблицы <code>'''[FIN_DOGOVOR_PAID]'''</code>.<br />
Обязательная настройка.
+
Обязательная настройка.<br />
| '''Название платежной системы''' - одно из четырех значений:
+
На выбранную платежную систему должна быть выписана лицензия.
* '''Leader''';
+
| Название платежной системы:
* '''Qiwi''';
+
* Appex
* '''TourPay''';
+
* Assist
* '''Paytravel'''.
+
* Chronopay
 +
* Contact
 +
* PayTravel
 +
* Qiwi
 +
* TourPay
 
<span style="color:red">Внимание!</span> По умолчанию данная настройка имеет значение '''none'''. Но с этим значением сервис работать не может. Для работы сервиса необходимо указать в ней одно из допустимых значений.
 
<span style="color:red">Внимание!</span> По умолчанию данная настройка имеет значение '''none'''. Но с этим значением сервис работать не может. Для работы сервиса необходимо указать в ней одно из допустимых значений.
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
Строка 96: Строка 106:
 
| '''Время действия (в минутах).'''
 
| '''Время действия (в минутах).'''
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
<add key="TokenExpireTime" value="10</span>" />
+
<add key="TokenExpireTime" value="10" />
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Строка 103: Строка 113:
 
| 4
 
| 4
 
| Включение режима '''записи нового платежа''' в систему '''«Мастер-Финанс»'''. При этом в ПК «Мастер-Тур» платежи '''не сохраняются'''.
 
| Включение режима '''записи нового платежа''' в систему '''«Мастер-Финанс»'''. При этом в ПК «Мастер-Тур» платежи '''не сохраняются'''.
| - '''true''' - включена запись платежей в «Мастер-Финанс»;
+
|  
- '''false''' или '''отсутствие настройки''' - выключает запись платежей в «Мастер-Финанс».
+
* '''true''' - включена запись платежей в «Мастер-Финанс»;
 +
* '''false''' или '''отсутствие настройки''' - выключает запись платежей в «Мастер-Финанс».
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="AddPaymentsToMasterFinance" value="true"/>
 
<add key="AddPaymentsToMasterFinance" value="true"/>
Строка 114: Строка 125:
 
| Настройка, определяющая '''дату''', на которую должен '''подбираться курс валют''' для пересчета '''суммы к оплате'''.
 
| Настройка, определяющая '''дату''', на которую должен '''подбираться курс валют''' для пересчета '''суммы к оплате'''.
 
|  
 
|  
* '''orderdate''' — дата ''оформления заявки'';
+
<font style="color:red">''Обработка настройки, начиная с релиза 9220SP31.''</font><br />
* '''today''' курс на ''текущую дату'';
+
* '''FixationDate''' или '''отсутствие настройки''' - курс на дату последней фиксации путевки на момент совершения платежа, а если путевка не зафиксирована, то на дату совершения платежа;
* '''confirmdate''' — курс на ''дату подтверждения заявки'' (если ''подтверждения'' путевки еще ''не было'', либо курс на ''дату подтверждения не заведен'', то будет ''отображаться'' курс на ''текущую дату'');
+
* '''ConfirmDate''' — курс на дату последнего ''подтверждения заявки'' (если '''подтверждения''' путевки еще '''не было''', либо '''курс''' на дату подтверждения '''не заведен''', то будет отображаться курс на '''момент совершения платежа''');
* '''fixationdate''' — курс на ''дату фиксации''.
+
* '''OrderDate''' — дата оформления заявки;
 +
* '''PaymentDate''' - курс на дату совершения платежа.
 +
 
 +
<font style="color:red">''Обработка настройки до релиза 9220SP31.''</font><br />
 +
 
 +
* '''OrderDate''' — дата оформления заявки;  
 +
* '''Today''' — курс на текущую дату;
 +
* '''ConfirmDate''' — курс на дату подтверждения заявки (если подтверждения путевки еще не было, либо курс на дату подтверждения не заведен, то будет отображаться курс на текущую дату).  
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="courseExchangeDate" value="orderdate"/>
 
<add key="courseExchangeDate" value="orderdate"/>
Строка 125: Строка 143:
  
 
| 6
 
| 6
| Настройка, позволяющая '''включить механизм''' [[#Логирование|логирования]].
+
| Настройка, позволяющая '''включить механизм''' [[#Логирование|логирования]]. <br />
| - '''true''' — система логирования ''включена'';
+
(Начиная с версии 2009.2.20.31, данная настройка не используется).
- '''false''' или '''отсутствие настройки''' — логирование ''выключено''.
+
|  
 +
* '''true''' — система логирования ''включена'';
 +
* '''false''' или '''отсутствие настройки''' — логирование ''выключено''.
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="UseLog" value="true"/>
 
<add key="UseLog" value="true"/>
Строка 156: Строка 176:
 
| 9
 
| 9
 
| Настройка, указывающая что в качестве '''лица''', от которого '''принята оплата''' надо всегда использовать '''представителя агентства''' ('''DUP_USER''').
 
| Настройка, указывающая что в качестве '''лица''', от которого '''принята оплата''' надо всегда использовать '''представителя агентства''' ('''DUP_USER''').
| - '''true''' - в качестве лица, от которого принята оплата всегда указывается ФИО представителя агентства (поле '''US_FULLNAME''' из таблицы <code>'''[DUP_USER]'''</code>.
+
|  
- '''false''' или '''отсутствии настройки''' - работает стандартный механизм выбора лица, от которого принят платеж.
+
* '''true''' - в качестве лица, от которого принята оплата всегда указывается ФИО представителя агентства (поле '''US_FULLNAME''' из таблицы <code>'''[DUP_USER]'''</code>.
 +
* '''false''' или '''отсутствии настройки''' - работает стандартный механизм выбора лица, от которого принят платеж.
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="useDupUserAsPayer" value="true"/>
 
<add key="useDupUserAsPayer" value="true"/>
Строка 165: Строка 186:
  
 
| 10
 
| 10
| Настройка, определяющая какую '''информацию''' быдет выводить метод '''GetPaymentInformation''' - '''полную''' или '''сокращенную'''.
+
| Настройка, определяющая какую '''информацию''' будет выводить метод '''GetPaymentInformation''' - '''полную''' или '''сокращенную'''.
| - '''true''' - возвращается '''полная информация''' по платежу.
+
|  
- '''false''' или '''отсутствии настройки''' - возвращается только информация о том, '''есть ли такой платеж''' по путевке.
+
* '''true''' - возвращается '''полная информация''' по платежу.
 +
* '''false''' или '''отсутствии настройки''' - возвращается только информация о том, '''есть ли такой платеж''' по путевке.
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="paymentInformationReturnEnabled" value="true"/>
 
<add key="paymentInformationReturnEnabled" value="true"/>
Строка 180: Строка 202:
 
|<syntaxhighlight lang="xml" enclose="div">
 
|<syntaxhighlight lang="xml" enclose="div">
 
<add key="allowedPartnerKeys" value="0,10762"/>
 
<add key="allowedPartnerKeys" value="0,10762"/>
 +
</syntaxhighlight>
 +
 +
|- style="vertical-align:text-top"
 +
 +
| 12
 +
| Настройка адреса [[Мастер-Тур:Установка#Установка платежного сервиса|платежного сервиса]].<BR>
 +
Обязательная настройка. Обрабатывается только в релизе 2009.2.21.
 +
| По умолчанию указан локальный компьютер и стандартный порт. Если служба установлена на другом компьютере, то необходимо указать его ip-адрес и порт. Если на компьютере, где устанавливается сервис, стандартный порт 8080 занят, то необходимо указать другой свободный порт.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="PaymentSignatureServiceAddress" value="http://localhost:8080/PaymentSignatureServiceHost/FinanceService/"/>
 +
</syntaxhighlight>
 +
 +
|- style="vertical-align:text-top"
 +
 +
| 13
 +
| Определяет, будет ли метод '''GetReservationInfo''' выводить информацию по путевке.
 +
|
 +
* '''true''' - метод GetReservationInfo выводит данные по путевке
 +
* '''false''' или '''отсутствие настройки''' метод GetReservationInfo не выводит данные по путевке
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="allowToGetReservationInfo" value="true"/>
 +
</syntaxhighlight>
 +
 +
|- style="vertical-align:text-top"
 +
| 14
 +
| Определяет, будет ли метод '''GetUserReservations''' выводить информацию по не аннулированным путёвкам.
 +
|
 +
* '''true''' - метод GetUserReservations выводит данные по путевкам
 +
* '''false''' или '''отсутствие настройки''' метод GetUserReservations не выводит данные по путевкам
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="allowToGetUserReservations" value="true"/>
 +
</syntaxhighlight>
 +
 +
|- style="vertical-align:text-top"
 +
| 15
 +
| Имя текущей установленной службы.
 +
<span style="color:red">Внимание!</span> Настройка обрабатывается только в версии Мастер-Тур 15.
 +
| Наименование службы, к которой может обращаться текущий клиент (по значению настройки [[Мастер-Тур(15):Установка#Установка службы MasterTourService|''acceptableServices'']] в ''MasterTourService''). По умолчанию настройка не заполнена. Значение настройки должно быть явно задано.<br />
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="acceptableServices" value=""/>
 +
</syntaxhighlight>
 +
 +
|- style="vertical-align:text-top"
 +
| 16
 +
| Настройка, определяющая '''статусы путевок''', при которых доступна возможность оплаты через сервис платежей.
 +
Обязательная настройка
 +
| Ключи статусов из таблицы '''[Order_Status]''', при которых доступна оплата через сервис платежей.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="paymentsStatuses" value="7,37" />
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|}
 
|}
Строка 189: Строка 260:
 
Для детализации ошибок, которые могут возникнуть при работе web-сервиса (например, когда методы web-сервиса возвращают значение '''ErrorCode''' ''2'') можно включить логирование.
 
Для детализации ошибок, которые могут возникнуть при работе web-сервиса (например, когда методы web-сервиса возвращают значение '''ErrorCode''' ''2'') можно включить логирование.
  
В секции <code><configSections></code> надо добавить строку:
+
''Начиная с релиза 2009.2.20.31'' изменились настройки логирования
 +
 
 +
В секции <code><configSections></code> надо добавить строку (если она отсутствует):
 +
 
 +
<syntaxhighlight lang="xml">
 +
<section name="loggerSection" type="Megatec.ConfigLogic.Loggers.LoggersSection, Megatec.ConfigLogic" />
 +
</syntaxhighlight>
 +
 
 +
Далее (после секции <code><configSections></code>) прописывается секция <code><loggerSection></code>:
  
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="100%"><TR><TD>
 +
<syntaxhighlight lang="xml">
 +
<loggerSection>
 +
  <Loggers path="Logs\">
 +
    <Logger level="ALL" name="ErrorLog"/>
 +
    <Logger level="ALL" name="MasterWebLog"/>
 +
  </Loggers>
 +
</loggerSection>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
 +
* Путь к папке лог-файлов прописывается в секции <font style="font-family:courier new">Loggers path</font>.
 +
* Включение логирования осуществляется в секции <font style="font-family:courier new">Logger level</font>. Возможные значения: <font style="font-family:courier new">ALL</font> или <font style="font-family:courier new">OFF</font>.
 +
 +
<br /><div class="toccolours mw-collapsible mw-collapsed" style="width:650px">
 +
Предыдущий вариант настройки логирования (''до релиза 2009.2.20.31'')
 +
<div class="mw-collapsible-content">
 +
 +
В секции <code><configSections></code> надо добавить строку (если она отсутствует):
 +
 +
<syntaxhighlight lang="xml">
 
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 +
</syntaxhighlight>
  
 
Далее (после секции <code><configSections></code>) прописывается секция <code><log4net></code>:
 
Далее (после секции <code><configSections></code>) прописывается секция <code><log4net></code>:
  
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="100%"><TR><TD>
 +
<syntaxhighlight lang="xml">
 
  <log4net>
 
  <log4net>
 
     <appender name="ExceptionLogger" type="log4net.Appender.FileAppender">
 
     <appender name="ExceptionLogger" type="log4net.Appender.FileAppender">
       <param name="File" value="<span style="color:red">C:\\MasterTourLogs\\ExceptionLogger.txt</span>" />
+
       <param name="File" value="Logs\\ExceptionLogger.txt" />
 
       <param name="AppendToFile" value="true" />
 
       <param name="AppendToFile" value="true" />
 
       <layout type="log4net.Layout.PatternLayout">
 
       <layout type="log4net.Layout.PatternLayout">
Строка 207: Строка 310:
 
       <appender-ref ref="ExceptionLogger" />
 
       <appender-ref ref="ExceptionLogger" />
 
     </logger>
 
     </logger>
 +
 +
    <appender name="ServiceLogger" type="log4net.Appender.FileAppender">
 +
      <param name="File" value="Logs\\Megatec.Web.Services.Finance.FinanceService.txt" />
 +
      <param name="AppendToFile" value="true" />
 +
      <layout type="log4net.Layout.PatternLayout">
 +
        <param name="ConversionPattern" value="%date [%thread] %-5level [%ndc] - %message %newline %exception" />
 +
      </layout>
 +
    </appender>
 +
    <logger name="ServiceLogger">
 +
      <param name="Threshold" value="ALL" />
 +
      <appender-ref ref="ServiceLogger" />
 +
    </logger>
 +
 
   </log4net>
 
   </log4net>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
  
<span style="color:red">Красным цветом</span> выделен путь к файлу лога. Здесь может быть указан произвольный путь.
+
<ul>
 +
<li>Путь к лог-файлу прописывается в секции <font style="font-family:courier new">File</font>.
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="100%"><TR><TD>
 +
<syntaxhighlight lang="xml">
 +
<param name="File" value="Logs\\ExceptionLogger.txt" />
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</li>
 +
<li>Включение логирования осуществляется в секции <font style="font-family:courier new">Threshold</font>.<br />
 +
Возможные значения: <font style="font-family:courier new">ALL</font> или <font style="font-family:courier new">OFF</font>.
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="100%"><TR><TD>
 +
<syntaxhighlight lang="xml">
 +
<param name="Threshold" value="ALL" />
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</li>
 +
<li>С помощью настройки <font style="font-family:courier new">maximumFileSize</font> можно ограничить размер лог-файла. В таком случае будут автоматически удаляться старые записи.
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="100%"><TR><TD>
 +
<syntaxhighlight lang="xml">
 +
<maximumFileSize value="10240KB" />
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</li>
 +
</ul>
 +
</div></div><br />
  
 
==Работа в системе==
 
==Работа в системе==
Строка 268: Строка 410:
 
* '''1''' – заявка не найдена в БД;
 
* '''1''' – заявка не найдена в БД;
 
* '''2''' – внутренняя ошибка;
 
* '''2''' – внутренняя ошибка;
* '''3''' - заявка была аннулирована;
+
* '''3''' заявка была аннулирована;
* '''4''' - путевка уже оплачена;
+
* '''4''' путевка уже оплачена;
* '''6''' - некорректный или устаревший идентификатор аутентификации(token).
+
* '''6''' некорректный или устаревший идентификатор аутентификации (token);
* '''8''' - запрещено создавать платеж по путевке, так есть платежи с типами, не указанными в настройке '''allowedPayments'''.
+
* '''8''' запрещено создавать платеж по путевке, так как есть платежи с типами, не указанными в настройке '''allowedPayments''';
* '''9''' - запрещено создавать платеж по путевке, так как покупатель путевки не указан в настройке '''allowedPartnerKeys'''.
+
* '''9''' запрещено создавать платеж по путевке, так как покупатель путевки не указан в настройке '''allowedPartnerKeys''';
 +
* '''10''' – путевка имеет недопустимый статус, т.е. статус путевки (поле DG_SOR_CODE) не содержится в перечислении допустимых статусов настройки конфига PaymentsStatuses;
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
 
Описание класса:
 
Описание класса:
  
Строка 291: Строка 436:
 
         public DateTime BeginTourDate
 
         public DateTime BeginTourDate
 
         public DateTime EndTourDate
 
         public DateTime EndTourDate
 +
        public String MainTouristFIO
 +
        /// <summary>
 +
        /// Название главной услуги тура
 +
        /// </summary>
 +
        public String BaseService
 +
 +
        // Количество туристов по путевке
 +
        public Nullable<Int32> ReservationTouristsCount
 +
 +
        /// <summary>
 +
        /// Тип путевки, определяемый по входящим в нее услугам
 +
        /// </summary>
 +
        public Nullable<ReservationType> ReservationType
 +
    }
 +
 +
public enum ReservationType
 +
    {
 +
        undefined,
 +
        /// <summary>
 +
        /// Турпакет (какой-то набор услуг)
 +
        /// </summary>
 +
        tour,
 +
        /// <summary>
 +
        /// Проживание
 +
        /// </summary>
 +
        residence,
 +
        transfer,
 +
        avia,
 +
        cruise,
 +
        insurance,
 +
        visa,
 +
        other
 
     }
 
     }
 +
   
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|}
 
|}
Строка 302: Строка 480:
 
* '''FilialKey''' - ключ филиала, который создал заявку;
 
* '''FilialKey''' - ключ филиала, который создал заявку;
 
* '''BeginTourDate''' - дата начала тура;
 
* '''BeginTourDate''' - дата начала тура;
* '''EndTourDate''' - дата окончания тура.
+
* '''EndTourDate''' - дата окончания тура;
* '''MainTouristFIO''' - фамилия и инициалы главного туриста.
+
* '''MainTouristFIO''' - фамилия и инициалы главного туриста;
 +
Значения, возвращаемые только при включенной настройке '''allowToGetReservationInfo''':
 +
* '''BaseService''' - название главной услуги;
 +
* '''ReservationTouristsCount''' - количество туристов по путевке;
 +
* '''ReservationType''' - значение типа предоставляемой услуги, возможные значения:
 +
** '''tour''' - турпакет;
 +
** '''residence''' - проживание;
 +
** '''transfer''' - наземная перевозка;
 +
** '''avia''' - авиа перелёт;
 +
** '''cruise''' - круиз;
 +
** '''insurance''' - страхование;
 +
** '''visa''' - виза;
 +
** '''other''' - прочие услуги.
  
 
===Проведение платежа по заявке (метод «CreatePayment»)===
 
===Проведение платежа по заявке (метод «CreatePayment»)===
Строка 316: Строка 506:
 
====Описание принимаемых методом параметров====
 
====Описание принимаемых методом параметров====
  
* '''userToken''' - идентификатор аутентифкации;
+
* '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
 
* '''date''' – дата проведения платежа;
 
* '''date''' – дата проведения платежа;
 
* '''sum''' – сумма платежа;
 
* '''sum''' – сумма платежа;
Строка 329: Строка 519:
 
* '''1''' – заявка не найдена в БД;
 
* '''1''' – заявка не найдена в БД;
 
* '''2''' – внутренняя ошибка при создании платежа;
 
* '''2''' – внутренняя ошибка при создании платежа;
* '''3''' - заявка была аннулирована;
+
* '''3''' заявка была аннулирована;
* '''4''' - путевка уже оплачена;
+
* '''4''' путевка уже оплачена;
* '''6''' - некорректный или устаревший идентификатор аутентификации(token).
+
* '''6''' некорректный или устаревший идентификатор аутентификации(token);
* '''7''' - платеж с таким идентификатором уже существует.
+
* '''7''' платеж с таким идентификатором уже существует;
 +
* '''8''' – по путевке есть платежи запрещенных типов;
 +
* '''9''' – проводка платежа по данному партнеру не разрешена;
 +
* '''10''' – ошибка подписи платежа или путевки;
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
  
 
При этом в БД создается платеж по выбранной путевке.
 
При этом в БД создается платеж по выбранной путевке.
Строка 347: Строка 542:
  
 
====Описание принимаемых методом параметров====
 
====Описание принимаемых методом параметров====
* '''userToken''' - идентификатор аутентифкации;
+
* '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
 
* '''reservationCode''' – номер путевки;
 
* '''reservationCode''' – номер путевки;
 
* '''externalPaymentId''' – идентификатор платежа во внешней системе.
 
* '''externalPaymentId''' – идентификатор платежа во внешней системе.
Строка 356: Строка 551:
 
* '''0''' – результат корректный, в полях возвращены корректные значения;  
 
* '''0''' – результат корректный, в полях возвращены корректные значения;  
 
* '''2''' – внутренняя ошибка;
 
* '''2''' – внутренняя ошибка;
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
  
 
Описание классов:
 
Описание классов:
Строка 439: Строка 636:
 
** '''CreateDate''' - дата и время создания платежа.
 
** '''CreateDate''' - дата и время создания платежа.
 
* '''ErrorCode''' - код результата.
 
* '''ErrorCode''' - код результата.
 +
===Получение информации по заявке (метод «GetReservationInfo»)===
 +
====Описание метода====
 +
Данный метод предназначен для выгрузки данных по путевке из базы данных ПК «Мастер-Тур» для проведения платежа.
 +
====Сигнатура метода====
 +
<code>public ReservationInformationResult GetReservationInfo(string userToken, string reservationCode)</code>
 +
====Описание принимаемых методом параметров====
 +
*userToken - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
 +
*reservationCode - строковая переменная, представляющая собой код проверяемой путевки.
 +
 +
====Возвращаемые значения====
 +
Метод возвращает результат своей работы в виде класса  ReservationInformationResult. Корректность результата проверяется значением поля ResultCode данного класса:
 +
* '''0''' – результат корректный, в полях возвращены корректные значения;
 +
* '''2''' – внутренняя ошибка;
 +
* '''5''' - некорректный логин или пароль;
 +
* '''6''' - некорректный или устаревший идентификатор аутентификации(token);
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
 +
Ниже приводится описание класса.
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
 +
|- style="background-color:#F2F2F2"
 +
|- style="vertical-align:text-top"
 +
 +
| <syntaxhighlight lang="cpp">
 +
public class ReservationInformationResult
 +
    {
 +
        public double Price { get; set; }
 +
        public double PriceNational { get; set; }
 +
        public double DiscountSum { get; set; }
 +
        public double DiscountSumNational { get; set; }
 +
        public double PriceToPay { get; set; }
 +
        public double PriceToPayNational { get; set; }
 +
        public string IsoRateCode { get; set; }
 +
        public string IsoRateCodeNational { get; set; }
 +
        public int ResultCode { get; set; }
 +
        public int? FilialKey { get; set; }
 +
        public DateTime TourDate { get; set; }
 +
        public DateTime TourDateEnd { get; set; }
 +
        public string CountryName { get; set; }
 +
        public string TourName { get; set; }
 +
        public String DepartureCity { get; set; }
 +
        public ReservationPaymentStatus PaymentStatus { get; set; }
 +
        public DateTime UTCDateOfCreation { get; set; }
 +
        public ReservationStatus ReservationStatus { get; set; }
 +
        public List<TouristFinanceInfo> ReservationTourists { get; set; }
 +
        public List<string> ReservationServices { get; set; }
 +
        public Decimal Debt { get; set; }
 +
        public Decimal DebtNational { get; set; }
 +
        public Double DeptNationalRate { get; set; }
 +
    }
 +
   
 +
public enum ReservationPaymentStatus
 +
    {
 +
        WaitingFirstPayment,
 +
        PartiallyPayed,
 +
        FullPaied,
 +
        CouldNotBePayed
 +
    }
 +
 +
public enum ReservationStatus
 +
    {
 +
        WaitConfirmation,
 +
        Confirmed,
 +
        Annulated
 +
    }
 +
   
 +
</syntaxhighlight>
 +
|}
 +
<br />
 +
* '''Price''' - полная стоимость тура (в валюте тура);
 +
* '''PriceNational''' - полная стоимость тура (в нац. валюте);
 +
* '''DiscountSum''' - скидка по путевке (в валюте тура);
 +
* '''DiscountSumNational''' - скидка по путевке (в нац. валюте);
 +
* '''PriceToPay''' - cумма к оплате в валюте тура (PriceToPay = Price - DiscountSum);
 +
* '''PriceToPayNational''' - cумма к оплате в национальной валюте;
 +
* '''intIsoRateCode''' - iso-код валюты тура;
 +
* '''IsoRateCodeNational''' - iso-код национальной валюты;
 +
* '''ResultCode''' - код результата;
 +
* '''FilialKey''' - ключ филиала, который создал заявку;
 +
* '''TourDate''' - дата начала тура;
 +
* '''TourDateEnd''' - дата окончания тура;
 +
* '''CountryName''' - название страны на русском языке;
 +
* '''TourName''' - наименование тура;
 +
* '''DepartureCity''' - город отправления (по путёвке);
 +
* '''PaymentStatus''' - статус оплаты:
 +
** '''0''' - путёвка не оплачена;
 +
** '''1''' - путёвка частично оплачена;
 +
** '''2''' - путёвка полностью оплачена;
 +
** '''3''' - оплата путёвки невозможна;
 +
* '''UTCDateOfCreation''' - дата создания заявки в формате UTC;
 +
* '''ReservationStatus''' - статус бронирования:
 +
** '''0''' - ожидание подтверждения путёвки;
 +
** '''1''' - путёвка подтверждена;
 +
** '''2''' - путёвка аннулирована;
 +
* '''ReservationTourists''' - Массив туристов по путевке;
 +
** '''FullName''' - ФИО туриста на русском языке;
 +
** '''FullNameLat''' - имя туриста на английском языке;
 +
** '''BirthDate''' - дата рождения туриста;
 +
** '''IsMain''' - параметр, показывающий главного туриста;
 +
* '''ReservationServices''' - массив услуг в путевке;
 +
* '''PaymentDebt''' - оставшаяся сумма к оплате в валюте тура;
 +
* '''PaymentDebtNational''' - оставшаяся сумма к оплате в национальной валюте;
 +
* '''PaymentCourse''' - курс оплаты запрашиваемой путевки;
 +
 +
===Получение не аннулированных заявок (метод «GetUserReservations»)===
 +
====Описание метода====
 +
Данный метод  возвращает все не аннулированные путевки пользователя, идентификатор аутентификации ([[#Аутентификация (метод GetUserToken)|«GetUserToken»]]) которого передан.<br />
 +
Функционирует только с включенной настройкой '''allowToGetUserReservations'''.
 +
Поведение метода зависит от значения настроек '''advancedFilialChoise''', '''orderListMinimumDate''', '''superUserMode'''. Данные настройки необходимо продублировать в <code>web.config</code>, находящийся в папке '''Finance''' из <code>web.config</code> основного приложения Master-Web.
 +
 +
====Сигнатура метода====
 +
<code>public UserReservationsResult GetUserReservations(String token, String currencyIsoCode)</code>
 +
====Описание принимаемых методом параметров====
 +
* '''token''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
 +
* '''currencyIsoCode''' –  ISO-код валюты.
 +
 +
====Возвращаемые значения====
 +
Метод возвращает результат своей работы в виде класса '''UserReservationsResult '''. Корректность результата проверяется значением поля '''ErrorCode''' данного класса:
 +
 +
* '''0''' – результат корректный, в полях возвращены корректные значения;
 +
* '''2''' – внутренняя ошибка;
 +
* '''6''' – некорректный или устаревший идентификатор аутентификации (token);
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
 +
 +
Описание класса:
 +
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
 +
|- style="background-color:#F2F2F2"
 +
|- style="vertical-align:text-top"
 +
 +
| <syntaxhighlight lang="cpp">
 +
public class UserReservationsResult
 +
    {
 +
        public Int32 ErrorCode { get; set; }
 +
        public UserReservation[] Reservations { get; set; }
 +
    }
 +
 +
    public class UserReservation
 +
    {
 +
        public String ReservationCode { get; set; }
 +
        public String Country { get; set; }
 +
        public String DepartureCity { get; set; }
 +
        public DateTime UTCDateOfCreation { get; set; }
 +
        public DateTime TourDate { get; set; }
 +
        public ReservationPrice OriginalPrice { get; set; }
 +
        public DateTime TourDateEnd { get; set; }
 +
        public ReservationPaymentStatus PaymentStatus { get; set; }
 +
        public ReservationStatus ReservationStatus { get; set; }
 +
        public ReservationPrice PaymentPrice { get; set; }
 +
    }
 +
 +
    public class ReservationPrice
 +
    {
 +
        /// <summary>
 +
        /// Полная стоимость путевки
 +
        /// </summary>
 +
        public Double Price { get; set; }
 +
        /// <summary>
 +
        /// Стоимость к оплате
 +
        /// </summary>
 +
        public Double PriceToPay { get; set; }
 +
        /// <summary>
 +
        /// Оплачено
 +
        /// </summary>
 +
        public Double Payed { get; set; }
 +
        /// <summary>
 +
        /// Валюта, в которой представлены цены
 +
        /// </summary>
 +
        public String Currency { get; set; }
 +
    }
 +
</syntaxhighlight>
 +
|}
 +
 +
* '''reservationCode''' – номер путевки;
 +
* '''Country''' - название страны на русском языке;
 +
* '''DepartureCity''' - город отправления (по путёвке);
 +
* '''UTCDateOfCreation''' - дата и время создания заявки в формате UTC;
 +
* '''TourDate''' - дата начала тура;
 +
* '''Price''' - стоимость путёвки;
 +
* '''PriceToPay''' - сумма к оплате;
 +
* '''Payed''' - оплачено;
 +
* '''Currency''' - ISO-код валюты;
 +
* '''TourDateEnd''' - дата окончания тура;
 +
* '''PaymentStatus''' - статус оплаты:
 +
** '''0''' - путёвка не оплачена;
 +
** '''1''' - путёвка частично оплачена;
 +
** '''2''' - путёвка полностью оплачена;
 +
* '''ReservationStatus''' - статус бронирования:
 +
** '''0''' - ожидание подтверждения путёвки;
 +
** '''1''' - путёвка подтверждена.
 +
 +
===Получение внутреннего курса валюты (метод «GetCurrentCurrencies»)===
 +
====Описание метода====
 +
 +
Данный метод  возвращает внутренний курс валюты на текущую дату.<br />
 +
 +
====Сигнатура метода====
 +
<code>public CurrencyRate[] GetCurrentCurrencyRates()</code>
 +
 +
====Возвращаемые значения====
 +
Метод возвращает результат своей работы в виде класса '''CurrencyRate'''. Корректность результата проверяется значением поля '''ErrorCode''' данного класса:
 +
 +
* '''0''' – результат корректный, в полях возвращены корректные значения;
 +
* '''2''' – внутренняя ошибка.
 +
 +
Описание класса:
 +
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
 +
|- style="background-color:#F2F2F2"
 +
|- style="vertical-align:text-top"
 +
 +
| <syntaxhighlight lang="cpp">
 +
public class CurrencyRate
 +
    {
 +
        public String Currency { get; set; }
 +
        public Double Rate { get; set; }
 +
    }
 +
</syntaxhighlight>
 +
|}
 +
 +
* '''Currency''' - ISO-код валюты;
 +
* '''Rate''' - значение внутреннего курса валюты на текущую дату.
  
[[Category:Мастер-Web_Дополнительные_модули]]
+
[[Category:Платежные web-сервисы]]
[[Category:Мастер-Тур_Веб-сервисы]]
 

Текущая версия на 16:39, 25 октября 2021

Версия статьи от 25-10-2021. Для перехода на версию статьи, соответствующую используемой Вами версии программы, нажмите ссылку в таблице ниже:

Более ранние версии:
До 2009.2.12 включительно
До 2009.2.15 включительно
До 2009.2.19 включительно
До 2009.2.20.13 включительно
До 2009.2.20.14 включительно


Содержание

Введение

Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора. Модуль совместим со следующими платежными системами (платежные шлюзы):

  • Appex
  • Assist
  • Chronopay
  • Contact
  • PayTravel
  • Qiwi
  • TourPay

Установка

Для установки Сервис интеграции с платежной системой нужно создать директорию Finance в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-finance-2007.2.XX.XXXX.zip В управлении IIS необходимо создать виртуальный каталог для папки Finance.

Полезная информация


Лицензия проверяется в зависимости от того, какая платежная система 
задана в настройке <add key="PaymentSystem" value=""/>

Создание виртуального каталога

По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
1 Зайти в Пуск (Start) → Настройки (Settings) → Панель управления (Control Panel) → Администрирование (Administrative Tools)
Панель управления

2 Диспетчер служб IIS
Администрирование - Диспетчер служб IIS

3 В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать Преобразовать в приложение
Преобразовать в приложение

4 В открывшемся окне нужно нажать кнопку ОК
Добавить приложение

Подключение к базе данных ПК «Мастер-Тур»

В файле web.config, расположенном в папке Finance пропишите необходимые параметры подключения (красным цветом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»:
<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК «Мастер-Тур»;Initial Catalog=название базы данных ПК «Мастер-Тур;User ID=логин пользователя ПК «Мастер-Тур»;Password=пароль пользователя ПК «Мастер-Тур»"/>

Настройка

После установки сервис интеграции (например «Сервис интеграции с платежной системой Название_Системы») доступен по адресу
http://ip-адрес сервера Мастер-Веб/Finance/FinanceService.asmx.

Настройки в файле WEB.CONFIG

Дополнительные настройки, задаются в файле web.config, находящемся в папке Finance.

Описание Значение Настройка
1 Определяет тип платежной операции.

Тип платежной операции так же может задаваться в настройке SYSPaymentOperationId в таблице SystemSettings. В таком случае в настройке PaymentOperationId задается название настройки из таблицы SystemSettings.

Обязательная настройка.

Идентификатор типа операции - поле PO_Id из таблицы [PaymentOperations].

Либо название настройки SYSPaymentOperationId из таблицы [SystemSettings].
<add key="PaymentOperationId" value="1" />
2 Определяет тип платежной системы при сохранении платежей.

Информация о типе платежной системы записывается в историю по путевке.
Для системы «Мастер-Финанс» информация записывается в столбец DP_PAYMENTSSYS таблицы [FIN_DOGOVOR_PAID].
Обязательная настройка.
На выбранную платежную систему должна быть выписана лицензия.

Название платежной системы:
  • Appex
  • Assist
  • Chronopay
  • Contact
  • PayTravel
  • Qiwi
  • TourPay

Внимание! По умолчанию данная настройка имеет значение none. Но с этим значением сервис работать не может. Для работы сервиса необходимо указать в ней одно из допустимых значений.

<add key="PaymentSystem" value="TourPay"/>
3 Определяет время действия идентификатора аутентифации (token). Время действия (в минутах).
<add key="TokenExpireTime" value="10" />
4 Включение режима записи нового платежа в систему «Мастер-Финанс». При этом в ПК «Мастер-Тур» платежи не сохраняются.
  • true - включена запись платежей в «Мастер-Финанс»;
  • false или отсутствие настройки - выключает запись платежей в «Мастер-Финанс».
<add key="AddPaymentsToMasterFinance" value="true"/>
5 Настройка, определяющая дату, на которую должен подбираться курс валют для пересчета суммы к оплате.

Обработка настройки, начиная с релиза 9220SP31.

  • FixationDate или отсутствие настройки - курс на дату последней фиксации путевки на момент совершения платежа, а если путевка не зафиксирована, то на дату совершения платежа;
  • ConfirmDate — курс на дату последнего подтверждения заявки (если подтверждения путевки еще не было, либо курс на дату подтверждения не заведен, то будет отображаться курс на момент совершения платежа);
  • OrderDate — дата оформления заявки;
  • PaymentDate - курс на дату совершения платежа.

Обработка настройки до релиза 9220SP31.

  • OrderDate — дата оформления заявки;
  • Today — курс на текущую дату;
  • ConfirmDate — курс на дату подтверждения заявки (если подтверждения путевки еще не было, либо курс на дату подтверждения не заведен, то будет отображаться курс на текущую дату).
<add key="courseExchangeDate" value="orderdate"/>
6 Настройка, позволяющая включить механизм логирования.

(Начиная с версии 2009.2.20.31, данная настройка не используется).

  • true — система логирования включена;
  • false или отсутствие настройки — логирование выключено.
<add key="UseLog" value="true"/>
7 Настройка определяющая филиал, с которым будет создан платеж.
  • Reservation — филиал путевки;
  • CurrentUser или отсутствие настройки — филиал пользователя, от имени которого работает сервис.
<add key="PaymentFilialSource" value="CurrentUser"/>
8 Настройка определяющая типы платежей, при которых разрешена оплата путевки через сервис. Типы платежей через запятую - поле PT_KEY из таблицы [Paymenttype] (через запятую).
<add key="allowedPaymentTypes" value="4"/>
9 Настройка, указывающая что в качестве лица, от которого принята оплата надо всегда использовать представителя агентства (DUP_USER).
  • true - в качестве лица, от которого принята оплата всегда указывается ФИО представителя агентства (поле US_FULLNAME из таблицы [DUP_USER].
  • false или отсутствии настройки - работает стандартный механизм выбора лица, от которого принят платеж.
<add key="useDupUserAsPayer" value="true"/>
10 Настройка, определяющая какую информацию будет выводить метод GetPaymentInformation - полную или сокращенную.
  • true - возвращается полная информация по платежу.
  • false или отсутствии настройки - возвращается только информация о том, есть ли такой платеж по путевке.
<add key="paymentInformationReturnEnabled" value="true"/>
11 Настройка, определяющая партнеров - покупателей путевки, для которых можно проводить платеж. Ключи партнеров через запятую - поле PR_KEY в таблице [Partners].

Если настройка отсутствует или значение не указано, то можно проводить платеж по любой путевке.

<add key="allowedPartnerKeys" value="0,10762"/>
12 Настройка адреса платежного сервиса.

Обязательная настройка. Обрабатывается только в релизе 2009.2.21.

По умолчанию указан локальный компьютер и стандартный порт. Если служба установлена на другом компьютере, то необходимо указать его ip-адрес и порт. Если на компьютере, где устанавливается сервис, стандартный порт 8080 занят, то необходимо указать другой свободный порт.
<add key="PaymentSignatureServiceAddress" value="http://localhost:8080/PaymentSignatureServiceHost/FinanceService/"/>
13 Определяет, будет ли метод GetReservationInfo выводить информацию по путевке.
  • true - метод GetReservationInfo выводит данные по путевке
  • false или отсутствие настройки метод GetReservationInfo не выводит данные по путевке
<add key="allowToGetReservationInfo" value="true"/>
14 Определяет, будет ли метод GetUserReservations выводить информацию по не аннулированным путёвкам.
  • true - метод GetUserReservations выводит данные по путевкам
  • false или отсутствие настройки метод GetUserReservations не выводит данные по путевкам
<add key="allowToGetUserReservations" value="true"/>
15 Имя текущей установленной службы.

Внимание! Настройка обрабатывается только в версии Мастер-Тур 15.

Наименование службы, к которой может обращаться текущий клиент (по значению настройки acceptableServices в MasterTourService). По умолчанию настройка не заполнена. Значение настройки должно быть явно задано.
<add key="acceptableServices" value=""/>
16 Настройка, определяющая статусы путевок, при которых доступна возможность оплаты через сервис платежей.

Обязательная настройка

Ключи статусов из таблицы [Order_Status], при которых доступна оплата через сервис платежей.
<add key="paymentsStatuses" value="7,37" />

Подготовка данных

Проверка заявок и проведение платежа через платежную систему в базу туроператора осуществляется по оформленным путевкам. У путевки должен быть зафиксирован курс валюты, т.е. в истории путевки должно присутствовать сообщение "Фиксация курса".

Логирование

Для детализации ошибок, которые могут возникнуть при работе web-сервиса (например, когда методы web-сервиса возвращают значение ErrorCode 2) можно включить логирование.

Начиная с релиза 2009.2.20.31 изменились настройки логирования

В секции <configSections> надо добавить строку (если она отсутствует):

 <section name="loggerSection" type="Megatec.ConfigLogic.Loggers.LoggersSection, Megatec.ConfigLogic" />

Далее (после секции <configSections>) прописывается секция <loggerSection>:

<loggerSection>
  <Loggers path="Logs\">
    <Logger level="ALL" name="ErrorLog"/>
    <Logger level="ALL" name="MasterWebLog"/>
  </Loggers>
</loggerSection>
  • Путь к папке лог-файлов прописывается в секции Loggers path.
  • Включение логирования осуществляется в секции Logger level. Возможные значения: ALL или OFF.


Предыдущий вариант настройки логирования (до релиза 2009.2.20.31)

В секции <configSections> надо добавить строку (если она отсутствует):

 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

Далее (после секции <configSections>) прописывается секция <log4net>:

 <log4net>
    <appender name="ExceptionLogger" type="log4net.Appender.FileAppender">
      <param name="File" value="Logs\\ExceptionLogger.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level [%ndc] - %message %newline %exception" />
      </layout>
    </appender>
    <logger name="ExceptionLogger">
      <param name="Threshold" value="ALL" />
      <appender-ref ref="ExceptionLogger" />
    </logger>

    <appender name="ServiceLogger" type="log4net.Appender.FileAppender">
      <param name="File" value="Logs\\Megatec.Web.Services.Finance.FinanceService.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level [%ndc] - %message %newline %exception" />
      </layout>
    </appender>
    <logger name="ServiceLogger">
      <param name="Threshold" value="ALL" />
      <appender-ref ref="ServiceLogger" />
    </logger>

  </log4net>
  • Путь к лог-файлу прописывается в секции File.
    <param name="File" value="Logs\\ExceptionLogger.txt" />
    
  • Включение логирования осуществляется в секции Threshold.
    Возможные значения: ALL или OFF.
    <param name="Threshold" value="ALL" />
    
  • С помощью настройки maximumFileSize можно ограничить размер лог-файла. В таком случае будут автоматически удаляться старые записи.
    <maximumFileSize value="10240KB" />
    


Работа в системе

Аутентификация (метод «GetUserToken»)

Метод возвращает строку - идентификатор аутентификации, который используется для подтверждения авторизации при вызове методов web-сервисов.

Сигнатура метода

public TokenResult GetUserToken(string userLogin, string userPassword)

Описание принимаемых методом параметров

  • userLogin - имя пользователя on-line системы бронирования ПК «Мастер-Web»;
  • userPassword - пароль пользователя on-line системы бронирования ПК «Мастер-Web».

Возвращаемые значения

Метод возвращает результат своей работы в виде класса TokenResult. Корректность результата проверяется значением поля ErrorCode данного класса:

  • 0 - результат корректный;
  • 2 – внутренняя ошибка;
  • 5 - неправильный логин или пароль.

Описание класса:

public class TokenResult
 {
     public int ErrorCode;
     public string Token;
 }


  • ErrorCode - код результата;
  • Token - идентификатор аутентификации.

Проверка заявки (метод «CheckReservation»)

Описание метода

Данный метод предназначен для проверки наличия заявки в БД и определения ее стоимости.

Сигнатура метода

public AmountSum CheckReservation(string userToken, string dgCode)

Описание принимаемых методом параметров

  • userToken - идентификатор аутентификации, полученный при вызове метода GetUserToken;
  • dgCode - строковая переменная, представляющая собой код проверяемой путевки.

Возвращаемые значения

Метод возвращает результат своей работы в виде класса AmountSum. Корректность результата проверяется значением поля ErrorCode данного класса:

  • 0 – результат корректный, в полях возвращены корректные значения;
  • 1 – заявка не найдена в БД;
  • 2 – внутренняя ошибка;
  • 3 – заявка была аннулирована;
  • 4 – путевка уже оплачена;
  • 6 – некорректный или устаревший идентификатор аутентификации (token);
  • 8 – запрещено создавать платеж по путевке, так как есть платежи с типами, не указанными в настройке allowedPayments;
  • 9 – запрещено создавать платеж по путевке, так как покупатель путевки не указан в настройке allowedPartnerKeys;
  • 10 – путевка имеет недопустимый статус, т.е. статус путевки (поле DG_SOR_CODE) не содержится в перечислении допустимых статусов настройки конфига PaymentsStatuses;
  • 11 – нет прав на проверку лицензии;
  • 12 – срок действия лицензии истек.

Описание класса:

public class AmountSum
    {
        public double Amount
        public string RateCode
        public double NationalCurrencyPrice
        public string NationalRateCode
        public int ErrorCode
        public int FilialKey
        public DateTime BeginTourDate
        public DateTime EndTourDate
        public String MainTouristFIO
        /// <summary>
        /// Название главной услуги тура
        /// </summary>
        public String BaseService

        // Количество туристов по путевке
        public Nullable<Int32> ReservationTouristsCount

        /// <summary>
        /// Тип путевки, определяемый по входящим в нее услугам
        /// </summary>
        public Nullable<ReservationType> ReservationType
     }

public enum ReservationType
    {
        undefined,
        /// <summary>
        /// Турпакет (какой-то набор услуг)
        /// </summary>
        tour,
        /// <summary>
        /// Проживание
        /// </summary>
        residence,
        transfer,
        avia,
        cruise,
        insurance,
        visa,
        other
    }


  • Amount - сумма к оплате в валюте тура;
  • RateCode - iso-код валюты тура;
  • NationalCurrencyPrice - сумма к оплате в национальной валюте;
  • NationalRateCode - iso-код национальной валюты;
  • ErrorCode - код результата;
  • FilialKey - ключ филиала, который создал заявку;
  • BeginTourDate - дата начала тура;
  • EndTourDate - дата окончания тура;
  • MainTouristFIO - фамилия и инициалы главного туриста;

Значения, возвращаемые только при включенной настройке allowToGetReservationInfo:

  • BaseService - название главной услуги;
  • ReservationTouristsCount - количество туристов по путевке;
  • ReservationType - значение типа предоставляемой услуги, возможные значения:
    • tour - турпакет;
    • residence - проживание;
    • transfer - наземная перевозка;
    • avia - авиа перелёт;
    • cruise - круиз;
    • insurance - страхование;
    • visa - виза;
    • other - прочие услуги.

Проведение платежа по заявке (метод «CreatePayment»)

Описание метода

Данный метод предназначен для создания платежа по путевке в финансовом блоке ПК «Мастер-Тур».

Сигнатура метода

public int CreatePayment(string userToken, DateTime date, Decimal sum, string currencyIsoCode, string reservationCode, string externalPaymentId)

Описание принимаемых методом параметров

  • userToken - идентификатор аутентификации, полученный при вызове метода GetUserToken;
  • date – дата проведения платежа;
  • sum – сумма платежа;
  • currencyIsoCode – ISO-код валюты, в которой осуществляется платеж;
  • reservationCode – номер путевки;
  • externalPaymentId – идентификатор платежа во внешней системе.

Возвращаемые значения

Данный метод возвращает целочисленное значение обозначающее результат выполнения операции:

  • 0 – операция выполнена успешно, платеж проведен;
  • 1 – заявка не найдена в БД;
  • 2 – внутренняя ошибка при создании платежа;
  • 3 – заявка была аннулирована;
  • 4 – путевка уже оплачена;
  • 6 – некорректный или устаревший идентификатор аутентификации(token);
  • 7 – платеж с таким идентификатором уже существует;
  • 8 – по путевке есть платежи запрещенных типов;
  • 9 – проводка платежа по данному партнеру не разрешена;
  • 10 – ошибка подписи платежа или путевки;
  • 11 – нет прав на проверку лицензии;
  • 12 – срок действия лицензии истек.

При этом в БД создается платеж по выбранной путевке.

Проверка существования платежа/информация по платежу (метод «GetPaymentInformation»)

Описание метода

Данный метод предназначен для проверки существования платежа и получения информации по платежу.

Поведение метода зависит от значения настройки paymentInformationReturnEnabled.

Сигнатура метода

public PaymentInformationResult GetPaymentInformation(String userToken, String reservationCode, String externalPaymentId)

Описание принимаемых методом параметров

  • userToken - идентификатор аутентификации, полученный при вызове метода GetUserToken;
  • reservationCode – номер путевки;
  • externalPaymentId – идентификатор платежа во внешней системе.

Возвращаемые значения

Метод возвращает результат своей работы в виде класса PaymentInformationResult. Корректность результата проверяется значением поля ErrorCode данного класса:

  • 0 – результат корректный, в полях возвращены корректные значения;
  • 2 – внутренняя ошибка;
  • 11 – нет прав на проверку лицензии;
  • 12 – срок действия лицензии истек.

Описание классов:

public class PaymentInformationResult
	{
		/// <summary>
		/// Признак наличия платеже
		/// </summary>
		public Boolean IsPaymentExists { get; set; }

		/// <summary>
		/// Краткая информация по платежу
		/// </summary>
		public PaymentsShortInformation PaymentsShortInformation { get; set; }

		/// <summary>
		/// Код ошибки
		/// </summary>
		public Int32 ErrorCode { get; set; }
	}
  • IsPaymentExists - показывает, есть ли запрошенный платеж:
    • true - платеж с указанным идентификатором по указанной путевке существует.
    • false - запрошенного платежа нет.
  • PaymentsShortInformation - информация по платежу.

Описание класса:

public class PaymentsShortInformation
	{
		/// <summary>
		/// Id платежа в системе МТ
		/// </summary>
		public Int32 InternalPaymentId { get; set; }

		/// <summary>
		/// Номер путевки по платежу
		/// </summary>
		public String DogovorCode { get; set; }

		/// <summary>
		/// Сумма платежа
		/// </summary>
		public Decimal PaymentSum { get; set; }

		/// <summary>
		/// Сумма платежа в нац.валюте
		/// </summary>
		public Decimal PaymentNationalSum { get; set; }

		/// <summary>
		/// Валюта платежа
		/// </summary>
		public String PaymentRateISOCode { get; set; }

		/// <summary>
		/// Дата проведения платежа
		/// </summary>
		public DateTime CreateDate { get; set; }
	}


    • InternalPaymentId - идентификатор платежа в системе ПК «Мастер-Тур» (поле PM_Id в таблице [Payments]);
    • DogovorCode - номер путевки;
    • PaymentSum - сумма к оплате;
    • PaymentNationalSum - сумма к оплате в национальной валюте;
    • PaymentRateISOCode - ISO-код валюты платежа;
    • CreateDate - дата и время создания платежа.
  • ErrorCode - код результата.

Получение информации по заявке (метод «GetReservationInfo»)

Описание метода

Данный метод предназначен для выгрузки данных по путевке из базы данных ПК «Мастер-Тур» для проведения платежа.

Сигнатура метода

public ReservationInformationResult GetReservationInfo(string userToken, string reservationCode)

Описание принимаемых методом параметров

  • userToken - идентификатор аутентификации, полученный при вызове метода GetUserToken;
  • reservationCode - строковая переменная, представляющая собой код проверяемой путевки.

Возвращаемые значения

Метод возвращает результат своей работы в виде класса ReservationInformationResult. Корректность результата проверяется значением поля ResultCode данного класса:

  • 0 – результат корректный, в полях возвращены корректные значения;
  • 2 – внутренняя ошибка;
  • 5 - некорректный логин или пароль;
  • 6 - некорректный или устаревший идентификатор аутентификации(token);
  • 11 – нет прав на проверку лицензии;
  • 12 – срок действия лицензии истек.

Ниже приводится описание класса.

 public class ReservationInformationResult
    {
        public double Price { get; set; }
        public double PriceNational { get; set; }
        public double DiscountSum { get; set; }
        public double DiscountSumNational { get; set; }
        public double PriceToPay { get; set; }
        public double PriceToPayNational { get; set; }
        public string IsoRateCode { get; set; }
        public string IsoRateCodeNational { get; set; }
        public int ResultCode { get; set; }
        public int? FilialKey { get; set; }
        public DateTime TourDate { get; set; }
        public DateTime TourDateEnd { get; set; }
        public string CountryName { get; set; }
        public string TourName { get; set; }
        public String DepartureCity { get; set; }
        public ReservationPaymentStatus PaymentStatus { get; set; }
        public DateTime UTCDateOfCreation { get; set; }
        public ReservationStatus ReservationStatus { get; set; }
        public List<TouristFinanceInfo> ReservationTourists { get; set; }
        public List<string> ReservationServices { get; set; }
        public Decimal Debt { get; set; }
        public Decimal DebtNational { get; set; }
        public Double DeptNationalRate { get; set; }
    }
    
 public enum ReservationPaymentStatus
    {
        WaitingFirstPayment,
        PartiallyPayed,
        FullPaied,
        CouldNotBePayed
    }

 public enum ReservationStatus
    {
        WaitConfirmation,
        Confirmed,
        Annulated
    }


  • Price - полная стоимость тура (в валюте тура);
  • PriceNational - полная стоимость тура (в нац. валюте);
  • DiscountSum - скидка по путевке (в валюте тура);
  • DiscountSumNational - скидка по путевке (в нац. валюте);
  • PriceToPay - cумма к оплате в валюте тура (PriceToPay = Price - DiscountSum);
  • PriceToPayNational - cумма к оплате в национальной валюте;
  • intIsoRateCode - iso-код валюты тура;
  • IsoRateCodeNational - iso-код национальной валюты;
  • ResultCode - код результата;
  • FilialKey - ключ филиала, который создал заявку;
  • TourDate - дата начала тура;
  • TourDateEnd - дата окончания тура;
  • CountryName - название страны на русском языке;
  • TourName - наименование тура;
  • DepartureCity - город отправления (по путёвке);
  • PaymentStatus - статус оплаты:
    • 0 - путёвка не оплачена;
    • 1 - путёвка частично оплачена;
    • 2 - путёвка полностью оплачена;
    • 3 - оплата путёвки невозможна;
  • UTCDateOfCreation - дата создания заявки в формате UTC;
  • ReservationStatus - статус бронирования:
    • 0 - ожидание подтверждения путёвки;
    • 1 - путёвка подтверждена;
    • 2 - путёвка аннулирована;
  • ReservationTourists - Массив туристов по путевке;
    • FullName - ФИО туриста на русском языке;
    • FullNameLat - имя туриста на английском языке;
    • BirthDate - дата рождения туриста;
    • IsMain - параметр, показывающий главного туриста;
  • ReservationServices - массив услуг в путевке;
  • PaymentDebt - оставшаяся сумма к оплате в валюте тура;
  • PaymentDebtNational - оставшаяся сумма к оплате в национальной валюте;
  • PaymentCourse - курс оплаты запрашиваемой путевки;

Получение не аннулированных заявок (метод «GetUserReservations»)

Описание метода

Данный метод возвращает все не аннулированные путевки пользователя, идентификатор аутентификации («GetUserToken») которого передан.
Функционирует только с включенной настройкой allowToGetUserReservations. Поведение метода зависит от значения настроек advancedFilialChoise, orderListMinimumDate, superUserMode. Данные настройки необходимо продублировать в web.config, находящийся в папке Finance из web.config основного приложения Master-Web.

Сигнатура метода

public UserReservationsResult GetUserReservations(String token, String currencyIsoCode)

Описание принимаемых методом параметров

  • token - идентификатор аутентификации, полученный при вызове метода GetUserToken;
  • currencyIsoCode – ISO-код валюты.

Возвращаемые значения

Метод возвращает результат своей работы в виде класса UserReservationsResult . Корректность результата проверяется значением поля ErrorCode данного класса:

  • 0 – результат корректный, в полях возвращены корректные значения;
  • 2 – внутренняя ошибка;
  • 6 – некорректный или устаревший идентификатор аутентификации (token);
  • 11 – нет прав на проверку лицензии;
  • 12 – срок действия лицензии истек.

Описание класса:

public class UserReservationsResult
    {
        public Int32 ErrorCode { get; set; }
        public UserReservation[] Reservations { get; set; }
    }

    public class UserReservation
    {
        public String ReservationCode { get; set; }
        public String Country { get; set; }
        public String DepartureCity { get; set; }
        public DateTime UTCDateOfCreation { get; set; }
        public DateTime TourDate { get; set; }
        public ReservationPrice OriginalPrice { get; set; }
        public DateTime TourDateEnd { get; set; }
        public ReservationPaymentStatus PaymentStatus { get; set; }
        public ReservationStatus ReservationStatus { get; set; }
        public ReservationPrice PaymentPrice { get; set; }
    }

    public class ReservationPrice
    {
        /// <summary>
        /// Полная стоимость путевки
        /// </summary>
        public Double Price { get; set; }
        /// <summary>
        /// Стоимость к оплате
        /// </summary>
        public Double PriceToPay { get; set; }
        /// <summary>
        /// Оплачено
        /// </summary>
        public Double Payed { get; set; }
        /// <summary>
        /// Валюта, в которой представлены цены
        /// </summary>
        public String Currency { get; set; }
    }
  • reservationCode – номер путевки;
  • Country - название страны на русском языке;
  • DepartureCity - город отправления (по путёвке);
  • UTCDateOfCreation - дата и время создания заявки в формате UTC;
  • TourDate - дата начала тура;
  • Price - стоимость путёвки;
  • PriceToPay - сумма к оплате;
  • Payed - оплачено;
  • Currency - ISO-код валюты;
  • TourDateEnd - дата окончания тура;
  • PaymentStatus - статус оплаты:
    • 0 - путёвка не оплачена;
    • 1 - путёвка частично оплачена;
    • 2 - путёвка полностью оплачена;
  • ReservationStatus - статус бронирования:
    • 0 - ожидание подтверждения путёвки;
    • 1 - путёвка подтверждена.

Получение внутреннего курса валюты (метод «GetCurrentCurrencies»)

Описание метода

Данный метод возвращает внутренний курс валюты на текущую дату.

Сигнатура метода

public CurrencyRate[] GetCurrentCurrencyRates()

Возвращаемые значения

Метод возвращает результат своей работы в виде класса CurrencyRate. Корректность результата проверяется значением поля ErrorCode данного класса:

  • 0 – результат корректный, в полях возвращены корректные значения;
  • 2 – внутренняя ошибка.

Описание класса:

public class CurrencyRate
    {
        public String Currency { get; set; }
        public Double Rate { get; set; }
    }
  • Currency - ISO-код валюты;
  • Rate - значение внутреннего курса валюты на текущую дату.