FarcardsNet

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# имеющий в себе:


3 Farcards

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

4 HttpFarcardService

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

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

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


где
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 - тип передаваемой информации для кассы


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

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

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


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

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

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

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


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

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

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


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

TunnelFarcard6

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


HttpFarcard6Client

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