ПрограмаЛояльності

Матеріал з expertsolution
Перейти до навігації Перейти до пошуку

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 - ознака активності

За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.