ПрограмаЛояльності: відмінності між версіями
(Створена сторінка: =API ServioLoyaltyService=) |
|||
Рядок 1: | Рядок 1: | ||
=API ServioLoyaltyService= | =API ServioLoyaltyService= | ||
=Опис взаємодії= | |||
Взаємодія системи HMS Servio і Servio Restaurant із процесинговим центром відбуватиметься через звернення цих систем до WCF служби процесингу за протоколом JSON, кодування передавання даних UTF8, методом POST. | |||
Для цього протоколу всі типи і значення повинні передаватися в текстовому поданні. Тому необхідно використовувати такі формати для текстового представлення даних таких типів: | |||
1. datetime - строкове подання дати у форматі "yyyy-MM-dd HH:mm:ss" | |||
2. decimal - 18.2 - використовується округлення до 2х знаків після коми, як роздільник цілої та дробової частини виступає "." (крапка) | |||
3. int - стандартне десяткове строкове подання цілого числа | |||
4. string[N] - обмежений за розміром рядок, розмір рядка плаваючий від 0 до N символів. | |||
5. string - необмежений за розміром рядок, розмір рядка плаваючий від 0 до 8000 символів. | |||
6. bool - строкове представлення логічного типу, де "1" - істина (true), "0" - брехня (false) | |||
Приклад запиту і відповіді у форматі JSON: запит | |||
POST http://localhost:8000/ServioLoyaltyService/PayBonusesRequest | |||
Content-Type: application/json; charset=utf-8 | |||
Host: localhost:8000 | |||
Content-Length: 241 | |||
Connection: Keep-Alive | |||
{"MagneticCardID": "5", "Transactions":[{"Sum": "300.3", "ServiceGroupID": "3"}]} | |||
результат HTTP/1.1 200 OK | |||
Content-Length: 186 | |||
Content-Type: application/json; charset=utf-8 | |||
Сервер: Microsoft-HTTPAPI/2.0 | |||
Дата: Wed, 06 Sep 2023 11:58:56 GMT | |||
{"Error":null,"MagneticCardID":5,"BonusBalance":0.00,"UserName":"666 | |||
666","Transactions":[{"BonusesToPay":0.00,"ServiceGroupID":3,"Sum":300.3,"TransactionDate": | |||
"2023-09-06 14:58:56"}]} | |||
=Функції протоколу= | |||
Протокол обміну представлений у вигляді окремих відкритих функцій, до яких може будьякий клієнт POS системи. | |||
==Get_eWallet_Info== | |||
Метод за номером магнітної картки та\або ідентифікатором компанії та\або кодом бронювання та\або коротким номером картки з програмою лояльності повертає | |||
інформацію щодо картки, учасника, якому вона належить, транзакцій і налаштувань програми лояльності. | |||
Метод підходить для POS і HMS. | |||
'''Вхідні параметри:''' | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• int? CompanyAccount - ідентифікатор компанії HMS Servio. | |||
• string[20] AuthCode - код бронювання. (Не впливає на виконання запиту) | |||
• string[20] SynkLoyaltyCode - код синхронізації програми лояльності. (Не впливає на виконання запиту) | |||
• string[50] CardNumber - повний номер картки, за повним збігом якого шукають магнітну картку, що належить учаснику програми лояльності. | |||
• string[30] ShortCardNumber - короткий номер картки, за повним збігом якого (за наявності) шукають магнітну картку, що належить учаснику програми лояльності. | |||
• string[30] PhoneNumber - номер телефону, перевіряє збіг за останніми 9 цифрами з контактом або компанією програмою лояльності | |||
• int? PersonID - ІД персони Результат функції: | |||
• string Error - опис помилки, що виникла | |||
• eWallet[] eWallets - масив описів електронних гаманців eWallet. Елементи масиву структури з такими полями: | |||
◦ int eWalletID - ID електронного гаманця o string[100] LoyaltyProgramName - назва програми лояльності | |||
(string.Empty) o string[50] BonusStatusName - назва статусу програми лояльності o decimal BonusBalance - поточний бонусний баланс електронного гаманця o decimal AccumulatedBonuses - поточна кількість накопичених бонусів електронного гаманця | |||
◦ string[50] DiscountStatusName - назва статусу програми лояльності o string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, потрібен для синхронізації знижки за прейскурантом, якщо гаманець відноситься до дисконтної програми і для нього заведений код прейскуранта. (string.Empty) | |||
◦ decimal DiscountTransactionsSum - сума всіх неанульованих транзакцій з урахуванням знижки, проведених для цього гаманця | |||
◦ string[20] ServioSynkCode - код синхронізації програми лояльності o int? CompanyAccount - ідентифікатор компанії HMS Servio. | |||
◦ string[30] MagneticCardShortNumber - короткий номер магнітної картки o string[30] MagneticCardFullNumber - довгий номер магнітної картки o decimal BonusSum - сума бонусів o decimal PaySum - сума на платіжній картці o decimal Credit - сума кредиту o decimal Accumulation - сума оборотів за карткою | |||
◦ bool IsPayCard - прапор, що визначає налаштування лояльності "Робота з грошовими коштами" | |||
◦ decimal ExtraMoneySum - сума екстра-грошей o bool IsSmartCard - ознака смарт карти (false) | |||
◦ string ShortCode - короткий номер магнітної картки o decimal DayLimit - ліміт списання за день | |||
◦ decimal WeekLimit - ліміт списання за тиждень o decimal MonthLimit - ліміт списання за місяць | |||
◦ decimal YearLimit - ліміт списання за рік o bool UsePayLimits - ознака використання лімітів списання (false) | |||
◦ bool UseCatLimits - ознака використання лімітів категорій (false) | |||
◦ datetime ValidityStart - дата початку дії картки/сертифіката o datetime Validity - дата закінчення дії картки/сертифіката o bool Issue - ознака Issued (false) | |||
◦ int Cardid - ІД картки | |||
◦ string Comment - коментар (string.Empty) | |||
◦ string Description - Примітка (string.Empty) | |||
◦ decimal Discount - розмір знижки за карткою (0) | |||
◦ string SynkLoyaltyCode - код лояльності з налаштувань програми лояльності | |||
◦ int RoomNightBalance - кількість безкоштовних номероночей учасника o int MagneticCardID - ідентифікатор картки | |||
◦ string UserName - ім'я власника | |||
◦ string MobilePhone - номер телефону | |||
◦ int DiscountGroupID - ідентифікатор дисконтної групи | |||
◦ bool IsBonusProgram - приналежність до бонусної системи | |||
◦ bool IsDiscountProgram - приналежність до дисконтної системи | |||
◦ bool IsActive - ознака активності | |||
За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. |
Версія за 08:08, 19 травня 2025
API ServioLoyaltyService
Опис взаємодії
Взаємодія системи HMS Servio і Servio Restaurant із процесинговим центром відбуватиметься через звернення цих систем до WCF служби процесингу за протоколом JSON, кодування передавання даних UTF8, методом POST. Для цього протоколу всі типи і значення повинні передаватися в текстовому поданні. Тому необхідно використовувати такі формати для текстового представлення даних таких типів:
1. datetime - строкове подання дати у форматі "yyyy-MM-dd HH:mm:ss" 2. decimal - 18.2 - використовується округлення до 2х знаків після коми, як роздільник цілої та дробової частини виступає "." (крапка) 3. int - стандартне десяткове строкове подання цілого числа 4. string[N] - обмежений за розміром рядок, розмір рядка плаваючий від 0 до N символів. 5. string - необмежений за розміром рядок, розмір рядка плаваючий від 0 до 8000 символів. 6. bool - строкове представлення логічного типу, де "1" - істина (true), "0" - брехня (false)
Приклад запиту і відповіді у форматі JSON: запит POST http://localhost:8000/ServioLoyaltyService/PayBonusesRequest Content-Type: application/json; charset=utf-8 Host: localhost:8000 Content-Length: 241 Connection: Keep-Alive {"MagneticCardID": "5", "Transactions":[{"Sum": "300.3", "ServiceGroupID": "3"}]} результат HTTP/1.1 200 OK Content-Length: 186 Content-Type: application/json; charset=utf-8 Сервер: Microsoft-HTTPAPI/2.0 Дата: Wed, 06 Sep 2023 11:58:56 GMT {"Error":null,"MagneticCardID":5,"BonusBalance":0.00,"UserName":"666 666","Transactions":[{"BonusesToPay":0.00,"ServiceGroupID":3,"Sum":300.3,"TransactionDate": "2023-09-06 14:58:56"}]}
Функції протоколу
Протокол обміну представлений у вигляді окремих відкритих функцій, до яких може будьякий клієнт POS системи.
Get_eWallet_Info
Метод за номером магнітної картки та\або ідентифікатором компанії та\або кодом бронювання та\або коротким номером картки з програмою лояльності повертає інформацію щодо картки, учасника, якому вона належить, транзакцій і налаштувань програми лояльності. Метод підходить для POS і HMS.
Вхідні параметри:
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • int? CompanyAccount - ідентифікатор компанії HMS Servio. • string[20] AuthCode - код бронювання. (Не впливає на виконання запиту) • string[20] SynkLoyaltyCode - код синхронізації програми лояльності. (Не впливає на виконання запиту) • string[50] CardNumber - повний номер картки, за повним збігом якого шукають магнітну картку, що належить учаснику програми лояльності. • string[30] ShortCardNumber - короткий номер картки, за повним збігом якого (за наявності) шукають магнітну картку, що належить учаснику програми лояльності. • string[30] PhoneNumber - номер телефону, перевіряє збіг за останніми 9 цифрами з контактом або компанією програмою лояльності • int? PersonID - ІД персони Результат функції: • string Error - опис помилки, що виникла • eWallet[] eWallets - масив описів електронних гаманців eWallet. Елементи масиву структури з такими полями: ◦ int eWalletID - ID електронного гаманця o string[100] LoyaltyProgramName - назва програми лояльності
(string.Empty) o string[50] BonusStatusName - назва статусу програми лояльності o decimal BonusBalance - поточний бонусний баланс електронного гаманця o decimal AccumulatedBonuses - поточна кількість накопичених бонусів електронного гаманця
◦ string[50] DiscountStatusName - назва статусу програми лояльності o string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, потрібен для синхронізації знижки за прейскурантом, якщо гаманець відноситься до дисконтної програми і для нього заведений код прейскуранта. (string.Empty) ◦ decimal DiscountTransactionsSum - сума всіх неанульованих транзакцій з урахуванням знижки, проведених для цього гаманця ◦ string[20] ServioSynkCode - код синхронізації програми лояльності o int? CompanyAccount - ідентифікатор компанії HMS Servio. ◦ string[30] MagneticCardShortNumber - короткий номер магнітної картки o string[30] MagneticCardFullNumber - довгий номер магнітної картки o decimal BonusSum - сума бонусів o decimal PaySum - сума на платіжній картці o decimal Credit - сума кредиту o decimal Accumulation - сума оборотів за карткою ◦ bool IsPayCard - прапор, що визначає налаштування лояльності "Робота з грошовими коштами" ◦ decimal ExtraMoneySum - сума екстра-грошей o bool IsSmartCard - ознака смарт карти (false) ◦ string ShortCode - короткий номер магнітної картки o decimal DayLimit - ліміт списання за день ◦ decimal WeekLimit - ліміт списання за тиждень o decimal MonthLimit - ліміт списання за місяць ◦ decimal YearLimit - ліміт списання за рік o bool UsePayLimits - ознака використання лімітів списання (false) ◦ bool UseCatLimits - ознака використання лімітів категорій (false) ◦ datetime ValidityStart - дата початку дії картки/сертифіката o datetime Validity - дата закінчення дії картки/сертифіката o bool Issue - ознака Issued (false) ◦ int Cardid - ІД картки ◦ string Comment - коментар (string.Empty) ◦ string Description - Примітка (string.Empty) ◦ decimal Discount - розмір знижки за карткою (0) ◦ string SynkLoyaltyCode - код лояльності з налаштувань програми лояльності ◦ int RoomNightBalance - кількість безкоштовних номероночей учасника o int MagneticCardID - ідентифікатор картки ◦ string UserName - ім'я власника ◦ string MobilePhone - номер телефону ◦ int DiscountGroupID - ідентифікатор дисконтної групи ◦ bool IsBonusProgram - приналежність до бонусної системи ◦ bool IsDiscountProgram - приналежність до дисконтної системи ◦ bool IsActive - ознака активності
За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.