Skip to content

Repository files navigation

FarcardNet

Это решение для библиотеки позволяющей писать плагины на языке c# без понимания как это все работает в нативном коде для приложения связи с карточными системами Farcard компании Ucs(Rkeeper)

Данное решение появилос в связи с многочисленными запросами на написание таких библиотек а так же из за разбросанной в разных местах документации

Как Это работает:

			    |    FarcardContract       |
			    |      /        \	       |
|Касса Rkeeper|->|Farcard|->|FarcardNet|->|плагин на c#| 

Описание официальной документации
Так же в проекте FarcardContract приложены файлы:
Extdll5.txt описание взяимодействия с Farcard 5 версии(пока не реализовано)
Extdll6.txt описание взаимодействия с Farcard 6 версии
TRRESPONCE.txt описание ответов в виде xml на проведение транзакции в функции TransactionsEx
Так же описания будут дополнятся в процессе нахождения новой информации и структурирования существующей


Решение содержит несколько проектов:

1 FarсardContract

Это проект библиотеки c# имеющий в себе:

  • Все необходимые описанные объекты данных для использования в функциях.
  • Описание интерфейса со всеми функциями используемые в Farcard6 (будет дополнятся для других версий)
  • Фабрику для загрузки плагина по имени библиотеки соделжащего плагин(используется технология Mef)
  • Делегаты для использования в Farcard6 (Будет дополнятся для других версий)
  • Дополнительные объекты DTO для обмена по Http
  • Универсальные классы логгера и настроек для реализации плагинов
  • Реализацию интерфейса в виде Demo плагина
  • Дополнительные расширения

2 FarcardNet

Это проект библиотеки на с++ которая используется в Farcard как библиотека ExtDll (пока реализовано для версии 6)
В настройках данной библиотеки указывается путь до плагина написанного на c# с включенной зависимостью от библиотеки FarcardContract


3 Farcards

Это проект тестового приложения для загрузки и выполнения основных методов в плагинах(сделан для отладки плагинов глазками при написании)

4 HttpFarcardService

Это проект службы для получения запросов по Http в виде Xml и json и перенаправление их в плагины с включенной зависимостью от библиотеки FarcardContract
Службу можно запустить в консольном режиме либо установить в качестве службы Windows
Для установки или удаления нужно запустить приложение с параметрами (-i или -install для установки) или (-u или -uninstall для удаления) Так же можно создать альтернативное название службы с параметром -n или -name

Запросы и ответы для обмена в формате xml описаны тут
!!!Важно реализованы не все методы а именно:

  • 1.GetCardInfoEx
  • 2.TransactionsEx
  • 3.GetCardImageEx
  • 4.FindEmail

Oстальные методы в процессе реализации Описание запросов в виде json:


  • 1.GetCardInfoEx Post

Пример тела запросa: {"Card":1,"Restaurant":1,"UnitNo":1,"InpBuf":null,"InpKind":0}

где
Card - код карты тип число (int64)
Restaurant - код ресторана тип число (UInt32)
UnitNo - номер кассы тип число (UInt32)
InpBuf - строка информации от кассы в формате Base64 исходный тип (массив байт)
InpKind - тип передаваемой информации от кассы

пример тела ответа: {"Result":0,"CardInfo":{"Sieze":0,"Deleted":0,"Grab":0,"StopDate":0,"Holy":0,"Manager":0,"Locked":0,"WhyLock":"","Holder":"Тестовый клиент","PersonID":1234,"Account":1234,"Unpay":0,"Bonus":5,"Discount":99,"DiscLimit":900000.0,"Summa":1000.05,"Sum2":200.0,"Sum3":300.1,"Sum4":400.0,"Sum5":500.0,"Sum6":600.0,"Sum7":700.0,"Sum8":800.0,"DopInfo":"Тестовая информация","ScrMessage":"Тестовая информация для экрана","PrnMessage":"Тестовая информация для печати"},"OutBuf":null,"OutKind":0}

где
Result - результат запроса, 0 карта найдена 1 карта не найдена
CardInfo - это объект информации по карте согласно описания в файле Extdll6.txt проекта FarcardContract функции GetcardInfoEx
OutBuf - строка информации для кассы в формате Base64 исходный тип (массив байт)
OutKind - тип передаваемой информации для кассы


  • 2 TransactionsEx Post

Пример тела запроса: {"Transactions":[{"Sieze":0,"Card":1,"PersonID":1011,"Account":1001,"Kind":1,"Summa":100.0,"Restaurant":1,"RKDate":"2023-02-12T00:00:00","RKUni":1,"RKCheck":1,"VatSumA":0.0,"VatPrcA":0.0,"VatSumB":0.0,"VatPrcB":0.0,"VatSumC":0.0,"VatPrcC":0.0,"VatSumD":0.0,"VatPrcD":0.0,"VatSumE":0.0,"VatPrcE":0.0,"VatSumF":0.0,"VatPrcF":0.0,"VatSumG":0.0,"VatPrcG":0.0,"VatSumH":0.0,"VatPrcH":0.0},{"Sieze":0,"Card":2,"PersonID":1012,"Account":1002,"Kind":2,"Summa":100.0,"Restaurant":1,"RKDate":"2023-02-12T00:00:00","RKUni":1,"RKCheck":1,"VatSumA":0.0,"VatPrcA":0.0,"VatSumB":0.0,"VatPrcB":0.0,"VatSumC":0.0,"VatPrcC":0.0,"VatSumD":0.0,"VatPrcD":0.0,"VatSumE":0.0,"VatPrcE":0.0,"VatSumF":0.0,"VatPrcF":0.0,"VatSumG":0.0,"VatPrcG":0.0,"VatSumH":0.0,"VatPrcH":0.0}],"InpBuf":null,"InpKind":0}

где
Transactions - список объектов описывающих одну транзакцию
InpBuf - строка информации от кассы в формате Base64 исходный тип (массив байт)
InpKind - тип передаваемой информации от кассы

Пример тела ответа: {"Result":0,"OutBuf":null,"OutKind":0}

где
Result - результат запроса, 0 все транзакции выполнены 1 при выполнении какой то транзакции произошла ошибка
OutBuf - строка информации для кассы в формате Base64 исходный тип (массив байт)
OutKind - тип передаваемой информации для кассы


  • 3 GetCardImageEx Post
    поддерживаемые изображения BMP, JPEG, GIF.

Пример тела запроса: {"CardCode":1}

где
CardCode код карты тип число (int64)

Пример тела ответа при ошибке: {"ErrorText":"Card or image not found"}

где
ErrorText Описание ошибки

В случае успешного ответа тип контента будет не json а (image/[bmp,jpg or jpeg,gif])


  • 4.FindEmail Post

Пример тела запроса: {"Email":"test@test.ru"}

где
Email строка содержащее email для поиска

Пример тела ответа: {"Result":0,"Account":1234,"CardCode":1,"Name":"Тестовый клиент"}

где
Result - результат запроса, 0 карта найдена 1 карта не найдена
Account - номер счета клиента для проведения транзакции CardCode - номер карты клиента Name - Имя клиента


Также реализованы 2 плагина для примера реализаций плагинов

TunnelFarcard6

Плагин обертка над библиотеками ExtDll для использования уже сушествующих библиотек в древовидной структуре


HttpFarcard6Client

Плагин повторяющий работу библотеки FarcardHttp, был написан в качестве тестового плагина для написания и отладки HttpFarcardService Передает в теле запроса объекты как в Xml виде так и в json

About

.NET Interop library for UCS r_keeper FarCards (v5/v6). Написание плагинов для карточных систем r-keeper на C#.

Topics

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages