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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Настройки в файле WEB.CONFIG)
 
(не показано 97 промежуточных версий 9 участников)
Строка 3: Строка 3:
 
<tr>
 
<tr>
 
<td>
 
<td>
Более ранние версии:<BR>
+
Более ранние версии:<br />
[http://wiki.megatec.ru/index.php?title=Мастер-Web:_Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой_(Прием_наличных_через_платежный_терминал)&oldid=7596 До 2009.2.12 включительно]<BR>
+
[http://wiki.megatec.ru/index.php?title=Мастер-Web:Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой&stableid=7596 До 2009.2.12 включительно]<br />
[http://wiki.megatec.ru/index.php?title=Мастер-Web:_Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой_(Прием_наличных_через_платежный_терминал)&oldid=8105 До 2009.2.15 включительно]<BR>
+
[http://wiki.megatec.ru/index.php?title=Мастер-Web:Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой&stableid=8105 До 2009.2.15 включительно]<br />
 +
[http://wiki.megatec.ru/index.php?title=Мастер-Web:Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой_(Прием_наличных_через_платежный_терминал)&stableid=11202 До 2009.2.19 включительно]<br />
 +
[http://wiki.megatec.ru/index.php?title=Мастер-Web:Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой_(Прием_наличных_через_платежный_терминал)&stableid=14113 До 2009.2.20.13 включительно]<br />
 +
[http://wiki.megatec.ru/index.php?title=Мастер-Web:Дополнительный_модуль_Сервис_для_интеграции_с_платежной_системой&stableid=14140 До 2009.2.20.14 включительно]<br />
 
</td>
 
</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
<br>
+
<br />
  
 
==Введение==
 
==Введение==
 
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора.
 
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора.
Модуль совместим со следующими платежными системами:  
+
Модуль совместим со следующими платежными системами (платежные шлюзы):  
*TourPay
+
* Appex
*Контакт
+
* Assist
*Лидер
+
* Chronopay
 +
* Contact
 +
* PayTravel
 +
* Qiwi
 +
* TourPay
  
 
==Установка==
 
==Установка==
Для установки Сервиса для интеграции с платежной системой нужно создать директорию Finance в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-finance-2007.2.XX.XXXX.zip.
+
Для установки '''Сервис интеграции с платежной системой''' нужно создать директорию '''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 />
 +
 
 
===Создание виртуального каталога===
 
===Создание виртуального каталога===
По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
+
По умолчанию корневым каталогом '''IIS''' является <code>C:/Inetpub/wwwroot</code>. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:<br />
*1. Зайти в Пуск (Start) Настройки (Settings) Панель управления (Control Panel) Администрирование (Administrative Tools)
+
1 Зайти в '''Пуск''' ('''Start''') &rarr; '''Настройки''' ('''Settings''') &rarr; '''Панель управления''' ('''Control Panel''') &rarr; '''Администрирование''' ('''Administrative Tools''')<br />
<BR>
+
[[Файл: am_745.png|x500px|Панель управления]]<br />
[[Файл:848.PNG]]<BR>
+
<br />
*2. Диспетчер служб IIS
+
2 '''Диспетчер служб IIS'''<br />
<BR>
+
[[Файл: am_746.png|x500px|Администрирование - Диспетчер служб IIS]]<br />
[[Файл:849.PNG]]<BR>
+
<br />
*3. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать Преобразовать в приложение
+
3 В открывшемся дереве каталогов выбрать '''Web Sites – Default Web Site'''. В открывшемся списке найти ''папку'', для которой нужно создать ''виртуальный каталог'', кликнуть по ней правой кнопкой мыши и выбрать '''Преобразовать в приложение'''<br />
<BR>
+
[[Файл: am_747.png|x500px|Преобразовать в приложение]]<br />
[[Файл:850.PNG]]<BR>
+
<br />
*4. В открывшемся окне нужно нажать кнопку «ОК»
+
4 В открывшемся окне нужно нажать кнопку '''ОК'''<br />
<BR>
+
[[Файл: am_748.png|x500px|Добавить приложение]]<br />
[[Файл:851.PNG]]<BR>
+
<br />
 +
 
 
===Подключение к базе данных ПК «Мастер-Тур»===
 
===Подключение к базе данных ПК «Мастер-Тур»===
В файле web.config, расположенном в папке Finance пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести).
+
В файле <code>web.config</code>, расположенном в папке '''Finance''' пропишите необходимые параметры подключения (<span style="color:red">красным цветом</span> выделены значения, которые необходимо ввести).
Строка подключения к базе данных ПК «Мастер-Тур»:
+
Строка подключения к базе данных ПК «Мастер-Тур»:<br />
<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>  
+
<code><add key = "connectionString" value = "Data Source=<span style="color:red">ip-адрес сервера базы данных ПК «Мастер-Тур»</span>;Initial Catalog=<span style="color:red">название базы данных ПК «Мастер-Тур</span>;User ID=<span style="color:red">логин пользователя ПК «Мастер-Тур»</span>;Password=<span style="color:red">пароль пользователя ПК «Мастер-Тур»</span>"/></code>
 +
 
 
==Настройка==
 
==Настройка==
После установки сервис для интеграции (например «Сервис для интеграции с платежной системой Название_Системы») доступен по адресу <nowiki>http://ip-адрес сервера Мастер-Веб/Finance/FinanceService.asmx</nowiki>.
+
После установки ''сервис интеграции'' (например «Сервис интеграции с платежной системой Название_Системы») доступен по адресу<br />
 +
<code><nowiki>http://ip-адрес сервера Мастер-Веб/Finance/FinanceService.asmx</nowiki></code>.
 +
 
 
===Настройки в файле WEB.CONFIG===
 
===Настройки в файле WEB.CONFIG===
Дополнительные настройки, задаются в файле web.config, находящемся в папке Finance.
+
Дополнительные настройки, задаются в файле <code>web.config</code>, находящемся в папке '''Finance'''.
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=645
 
style='width:483.9pt;margin-left:-.75pt;border-collapse:collapse'>
 
<tr>
 
  <td width=46 valign=top style='width:34.25pt;border:solid black 1.0pt;
 
  border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=TitleTable style='layout-grid-mode:char'>№</p>
 
  </td>
 
  <td width=138 valign=top style='width:103.65pt;border:solid black 1.0pt;
 
  border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=TitleTable style='layout-grid-mode:char'>Описание</p>
 
  </td>
 
  <td width=204 valign=top style='width:153.0pt;border:solid black 1.0pt;
 
  border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=TitleTable style='layout-grid-mode:char'>Значение</p>
 
  </td>
 
  <td width=257 valign=top style='width:193.0pt;border:solid black 1.0pt;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=TitleTable style='layout-grid-mode:char'>Настройка</p>
 
  </td>
 
</tr>
 
<tr>
 
  <td width=46 valign=top style='width:34.25pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>1</p>
 
  </td>
 
  <td width=138 valign=top style='width:103.65pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>Определение названия
 
  настройки, определяющей тип платежной операции, в реестре настроек
 
  туроператора</p>
 
<p>
 
Эта настройка находится в таблице SystemSettings, в ней указывается ключ типа платежной операции из таблицы PaymentOperations.
 
</p>
 
  </td>
 
  <td width=204 valign=top style='width:153.0pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'><b>Название настройки в реестре
 
  настроек туроператора</b></p>
 
  </td>
 
  <td width=257 valign=top style='width:193.0pt;border:solid black 1.0pt;
 
  border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=MsoNormal style='layout-grid-mode:char'><span lang=EN-US>&lt;add key=&quot;<b>PaymentOperationId</b>&quot; value=&quot;<b><i><span style='color:blue'>SYSPaymentOperationId</span></i></b>&quot;/&gt;</span></p>
 
  </td>
 
</tr>
 
  
<tr>
+
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
  <td width=46 valign=top style='width:34.25pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>2</p>
 
  </td>
 
  <td width=138 valign=top style='width:103.65pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>Определяет время действия идентификатора аутентифации (token)</p>
 
  </td>
 
  <td width=204 valign=top style='width:153.0pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'><b>Время действия (в минутах)</b></p>
 
  </td>
 
  <td width=257 valign=top style='width:193.0pt;border:solid black 1.0pt;
 
  border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=MsoNormal style='layout-grid-mode:char'><span lang=EN-US>&lt;add key=&quot;<b>TokenExpireTime</b>&quot; value=&quot;<b><i><span style='color:blue'>10</span></i></b>&quot;/&gt;</span></p>
 
  </td>
 
</tr>
 
  
<tr>
+
|- style="background-color:#F2F2F2"
  <td width=46 valign=top style='width:34.25pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>3</p>
 
  </td>
 
  <td width=138 valign=top style='width:103.65pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>Включает режим записи нового платежа в систему '''Мастер-Финанс'''. При этом в Мастер-Тур платежи не сохраняются.</p>
 
  </td>
 
  <td width=204 valign=top style='width:153.0pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'><b>true</b> - включает запись платежей в Мастер-Финанс;</p>
 
<p class=Tabletext style='layout-grid-mode:char'><b>false</b> - выключает запись платежей в Мастер-Финанс.</p>
 
  </td>
 
  <td width=257 valign=top style='width:193.0pt;border:solid black 1.0pt;
 
  border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=MsoNormal style='layout-grid-mode:char'><span lang=EN-US>&lt;add key=&quot;<b>AddPaymentsToMasterFinance</b>&quot; value=&quot;<b><i><span style='color:blue'>10</span></i></b>&quot;/&gt;</span></p>
 
  </td>
 
</tr>
 
  
<tr>
+
! width="2%" | №
  <td width=46 valign=top style='width:34.25pt;border-top:none;border-left:
+
! width="28%" | Описание
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
+
! width="35%" | Значение
  padding:0cm 5.4pt 0cm 5.4pt'>
+
! width="35%" | Настройка
  <p class=Tabletext style='layout-grid-mode:char'>4</p>
 
  </td>
 
  <td width=138 valign=top style='width:103.65pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'>Определяет тип платежной системы при сохранении платежей в систему Мастер-Финанс (столбец DP_PAYMENTSSYS таблицы FIN_DOGOVOR_PAID).</p>
 
  </td>
 
  <td width=204 valign=top style='width:153.0pt;border-top:none;border-left:
 
  solid black 1.0pt;border-bottom:solid black 1.0pt;border-right:none;
 
  padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=Tabletext style='layout-grid-mode:char'><b>Название платежной системы</b></p>
 
  </td>
 
  <td width=257 valign=top style='width:193.0pt;border:solid black 1.0pt;
 
  border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
 
  <p class=MsoNormal style='layout-grid-mode:char'><span lang=EN-US>&lt;add key=&quot;<b>PaymentSystem</b>&quot; value=&quot;<b><i><span style='color:blue'>Лидер</span></i></b>&quot;/&gt;</span></p>
 
  </td>
 
</tr>
 
  
</table>
+
|- style="vertical-align:text-top"
 +
 
 +
| 1
 +
| Определяет '''тип платежной операции'''.<br /><br />Тип платежной операции так же может задаваться в настройке '''SYSPaymentOperationId''' в таблице ''SystemSettings''. В таком случае в настройке '''PaymentOperationId''' задается название настройки из таблицы ''SystemSettings''.
 +
Обязательная настройка.
 +
| '''Идентификатор типа операции''' - поле '''PO_Id''' из таблицы <code>'''[PaymentOperations]'''</code>.<br /><br />Либо '''название настройки SYSPaymentOperationId''' из таблицы <code>'''[SystemSettings]'''</code>.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="PaymentOperationId" value="1" />
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 2
 +
|Определяет '''тип платежной системы''' при сохранении платежей.
 +
Информация о типе платежной системы записывается в [[Мастер-Тур:Работа с группой путевок#История путевки|историю по путевке]].<br />
 +
Для системы '''«Мастер-Финанс»''' информация записывается в столбец '''DP_PAYMENTSSYS''' таблицы <code>'''[FIN_DOGOVOR_PAID]'''</code>.<br />
 +
Обязательная настройка.<br />
 +
На выбранную платежную систему должна быть выписана лицензия.
 +
| Название платежной системы:
 +
* Appex
 +
* Assist
 +
* Chronopay
 +
* Contact
 +
* PayTravel
 +
* Qiwi
 +
* TourPay
 +
<span style="color:red">Внимание!</span> По умолчанию данная настройка имеет значение '''none'''. Но с этим значением сервис работать не может. Для работы сервиса необходимо указать в ней одно из допустимых значений.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="PaymentSystem" value="TourPay"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 3
 +
| Определяет '''время действия идентификатора аутентифации''' ('''token''').
 +
| '''Время действия (в минутах).'''
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="TokenExpireTime" value="10" />
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 4
 +
| Включение режима '''записи нового платежа''' в систему '''«Мастер-Финанс»'''. При этом в ПК «Мастер-Тур» платежи '''не сохраняются'''.
 +
|
 +
* '''true''' - включена запись платежей в «Мастер-Финанс»;
 +
* '''false''' или '''отсутствие настройки''' - выключает запись платежей в «Мастер-Финанс».
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="AddPaymentsToMasterFinance" value="true"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 5
 +
| Настройка, определяющая '''дату''', на которую должен '''подбираться курс валют''' для пересчета '''суммы к оплате'''.
 +
|
 +
<font style="color:red">''Обработка настройки, начиная с релиза 9220SP31.''</font><br />
 +
* '''FixationDate''' или '''отсутствие настройки''' - курс на дату последней фиксации путевки на момент совершения платежа, а если путевка не зафиксирована, то на дату совершения платежа;
 +
* '''ConfirmDate''' — курс на дату последнего ''подтверждения заявки'' (если '''подтверждения''' путевки еще '''не было''', либо '''курс''' на дату подтверждения '''не заведен''', то будет отображаться курс на '''момент совершения платежа''');
 +
* '''OrderDate''' — дата оформления заявки;
 +
* '''PaymentDate''' - курс на дату совершения платежа.
 +
 
 +
<font style="color:red">''Обработка настройки до релиза 9220SP31.''</font><br />
 +
 
 +
* '''OrderDate''' — дата оформления заявки;
 +
* '''Today''' — курс на текущую дату;
 +
* '''ConfirmDate''' — курс на дату подтверждения заявки (если подтверждения путевки еще не было, либо курс на дату подтверждения не заведен, то будет отображаться курс на текущую дату).
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="courseExchangeDate" value="orderdate"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 6
 +
| Настройка, позволяющая '''включить механизм''' [[#Логирование|логирования]]. <br />
 +
(Начиная с версии 2009.2.20.31, данная настройка не используется).
 +
|
 +
* '''true''' — система логирования ''включена'';
 +
* '''false''' или '''отсутствие настройки''' — логирование ''выключено''.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="UseLog" value="true"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 7
 +
| Настройка определяющая '''филиал''', с которым будет '''создан платеж'''.
 +
|
 +
* '''Reservation''' — филиал ''путевки'';
 +
* '''CurrentUser''' или '''отсутствие настройки''' — филиал ''пользователя, от имени которого работает сервис''.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="PaymentFilialSource" value="CurrentUser"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 8
 +
| Настройка определяющая '''типы платежей''', при которых разрешена '''оплата путевки через сервис'''.
 +
| '''Типы платежей''' через запятую - поле '''PT_KEY''' из таблицы <code>'''[Paymenttype]'''</code> (через запятую).
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="allowedPaymentTypes" value="4"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 9
 +
| Настройка, указывающая что в качестве '''лица''', от которого '''принята оплата''' надо всегда использовать '''представителя агентства''' ('''DUP_USER''').
 +
|
 +
* '''true''' - в качестве лица, от которого принята оплата всегда указывается ФИО представителя агентства (поле '''US_FULLNAME''' из таблицы <code>'''[DUP_USER]'''</code>.
 +
* '''false''' или '''отсутствии настройки''' - работает стандартный механизм выбора лица, от которого принят платеж.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="useDupUserAsPayer" value="true"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 10
 +
| Настройка, определяющая какую '''информацию''' будет выводить метод '''GetPaymentInformation''' - '''полную''' или '''сокращенную'''.
 +
|
 +
* '''true''' - возвращается '''полная информация''' по платежу.
 +
* '''false''' или '''отсутствии настройки''' - возвращается только информация о том, '''есть ли такой платеж''' по путевке.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="paymentInformationReturnEnabled" value="true"/>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
 
 +
| 11
 +
| Настройка, определяющая '''партнеров''' - '''покупателей путевки''', для которых '''можно проводить платеж'''.
 +
| '''Ключи партнеров''' через запятую - поле '''PR_KEY''' в таблице <code>'''[Partners]'''</code>.
 +
Если настройка '''отсутствует''' или значение '''не указано''', то можно проводить платеж по любой путевке.
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<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>
 +
|}
  
 
==Подготовка данных==
 
==Подготовка данных==
 
Проверка заявок и проведение платежа через платежную систему  в базу туроператора осуществляется по оформленным путевкам. У путевки должен быть зафиксирован курс валюты, т.е. в истории путевки должно присутствовать сообщение "Фиксация курса".
 
Проверка заявок и проведение платежа через платежную систему  в базу туроператора осуществляется по оформленным путевкам. У путевки должен быть зафиксирован курс валюты, т.е. в истории путевки должно присутствовать сообщение "Фиксация курса".
 +
 +
==Логирование==
 +
Для детализации ошибок, которые могут возникнуть при работе web-сервиса (например, когда методы web-сервиса возвращают значение '''ErrorCode''' ''2'') можно включить логирование.
 +
 +
''Начиная с релиза 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" />
 +
</syntaxhighlight>
 +
 +
Далее (после секции <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>
 +
    <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>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
 +
<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 />
  
 
==Работа в системе==
 
==Работа в системе==
===Аутентификация (метод GetUserToken)===
+
===Аутентификация (метод «GetUserToken»)===
Метод возвращает строку - идентификатор аутентификации, который используется для подтверждения авторизации при вызове методов web-сервисов.
+
Метод возвращает строку - ''идентификатор аутентификации'', который используется для ''подтверждения авторизации'' при вызове методов web-сервисов.
 +
 
 
====Сигнатура метода====  
 
====Сигнатура метода====  
public TokenResult GetUserToken(string userLogin, string userPassword)
+
<code>public TokenResult GetUserToken(string userLogin, string userPassword)</code>
 +
 
 
====Описание принимаемых методом параметров====
 
====Описание принимаемых методом параметров====
* userLogin - имя пользователя;
+
* '''userLogin''' - ''имя пользователя'' on-line системы бронирования ПК «Мастер-Web»;
* userPassword - пароль.
+
* '''userPassword''' - ''пароль'' пользователя on-line системы бронирования ПК «Мастер-Web».
 +
 
 
====Возвращаемые значения====
 
====Возвращаемые значения====
Метод возвращает результат своей работы в виде класса TokenResult. Корректность результата проверяется значением поля ErrorCode данного класса:
+
Метод возвращает результат своей работы в виде класса '''TokenResult'''. Корректность результата проверяется значением поля '''ErrorCode''' данного класса:
* 0 - результат корректный;
+
* '''0''' - результат корректный;
* 2 – внутренняя ошибка;
+
* '''2''' – внутренняя ошибка;
* 5 - неправильный логин или пароль.
+
* '''5''' - неправильный логин или пароль.
Описание класса приведено ниже:
+
 
<nowiki>public class TokenResult
+
Описание класса:
 +
 
 +
{| 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 TokenResult
 
  {
 
  {
 
     public int ErrorCode;
 
     public int ErrorCode;
 
     public string Token;
 
     public string Token;
  }
+
  }</syntaxhighlight>
</nowiki>
+
|}
где
+
<br />
* ErrorCode - код результата;
+
* '''ErrorCode''' - код результата;
* Token - идентификатор аутентификации.
+
* '''Token''' - идентификатор аутентификации.
  
===Проверка заявки (метод CheckReservation)===
+
===Проверка заявки (метод «CheckReservation»)===
  
 
====Описание метода====
 
====Описание метода====
  
Данный метод предназначен для проверки наличия заявки в БД и определения ее стоимости.
+
Данный метод предназначен для ''проверки наличия заявки'' в БД и определения ''ее стоимости''.
  
 
====Сигнатура метода====  
 
====Сигнатура метода====  
  
public AmountSum CheckReservation(string userToken, string dgCode)
+
<code>public AmountSum CheckReservation(string userToken, string dgCode)</code>
  
 
====Описание принимаемых методом параметров====
 
====Описание принимаемых методом параметров====
  
* userToken - идентификатор аутентификации, полученный при вызове метода GetUserToken;
+
* '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
* dgCode - строковая переменная, представляющая собой код проверяемой путевки.
+
* '''dgCode''' - строковая переменная, представляющая собой ''код проверяемой путевки''.
  
 
====Возвращаемые значения====
 
====Возвращаемые значения====
  
Метод возвращает результат своей работы в виде класса AmountSum. Корректность результата проверяется значением поля ErrorCode данного класса:
+
Метод возвращает результат своей работы в виде класса '''AmountSum'''. Корректность результата проверяется значением поля '''ErrorCode''' данного класса:
 +
 
 +
* '''0''' – результат корректный, в полях возвращены корректные значения;
 +
* '''1''' – заявка не найдена в БД;
 +
* '''2''' – внутренняя ошибка;
 +
* '''3''' – заявка была аннулирована;
 +
* '''4''' – путевка уже оплачена;
 +
* '''6''' – некорректный или устаревший идентификатор аутентификации (token);
 +
* '''8''' – запрещено создавать платеж по путевке, так как есть платежи с типами, не указанными в настройке '''allowedPayments''';
 +
* '''9''' – запрещено создавать платеж по путевке, так как покупатель путевки не указан в настройке '''allowedPartnerKeys''';
 +
* '''10''' – путевка имеет недопустимый статус, т.е. статус путевки (поле DG_SOR_CODE) не содержится в перечислении допустимых статусов настройки конфига PaymentsStatuses;
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
 +
Описание класса:
 +
 
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
  
* 0 – результат корректный, в полях возвращены корректные значения;
+
|- style="background-color:#F2F2F2"
* 1 – заявка не найдена в БД;
+
|- style="vertical-align:text-top"
* 2 – внутренняя ошибка;
 
* 3 - заявка была аннулирована;
 
* 4 - путевка уже оплачена;
 
* 6 - некорректный или устаревший идентификатор аутентификации(token).
 
  
Ниже приводится описание класса.
+
| <syntaxhighlight lang="cpp">
<nowiki>public class AmountSum
+
public class AmountSum
 
     {
 
     {
 
         public double Amount
 
         public double Amount
Строка 224: Строка 436:
 
         public DateTime BeginTourDate
 
         public DateTime BeginTourDate
 
         public DateTime EndTourDate
 
         public DateTime EndTourDate
    }</nowiki>
+
        public String MainTouristFIO
 +
        /// <summary>
 +
        /// Название главной услуги тура
 +
        /// </summary>
 +
        public String BaseService
 +
 
 +
        // Количество туристов по путевке
 +
        public Nullable<Int32> ReservationTouristsCount
 +
 
 +
        /// <summary>
 +
        /// Тип путевки, определяемый по входящим в нее услугам
 +
        /// </summary>
 +
        public Nullable<ReservationType> ReservationType
 +
    }
  
* Amount - сумма к оплате в валюте тура;
+
public enum ReservationType
* RateCode - iso-код валюты тура;
+
    {
* NationalCurrencyPrice - сумма к оплате в национальной валюте;
+
        undefined,
* NationalRateCode - iso-код национальной валюты;
+
        /// <summary>
* ErrorCode - код результата;
+
        /// Турпакет (какой-то набор услуг)
* FilialKey - ключ филиала, который создал заявку;
+
        /// </summary>
* BeginTourDate - дата начала тура;
+
        tour,
* EndTourDate - дата окончания тура.
+
        /// <summary>
===Проведение платежа по заявке (метод CreatePayment)===
+
        /// Проживание
 +
        /// </summary>
 +
        residence,
 +
        transfer,
 +
        avia,
 +
        cruise,
 +
        insurance,
 +
        visa,
 +
        other
 +
    }
 +
   
 +
</syntaxhighlight>
 +
|}
 +
<br />
 +
* '''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 paymentId)
+
<code>public int CreatePayment(string userToken, DateTime date, Decimal sum, string currencyIsoCode, string reservationCode, string externalPaymentId)</code>
 +
 
 
====Описание принимаемых методом параметров====
 
====Описание принимаемых методом параметров====
  
* userToken - идентификатор аутентифкации;
+
* '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
* date – дата проведения платежа;
+
* '''date''' – дата проведения платежа;
* sum – сумма платежа;
+
* '''sum''' – сумма платежа;
* currencyIsoCode – ISO-код валюты, в которой осуществляется платеж;
+
* '''currencyIsoCode''' – ISO-код валюты, в которой осуществляется платеж;
* reservationCode – номер путевки;
+
* '''reservationCode''' – номер путевки;
* paymentId – идентификатор платежа во внешней системе.
+
* '''externalPaymentId''' – идентификатор платежа во внешней системе.
  
 
====Возвращаемые значения====
 
====Возвращаемые значения====
  
 
Данный метод возвращает целочисленное значение обозначающее результат выполнения операции:
 
Данный метод возвращает целочисленное значение обозначающее результат выполнения операции:
* 0 – операция выполнена успешно, платеж проведен;
+
* '''0''' – операция выполнена успешно, платеж проведен;
* 1 – заявка не найдена в БД;
+
* '''1''' – заявка не найдена в БД;
* 2 – внутренняя ошибка при создании платежа;
+
* '''2''' – внутренняя ошибка при создании платежа;
* 3 - заявка была аннулирована;
+
* '''3''' – заявка была аннулирована;
* 4 - путевка уже оплачена;
+
* '''4''' – путевка уже оплачена;
* 6 - некорректный или устаревший идентификатор аутентификации(token).
+
* '''6''' – некорректный или устаревший идентификатор аутентификации(token);
 +
* '''7''' – платеж с таким идентификатором уже существует;
 +
* '''8''' – по путевке есть платежи запрещенных типов;
 +
* '''9''' – проводка платежа по данному партнеру не разрешена;
 +
* '''10''' – ошибка подписи платежа или путевки;
 +
* '''11''' – нет прав на проверку лицензии;
 +
* '''12''' – срок действия лицензии истек.
  
 
При этом в БД создается платеж по выбранной путевке.
 
При этом в БД создается платеж по выбранной путевке.
  
 +
===Проверка существования платежа/информация по платежу (метод «GetPaymentInformation»)===
 +
====Описание метода====
 +
 +
Данный метод предназначен для проверки '''существования платежа''' и получения '''информации по платежу'''.<br />
 +
 +
Поведение метода зависит от значения настройки '''paymentInformationReturnEnabled'''.
 +
 +
====Сигнатура метода====
 +
<code>public PaymentInformationResult GetPaymentInformation(String userToken, String reservationCode, String externalPaymentId)</code>
 +
 +
====Описание принимаемых методом параметров====
 +
* '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]];
 +
* '''reservationCode''' – номер путевки;
 +
* '''externalPaymentId''' – идентификатор платежа во внешней системе.
 +
 +
====Возвращаемые значения====
 +
Метод возвращает результат своей работы в виде класса '''PaymentInformationResult'''. Корректность результата проверяется значением поля '''ErrorCode''' данного класса:
 +
 +
* '''0''' – результат корректный, в полях возвращены корректные значения;
 +
* '''2''' – внутренняя ошибка;
 +
* '''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 PaymentInformationResult
 +
{
 +
/// <summary>
 +
/// Признак наличия платеже
 +
/// </summary>
 +
public Boolean IsPaymentExists { get; set; }
 +
 +
/// <summary>
 +
/// Краткая информация по платежу
 +
/// </summary>
 +
public PaymentsShortInformation PaymentsShortInformation { get; set; }
 +
 +
/// <summary>
 +
/// Код ошибки
 +
/// </summary>
 +
public Int32 ErrorCode { get; set; }
 +
}
 +
</syntaxhighlight>
 +
|}
 +
 +
* '''IsPaymentExists''' - показывает, есть ли запрошенный платеж:
 +
** '''true''' - платеж с указанным идентификатором по указанной путевке существует.
 +
** '''false''' - запрошенного платежа нет.
 +
* '''PaymentsShortInformation''' - информация по платежу.
 +
Описание класса:
 +
 +
{| 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 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; }
 +
}
 +
</syntaxhighlight>
 +
|}
 +
<br />
 +
** '''InternalPaymentId''' - идентификатор платежа в системе ПК «Мастер-Тур» (поле '''PM_Id''' в таблице <code>'''[Payments]'''</code>);
 +
** '''DogovorCode''' - номер путевки;
 +
** '''PaymentSum''' - сумма к оплате;
 +
** '''PaymentNationalSum''' - сумма к оплате в национальной валюте;
 +
** '''PaymentRateISOCode''' - ISO-код валюты платежа;
 +
** '''CreateDate''' - дата и время создания платежа.
 +
* '''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-сервисы]]

Текущая версия на 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 - значение внутреннего курса валюты на текущую дату.