ПрограмаЛояльності
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 - ознака активності
За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.