Платежные web-сервисы: Сервис интеграции с платежной системой (оплата через терминалы) — различия между версиями
[непроверенная версия] | [досмотренная версия] |
Achkasov (обсуждение | вклад) (→Настройки в файле WEB.CONFIG) |
Biryukov (обсуждение | вклад) |
||
(не показаны 74 промежуточные версии 7 участников) | |||
Строка 16: | Строка 16: | ||
==Введение== | ==Введение== | ||
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора. | Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора. | ||
− | Модуль совместим со следующими платежными системами: | + | Модуль совместим со следующими платежными системами (платежные шлюзы): |
− | * | + | * Appex |
− | * | + | * Assist |
− | + | * Chronopay | |
− | + | * Contact | |
− | + | * PayTravel | |
+ | * Qiwi | ||
+ | * TourPay | ||
==Установка== | ==Установка== | ||
− | Для установки ''' | + | Для установки '''Сервис интеграции с платежной системой''' нужно создать директорию '''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''' является <code>C:/Inetpub/wwwroot</code>. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:<br /> | По умолчанию корневым каталогом '''IIS''' является <code>C:/Inetpub/wwwroot</code>. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:<br /> | ||
− | 1 Зайти в '''Пуск''' ('''Start''') → '''Настройки''' ('''Settings''') → '''Панель управления''' ('''Control Panel''') → '''Администрирование''' ('''Administrative Tools''') | + | 1 Зайти в '''Пуск''' ('''Start''') → '''Настройки''' ('''Settings''') → '''Панель управления''' ('''Control Panel''') → '''Администрирование''' ('''Administrative Tools''')<br /> |
[[Файл: am_745.png|x500px|Панель управления]]<br /> | [[Файл: am_745.png|x500px|Панель управления]]<br /> | ||
<br /> | <br /> | ||
Строка 48: | Строка 54: | ||
==Настройка== | ==Настройка== | ||
− | После установки ''сервис | + | После установки ''сервис интеграции'' (например «Сервис интеграции с платежной системой Название_Системы») доступен по адресу<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 /> |
− | | | + | На выбранную платежную систему должна быть выписана лицензия. |
− | * | + | | Название платежной системы: |
− | * | + | * Appex |
− | * | + | * Assist |
− | + | * 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 | + | <add key="TokenExpireTime" value="10" /> |
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 103: | Строка 113: | ||
| 4 | | 4 | ||
| Включение режима '''записи нового платежа''' в систему '''«Мастер-Финанс»'''. При этом в ПК «Мастер-Тур» платежи '''не сохраняются'''. | | Включение режима '''записи нового платежа''' в систему '''«Мастер-Финанс»'''. При этом в ПК «Мастер-Тур» платежи '''не сохраняются'''. | ||
− | | | + | | |
− | + | * '''true''' - включена запись платежей в «Мастер-Финанс»; | |
+ | * '''false''' или '''отсутствие настройки''' - выключает запись платежей в «Мастер-Финанс». | ||
|<syntaxhighlight lang="xml" enclose="div"> | |<syntaxhighlight lang="xml" enclose="div"> | ||
<add key="AddPaymentsToMasterFinance" value="true"/> | <add key="AddPaymentsToMasterFinance" value="true"/> | ||
Строка 114: | Строка 125: | ||
| Настройка, определяющая '''дату''', на которую должен '''подбираться курс валют''' для пересчета '''суммы к оплате'''. | | Настройка, определяющая '''дату''', на которую должен '''подбираться курс валют''' для пересчета '''суммы к оплате'''. | ||
| | | | ||
− | + | <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"> | |<syntaxhighlight lang="xml" enclose="div"> | ||
<add key="courseExchangeDate" value="orderdate"/> | <add key="courseExchangeDate" value="orderdate"/> | ||
Строка 125: | Строка 143: | ||
| 6 | | 6 | ||
− | | Настройка, позволяющая '''включить механизм''' [[#Логирование|логирования]]. | + | | Настройка, позволяющая '''включить механизм''' [[#Логирование|логирования]]. <br /> |
− | | | + | (Начиная с версии 2009.2.20.31, данная настройка не используется). |
− | + | | | |
+ | * '''true''' — система логирования ''включена''; | ||
+ | * '''false''' или '''отсутствие настройки''' — логирование ''выключено''. | ||
|<syntaxhighlight lang="xml" enclose="div"> | |<syntaxhighlight lang="xml" enclose="div"> | ||
<add key="UseLog" value="true"/> | <add key="UseLog" value="true"/> | ||
Строка 147: | Строка 167: | ||
| 8 | | 8 | ||
| Настройка определяющая '''типы платежей''', при которых разрешена '''оплата путевки через сервис'''. | | Настройка определяющая '''типы платежей''', при которых разрешена '''оплата путевки через сервис'''. | ||
− | | '''Типы платежей''' - поле '''PT_KEY''' из таблицы <code>'''[Paymenttype]'''</code> (через запятую). | + | | '''Типы платежей''' через запятую - поле '''PT_KEY''' из таблицы <code>'''[Paymenttype]'''</code> (через запятую). |
|<syntaxhighlight lang="xml" enclose="div"> | |<syntaxhighlight lang="xml" enclose="div"> | ||
<add key="allowedPaymentTypes" value="4"/> | <add key="allowedPaymentTypes" value="4"/> | ||
Строка 156: | Строка 176: | ||
| 9 | | 9 | ||
| Настройка, указывающая что в качестве '''лица''', от которого '''принята оплата''' надо всегда использовать '''представителя агентства''' ('''DUP_USER'''). | | Настройка, указывающая что в качестве '''лица''', от которого '''принята оплата''' надо всегда использовать '''представителя агентства''' ('''DUP_USER'''). | ||
− | | | + | | |
− | + | * '''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''' - '''полную''' или '''сокращенную'''. |
− | | | + | | |
− | + | * '''true''' - возвращается '''полная информация''' по платежу. | |
+ | * '''false''' или '''отсутствии настройки''' - возвращается только информация о том, '''есть ли такой платеж''' по путевке. | ||
|<syntaxhighlight lang="xml" enclose="div"> | |<syntaxhighlight lang="xml" enclose="div"> | ||
<add key="paymentInformationReturnEnabled" value="true"/> | <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> | </syntaxhighlight> | ||
|} | |} | ||
Строка 179: | Строка 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=" | + | <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"> | ||
Строка 197: | Строка 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> | ||
− | < | + | <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 /> | ||
==Работа в системе== | ==Работа в системе== | ||
Строка 258: | Строка 410: | ||
* '''1''' – заявка не найдена в БД; | * '''1''' – заявка не найдена в БД; | ||
* '''2''' – внутренняя ошибка; | * '''2''' – внутренняя ошибка; | ||
− | * '''3''' | + | * '''3''' – заявка была аннулирована; |
− | * '''4''' | + | * '''4''' – путевка уже оплачена; |
− | * '''6''' | + | * '''6''' – некорректный или устаревший идентификатор аутентификации (token); |
− | * '''8''' | + | * '''8''' – запрещено создавать платеж по путевке, так как есть платежи с типами, не указанными в настройке '''allowedPayments'''; |
+ | * '''9''' – запрещено создавать платеж по путевке, так как покупатель путевки не указан в настройке '''allowedPartnerKeys'''; | ||
+ | * '''10''' – путевка имеет недопустимый статус, т.е. статус путевки (поле DG_SOR_CODE) не содержится в перечислении допустимых статусов настройки конфига PaymentsStatuses; | ||
+ | * '''11''' – нет прав на проверку лицензии; | ||
+ | * '''12''' – срок действия лицензии истек. | ||
Описание класса: | Описание класса: | ||
Строка 280: | Строка 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> | ||
|} | |} | ||
Строка 291: | Строка 480: | ||
* '''FilialKey''' - ключ филиала, который создал заявку; | * '''FilialKey''' - ключ филиала, который создал заявку; | ||
* '''BeginTourDate''' - дата начала тура; | * '''BeginTourDate''' - дата начала тура; | ||
− | * '''EndTourDate''' - дата окончания тура | + | * '''EndTourDate''' - дата окончания тура; |
− | * '''MainTouristFIO''' - фамилия и инициалы главного туриста. | + | * '''MainTouristFIO''' - фамилия и инициалы главного туриста; |
+ | Значения, возвращаемые только при включенной настройке '''allowToGetReservationInfo''': | ||
+ | * '''BaseService''' - название главной услуги; | ||
+ | * '''ReservationTouristsCount''' - количество туристов по путевке; | ||
+ | * '''ReservationType''' - значение типа предоставляемой услуги, возможные значения: | ||
+ | ** '''tour''' - турпакет; | ||
+ | ** '''residence''' - проживание; | ||
+ | ** '''transfer''' - наземная перевозка; | ||
+ | ** '''avia''' - авиа перелёт; | ||
+ | ** '''cruise''' - круиз; | ||
+ | ** '''insurance''' - страхование; | ||
+ | ** '''visa''' - виза; | ||
+ | ** '''other''' - прочие услуги. | ||
===Проведение платежа по заявке (метод «CreatePayment»)=== | ===Проведение платежа по заявке (метод «CreatePayment»)=== | ||
Строка 305: | Строка 506: | ||
====Описание принимаемых методом параметров==== | ====Описание принимаемых методом параметров==== | ||
− | * '''userToken''' - идентификатор | + | * '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]]; |
* '''date''' – дата проведения платежа; | * '''date''' – дата проведения платежа; | ||
* '''sum''' – сумма платежа; | * '''sum''' – сумма платежа; | ||
Строка 318: | Строка 519: | ||
* '''1''' – заявка не найдена в БД; | * '''1''' – заявка не найдена в БД; | ||
* '''2''' – внутренняя ошибка при создании платежа; | * '''2''' – внутренняя ошибка при создании платежа; | ||
− | * '''3''' | + | * '''3''' – заявка была аннулирована; |
− | * '''4''' | + | * '''4''' – путевка уже оплачена; |
− | * '''6''' | + | * '''6''' – некорректный или устаревший идентификатор аутентификации(token); |
− | * '''7''' | + | * '''7''' – платеж с таким идентификатором уже существует; |
+ | * '''8''' – по путевке есть платежи запрещенных типов; | ||
+ | * '''9''' – проводка платежа по данному партнеру не разрешена; | ||
+ | * '''10''' – ошибка подписи платежа или путевки; | ||
+ | * '''11''' – нет прав на проверку лицензии; | ||
+ | * '''12''' – срок действия лицензии истек. | ||
При этом в БД создается платеж по выбранной путевке. | При этом в БД создается платеж по выбранной путевке. | ||
Строка 336: | Строка 542: | ||
====Описание принимаемых методом параметров==== | ====Описание принимаемых методом параметров==== | ||
− | * '''userToken''' - идентификатор | + | * '''userToken''' - идентификатор аутентификации, полученный при вызове метода [[#Аутентификация (метод GetUserToken)|GetUserToken]]; |
* '''reservationCode''' – номер путевки; | * '''reservationCode''' – номер путевки; | ||
* '''externalPaymentId''' – идентификатор платежа во внешней системе. | * '''externalPaymentId''' – идентификатор платежа во внешней системе. | ||
Строка 345: | Строка 551: | ||
* '''0''' – результат корректный, в полях возвращены корректные значения; | * '''0''' – результат корректный, в полях возвращены корректные значения; | ||
* '''2''' – внутренняя ошибка; | * '''2''' – внутренняя ошибка; | ||
+ | * '''11''' – нет прав на проверку лицензии; | ||
+ | * '''12''' – срок действия лицензии истек. | ||
Описание классов: | Описание классов: | ||
Строка 428: | Строка 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: | + | [[Category:Платежные web-сервисы]] |
− |
Текущая версия на 16:39, 25 октября 2021
Версия статьи от 25-10-2021. Для перехода на версию статьи, соответствующую используемой Вами версии программы, нажмите ссылку в таблице ниже:
Более ранние версии: |
Содержание
- 1 Введение
- 2 Установка
- 3 Настройка
- 4 Подготовка данных
- 5 Логирование
- 6 Работа в системе
- 6.1 Аутентификация (метод «GetUserToken»)
- 6.2 Проверка заявки (метод «CheckReservation»)
- 6.3 Проведение платежа по заявке (метод «CreatePayment»)
- 6.4 Проверка существования платежа/информация по платежу (метод «GetPaymentInformation»)
- 6.5 Получение информации по заявке (метод «GetReservationInfo»)
- 6.6 Получение не аннулированных заявок (метод «GetUserReservations»)
- 6.7 Получение внутреннего курса валюты (метод «GetCurrentCurrencies»)
Введение
Данный модуль предназначен для проверки заявки и проведения платежа через платежную систему в базу туроператора. Модуль совместим со следующими платежными системами (платежные шлюзы):
- 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
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 | Определяет тип платежной системы при сохранении платежей.
Информация о типе платежной системы записывается в историю по путевке. |
Название платежной системы:
Внимание! По умолчанию данная настройка имеет значение none. Но с этим значением сервис работать не может. Для работы сервиса необходимо указать в ней одно из допустимых значений. |
<add key="PaymentSystem" value="TourPay"/>
|
3 | Определяет время действия идентификатора аутентифации (token). | Время действия (в минутах). | <add key="TokenExpireTime" value="10" />
|
4 | Включение режима записи нового платежа в систему «Мастер-Финанс». При этом в ПК «Мастер-Тур» платежи не сохраняются. |
|
<add key="AddPaymentsToMasterFinance" value="true"/>
|
5 | Настройка, определяющая дату, на которую должен подбираться курс валют для пересчета суммы к оплате. |
Обработка настройки, начиная с релиза 9220SP31.
Обработка настройки до релиза 9220SP31.
|
<add key="courseExchangeDate" value="orderdate"/>
|
6 | Настройка, позволяющая включить механизм логирования. (Начиная с версии 2009.2.20.31, данная настройка не используется). |
|
<add key="UseLog" value="true"/>
|
7 | Настройка определяющая филиал, с которым будет создан платеж. |
|
<add key="PaymentFilialSource" value="CurrentUser"/>
|
8 | Настройка определяющая типы платежей, при которых разрешена оплата путевки через сервис. | Типы платежей через запятую - поле PT_KEY из таблицы [Paymenttype] (через запятую).
|
<add key="allowedPaymentTypes" value="4"/>
|
9 | Настройка, указывающая что в качестве лица, от которого принята оплата надо всегда использовать представителя агентства (DUP_USER). |
|
<add key="useDupUserAsPayer" value="true"/>
|
10 | Настройка, определяющая какую информацию будет выводить метод GetPaymentInformation - полную или сокращенную. |
|
<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 выводить информацию по путевке. |
|
<add key="allowToGetReservationInfo" value="true"/>
|
14 | Определяет, будет ли метод 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 - дата и время создания платежа.
- InternalPaymentId - идентификатор платежа в системе ПК «Мастер-Тур» (поле PM_Id в таблице
- 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 - значение внутреннего курса валюты на текущую дату.