Мастер-Тур(15):PaymentService

Материал из Megatec
Перейти к: навигация, поиск

Введение

Начиная с релиза 15.8 разработан сервис оплат (PaymentService), который нужен для проведения оплаты в ПК Мастер-Тур.
В этот сервис постепенно будут добавляться новые методы из Мастер-Центр оплат. На текущий момент реализован метод ДобавитьОплатуРассчитывать

Установка службы сервиса оплат

  • Скопировать папку PaymentService из дистрибутива на сервер. Служба PaymentService должна устанавливаться на компьютере, имеющем доступ к серверу баз данных, или на компьютере, который сам является сервером баз данных (установлен MS SQL Server).
  • Перед установкой службы сервиса оплат необходимо настроить конфигурационный файл appsettings.json.
Название Описание Настройка
1 Строка подключения Строка подключения к базе данных ПК «Мастер-Тур» указывается в секции ConnectionStrings.

Внимание!

  • Обратите внимание, что в целях безопасности необходимо ограничить доступ к этому конфигурационному файлу. Он должен быть доступен только для данного приложения.
  • Для корректной работы в поле User Id достаточно указать пользователя, привязанного к группе avServices в модуле Мастер-Администратор (обрабатывается с релиза 15.6).
  • Пароль пользователей системы, от которых работают службы и приложения, не должен содержать ни одного из следующих символов: < > " ' &
"MtDatabase": "Server=Server; Database=Database; User Id=User; Password=Password;"
2 Путь к службе сервиса оплат По умолчанию служба сервиса оплат использует порт 5010 и название PaymentService. Рекомендуется использование значений по умолчанию.

Внимание!
При смене порта необходимо также изменить порт в установочном скрипте _Install.cmd.

"applicationUrl": "http://*:5010",
"ApplicationName": "PaymentService",
3 Путь к службе MTS Необходимо указать адрес и порт к установленной службе MTS (для подписи проводимых платежей)
"SoapServiceAddress": "http://localhost:80/MTS",
  • Установка осуществляется запуском скрипта _Install.cmd от имени администратора. Запуск от имени администратора
  • При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта PaymentService.
  • В Службах Windows добавляется служба PaymentService.
  • Для удаления службы необходимо запустить скрипт _UnInstall.cmd от имени администратора. При этом будут удалены правила для входящих подключений.

Работа службы сервиса оплат

Добавить оплату (AddPayment)

Метод производит внесение оплаты в базу данных Мастер-Тур.

  • Формат запроса:
    • POST .../PaymentService/AddPayment?
  • Принимаемые параметры (* – обязательный):
    • PaymentOperation * – ключ типа операции (PO_Id из таблицы PaymentOperations)
    • PaymentSum * – сумма платежа в валюте платежа
    • CurrencyISOCode * – ISO код валюты (RA_ISOCode из таблицы Rates)
    • DogovorKey * – ключ путевки
    • DogovorCode – код путевки (отрабатывает, если не указан DogovorKey)
    • PaymentDate * – дата платежа (в формате yyyy-mm-dd
    • CourseDate – курс (если не указан, берется на дату платежа)
    • DocNumber – номер документа
    • ReceivedFrom – от кого получен платеж
    • PaymentFor – за что произведен платеж
    • PartnerKey – если платеж производиться партнеру, то этот ключ определяет конкретного партнера
    • NoDetails – детализация платежа (по умолчанию - false, детализация платежа будет создана)
  • Возвращаемый результат:
    • ключ платежа
Пример

Вызов метода AddPayment

POST http://localhost:5010/PaymentService/AddPayment?PaymentOperation=1&PaymentSum=100&CurrencyISOCode=RUB&DogovorCode=IS28070006&NoDetails=false? HTTP/1.1

Возвращаемый результат метода AddPayment

4455


Список прошедших заездов по турам (TourList)

Метод возвращает список туров, по которым в заданные даты были совершены заезды (то есть, есть оформленные путевки).

  • Формат запроса:
    • GET .../PaymentService/TourList?
  • Принимаемые параметры (* – обязательный):
    • dateFrom * – дата заезда с в формате yyyy.mm.dd
    • dateTo * – дата заезда по в формате yyyy.mm.dd
  • Возвращаемый результат:
    • tourProgramsId – ключ программы тура
    • tourName – название программы тура
    • dateBegin – массив дат заездов по указанному туру в заданный период
Пример

Вызов метода TourList

GET http://localhost:5010/PaymentService/TourList?dateFrom=2022.04.01&dateTo=2022.04.10

Возвращаемый результат метода TourList

[{
        "tourProgramsId": 100001232,
        "tourName": "Общая проверка системы",
        "dateBegin": [
            "03.04.2022",
            "05.04.2022"
        ]
    }, {
        "tourProgramsId": 100001247,
        "tourName": "Тур в Кострому",
        "dateBegin": [
            "01.04.2022",
            "03.04.2022",
            "05.04.2022"
         ]
    }
]


Финансовая информация по турам (TourFinInfo)

Метод возвращает детальную информацию по услугам и оплатам по туру.

  • Формат запроса:
    • GET .../PaymentService/TourFinInfo?
  • Принимаемые параметры (* – обязательный):
    • tourProgramsId * – ключ программы тура
    • tourDate * – дата заезда по туру в формате yyyy.mm.dd
  • Возвращаемый результат:
    • tourName – название программы тура
    • arrivalDate – дата заезда по туру
    • touristCount – общее количество туристов по путевкам
    • payed – сумма оплат от покупателей по всем путевкам в национальной валюте
    • services – массив услуг (группировка по классу услуг)
      • serviceType – название класса услуги
      • serviceName – название услуги
      • serviceTouristCount – количество туристов, пользующихся услугой по всем путевкам
      • partner – поставщик по услуге
      • netto – стоимость нетто по всем путевкам по каждой услуге
      • brutto – стоимость брутто по всем путевкам по каждой услуге
Пример

Вызов метода TourFinInfo

GET http://localhost:5010/PaymentService/TourFinInfo?tourProgramsId=100001232&tourDate=2022.04.05

Возвращаемый результат метода TourFinInfo

{
    "tourName": "Общая проверка системы",
    "arrivalDate": "05.04.2022",
    "touristCount": 50,
    "payed": "350400 RUB",
    "services": [{
            "serviceType": "Авиаперелет",
            "serviceName": "А_П::Варшава/Канкун/3G5656, WAW-VIE, 05:50-08:50/C Бизнес класс",
            "serviceTouristCount": 50,
            "partner": "Партнер",
            "netto": "100000,00 RUB",
            "brutto": "120000,00RUB"
        }, 
            "serviceType": "Отель/Круиз",
            "serviceName": "HOTEL::Канкун/Sheraton-1*,7 ночей/Double(Standart),2 взр./AI Шведский стол",
            "serviceTouristCount": 50,
            "partner": "Партнер",
            "netto": "200000,00 RUB",
            "brutto": "230000,00 RUB"
        }, 
            "serviceType": "Авиаперелет",
            "serviceName": "А_П::Канкун/Варшава/AF3444, VIE-WAW, 15:50-18:50/C Бизнес класс",
            "serviceTouristCount": 50,
            "partner": "Партнер",
            "netto": "0,00 RUB",
            "brutto": "0,00 RUB"
        }
    ]
}


Информация по туристу, выводимая по ключу туриста (SelectTouristInfoByKey)

Метод возвращает детальную информацию по туристу, выводимую по ключу туриста.

  • Формат запроса:
    • GET .../PaymentService/SelectTouristInfoByKey?
  • Принимаемые параметры (* – обязательный):
    • key * – ключ туриста
  • Возвращаемый результат:
    • key – ключ туриста
    • isMain – признак главного туриста
    • ageType – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
    • sex – пол туриста (0 – мужской, 1 – женский)
    • firstName – имя (лат)
    • lastName – фамилия (лат)
    • patronymic – отчество (лат)
    • firstNameRus – имя (рус)
    • lastNameRus – фамилия (рус)
    • patronymicRus – отчество (рус)
    • phone – телефон
    • email – e-mael
    • birthDay – дата рождения
    • birthPlace – место рождения
    • citizen – гражданство
    • internationalPassportSer – серия загранпаспорта
    • internationalPassportNum – номер загранпаспорта
    • internationalPassportDate – дата выдачи загранпаспорта
    • internationalPassportDateEnd – дата окончания загранпаспорта
    • internationalPassportByWhom – кем выдан загранпаспорт
    • nationalPassportSer – серия паспорта
    • nationalPassportNum – номер паспорта
    • nationalPassportDate – дата выдачи паспорта
    • nationalPassportByWhom – кем выдан паспорт
    • postIndex – индекс
    • city – город
    • street – улица
    • build – дом
    • flat – квартира
    • citizenID – ID туриста
Пример

Вызов метода SelectTouristInfoByKey

POST http://localhost:5010/PaymentService/SelectTouristInfoByKey?key=111125

Возвращаемый результат метода SelectTouristInfoByKey

{
    "key": 111125,
    "isMain": 1,
    "ageType": 0,
    "sex": 0,
    "firstName": "Ivan",
    "lastName": "Ivanov",
    "patronymic": "Ivanovich",
    "firstNameRus": "Иван",
    "lastNameRus": "Иванов",
    "patronymicRus": "Иванович",
    "phone": "+79991234567",
    "email": "ivan@mail.ru",
    "birthDay": "01.02.1980",
    "birthPlace": "Москва",
    "citizen": "Россия",
    "internationalPassportSer": "1111",
    "internationalPassportNum": "222222",
    "internationalPassportDate": "01.05.2022",
    "internationalPassportDateEnd": "01.05.2027",
    "internationalPassportByWhom": "Отделом УФМС год. Москвы",
    "nationalPassportSer": "11",
    "nationalPassportNum": "6665544",
    "nationalPassportDate": "01.05.2030",
    "nationalPassportByWhom": "УФМС 52",
    "postIndex": "151515",
    "city": "Москва",
    "street": "Ленина",
    "build": "5",
    "flat": "2",
    "citizenID": "123456789"
}


Информация по туристам, выводимая по номеру путевки (SelectTouristsByDogovorKey)

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

  • Формат запроса:
    • GET .../PaymentService/SelectTouristsByDogovorKey?
  • Принимаемые параметры (* – обязательный):
    • dgCode * – номер путевки
  • Возвращаемый результат:
    • key – ключ туриста
    • isMain – признак главного туриста
    • ageType – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
    • sex – пол туриста (0 – мужской, 1 – женский)
    • firstName – имя (лат)
    • lastName – фамилия (лат)
    • patronymic – отчество (лат)
    • firstNameRus – имя (рус)
    • lastNameRus – фамилия (рус)
    • patronymicRus – отчество (рус)
    • phone – телефон
    • email – e-mael
    • birthDay – дата рождения
    • birthPlace – место рождения
    • citizen – гражданство
    • internationalPassportSer – серия загранпаспорта
    • internationalPassportNum – номер загранпаспорта
    • internationalPassportDate – дата выдачи загранпаспорта
    • internationalPassportDateEnd – дата окончания загранпаспорта
    • internationalPassportByWhom – кем выдан загранпаспорт
    • nationalPassportSer – серия паспорта
    • nationalPassportNum – номер паспорта
    • nationalPassportDate – дата выдачи паспорта
    • nationalPassportByWhom – кем выдан паспорт
    • postIndex – индекс
    • city – город
    • street – улица
    • build – дом
    • flat – квартира
    • citizenID – ID туриста
Пример

Вызов метода SelectTouristsByDogovorKey

POST http://localhost:5010/PaymentService/SelectTouristsByDogovorKey?dgCode=AU20050005

Возвращаемый результат метода SelectTouristsByDogovorKey

{
    "key": 111125,
    "isMain": 1,
    "ageType": 0,
    "sex": 0,
    "firstName": "Ivan",
    "lastName": "Ivanov",
    "patronymic": "Ivanovich",
    "firstNameRus": "Иван",
    "lastNameRus": "Иванов",
    "patronymicRus": "Иванович",
    "phone": "+79991234567",
    "email": "ivan@mail.ru",
    "birthDay": "01.02.1980",
    "birthPlace": "Москва",
    "citizen": "Россия",
    "internationalPassportSer": "1111",
    "internationalPassportNum": "222222",
    "internationalPassportDate": "01.05.2022",
    "internationalPassportDateEnd": "01.05.2027",
    "internationalPassportByWhom": "Отделом УФМС год. Москвы",
    "nationalPassportSer": "11",
    "nationalPassportNum": "6665544",
    "nationalPassportDate": "01.05.2030",
    "nationalPassportByWhom": "УФМС 52",
    "postIndex": "151515",
    "city": "Москва",
    "street": "Ленина",
    "build": "5",
    "flat": "2",
    "citizenID": "123456789"
}