pinpad_impl.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. //
  2. // Created by LocalUser on 2019/1/7.
  3. //
  4. #include "pinpad_impl.h"
  5. #include "pinpad_httpans.h"
  6. #include <cstring>
  7. #include "log4vendor.h"
  8. PinPadClassImpl::PinPadClassImpl()
  9. :m_mode(0)
  10. {
  11. }
  12. PinPadClassImpl::~PinPadClassImpl()
  13. {
  14. }
  15. ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
  16. {
  17. ErrorCodeEnum err = Error_Succeed;
  18. SimulatorDevCategoryAns ans;
  19. err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans);
  20. LOG4VTM(INFO, "GetDevCategory err = " << err);
  21. strcpy(devCategory.szType, ans.szType.c_str());
  22. strcpy(devCategory.szModel, ans.szModel.c_str());
  23. strcpy(devCategory.szVendor, ans.szVendor.c_str());
  24. devCategory.eState = (DevStateEnum)ans.eState;
  25. devCategory.version.wMajor = ans.version.wMajor;
  26. devCategory.version.wMinor = ans.version.wMinor;
  27. devCategory.version.wRevision = ans.version.wRevision;
  28. devCategory.version.wBuild = ans.version.wBuild;
  29. return err;
  30. }
  31. ErrorCodeEnum PinPadClassImpl::Reset()
  32. {
  33. ErrorCodeEnum err = Error_Succeed;
  34. SimulatorCommonAns ans;
  35. err = SimulatorHttpFunction(EntityName, "Reset", ans);
  36. LOG4VTM(INFO, "Reset err = " << err);
  37. return err;
  38. }
  39. ErrorCodeEnum PinPadClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
  40. {
  41. ErrorCodeEnum err = Error_Succeed;
  42. SimulatorCommonAns ans;
  43. err = SimulatorHttpFunction(EntityName, "DevOpen", ans);
  44. LOG4VTM(INFO, "DevOpen err = " << err);
  45. return err;
  46. }
  47. ErrorCodeEnum PinPadClassImpl::DevClose()
  48. {
  49. ErrorCodeEnum err = Error_Succeed;
  50. SimulatorCommonAns ans;
  51. err = SimulatorHttpFunction(EntityName, "DevClose", ans);
  52. LOG4VTM(INFO, "DevClose err = " << err);
  53. return err;
  54. }
  55. ErrorCodeEnum PinPadClassImpl::KeyRead(BYTE &ch)
  56. {
  57. ErrorCodeEnum err = Error_Succeed;
  58. KeyReadAns ans;
  59. err = SimulatorHttpFunction(EntityName, "KeyRead", ans);
  60. LOG4VTM(INFO, "KeyRead err = " << err);
  61. if (err == Error_Succeed) {
  62. ch = (BYTE)ans.ch;
  63. }
  64. return err;
  65. }
  66. ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen)
  67. {
  68. ErrorCodeEnum err = Error_Succeed;
  69. SimulatorCommonAns ans;
  70. err = SimulatorHttpFunction(EntityName, "StartPinInput", ans);
  71. LOG4VTM(INFO, "StartPinInput err = " << err);
  72. return err;
  73. }
  74. ErrorCodeEnum PinPadClassImpl::StartPinInputConfirm(BYTE byLen)
  75. {
  76. ErrorCodeEnum err = Error_Succeed;
  77. SimulatorCommonAns ans;
  78. err = SimulatorHttpFunction(EntityName, "StartPinInputConfirm", ans);
  79. LOG4VTM(INFO, "StartPinInputConfirm err = " << err);
  80. return err;
  81. }
  82. ErrorCodeEnum PinPadClassImpl::StartPlainInput()
  83. {
  84. ErrorCodeEnum err = Error_Succeed;
  85. SimulatorCommonAns ans;
  86. err = SimulatorHttpFunction(EntityName, "StartPlainInput", ans);
  87. LOG4VTM(INFO, "StartPlainInput err = " << err);
  88. return err;
  89. }
  90. ErrorCodeEnum PinPadClassImpl::StopInput()
  91. {
  92. ErrorCodeEnum err = Error_Succeed;
  93. SimulatorCommonAns ans;
  94. err = SimulatorHttpFunction(EntityName, "StopInput", ans);
  95. LOG4VTM(INFO, "StopInput err = " << err);
  96. return err;
  97. }
  98. ErrorCodeEnum PinPadClassImpl::LoadMasterKey(MasterKeyParam masterKey)
  99. {
  100. ErrorCodeEnum err = Error_Succeed;
  101. SimulatorCommonAns ans;
  102. err = SimulatorHttpFunction(EntityName, "LoadMasterKey", ans);
  103. LOG4VTM(INFO, "LoadMasterKey err = " << err);
  104. return err;
  105. }
  106. ErrorCodeEnum PinPadClassImpl::LoadWorkingKey(WorkKeyParam wkKey)
  107. {
  108. ErrorCodeEnum err = Error_Succeed;
  109. SimulatorCommonAns ans;
  110. err = SimulatorHttpFunction(EntityName, "LoadWorkingKey", ans);
  111. LOG4VTM(INFO, "LoadWorkingKey err = " << err);
  112. return err;
  113. }
  114. ErrorCodeEnum PinPadClassImpl::ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN)
  115. {
  116. ErrorCodeEnum err = Error_Succeed;
  117. SimulatorCommonAns ans;
  118. err = SimulatorHttpFunction(EntityName, "ActiveWorkingKey", ans);
  119. LOG4VTM(INFO, "ActiveWorkingKey err = " << err);
  120. return err;
  121. }
  122. ErrorCodeEnum PinPadClassImpl::SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue)
  123. {
  124. ErrorCodeEnum err = Error_Succeed;
  125. SimulatorCommonAns ans;
  126. err = SimulatorHttpFunction(EntityName, "SetParam", ans);
  127. LOG4VTM(INFO, "SetParam err = " << err);
  128. return err;
  129. }
  130. ErrorCodeEnum PinPadClassImpl::EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  131. {
  132. ErrorCodeEnum err = Error_Succeed;
  133. EnDecryptInfoAns ans;
  134. err = SimulatorHttpFunction(EntityName, "EncryptData", ans);
  135. LOG4VTM(INFO, "EncryptData err = " << err);
  136. if (err == Error_Succeed) {
  137. destInfo.dwSize = ans.dwSize;
  138. memcpy(destInfo.data, ans.data.c_str(), ans.data.length() + 1);
  139. }
  140. return err;
  141. }
  142. ErrorCodeEnum PinPadClassImpl::MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  143. {
  144. ErrorCodeEnum err = Error_Succeed;
  145. EnDecryptInfoAns ans;
  146. err = SimulatorHttpFunction(EntityName, "MacEncrypt", ans);
  147. LOG4VTM(INFO, "MacEncrypt err = " << err);
  148. if (err == Error_Succeed) {
  149. destInfo.dwSize = ans.dwSize;
  150. memcpy(destInfo.data, ans.data.c_str(), ans.data.length() + 1);
  151. }
  152. return err;
  153. }
  154. ErrorCodeEnum PinPadClassImpl::GetPinBlock(PinBlock &block)
  155. {
  156. ErrorCodeEnum err = Error_Succeed;
  157. PinBlockAns ans;
  158. err = SimulatorHttpFunction(EntityName, "GetPinBlock", ans);
  159. LOG4VTM(INFO, "GetPinBlock err = " << err);
  160. if (err == Error_Succeed) {
  161. block.dwSize = ans.dwSize;
  162. memcpy(block.data, ans.data.c_str(), ans.data.length() + 1);
  163. }
  164. return err;
  165. }
  166. ErrorCodeEnum PinPadClassImpl::SetAccNo(AccountInfo accInfo)
  167. {
  168. ErrorCodeEnum err = Error_Succeed;
  169. SimulatorCommonAns ans;
  170. err = SimulatorHttpFunction(EntityName, "SetAccNo", ans);
  171. LOG4VTM(INFO, "SetAccNo err = " << err);
  172. return err;
  173. }
  174. ErrorCodeEnum PinPadClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
  175. {
  176. ErrorCodeEnum err = Error_Succeed;
  177. SimulatorDevErrInfoAns ans;
  178. err = SimulatorHttpFunction(EntityName, "GetLastErr", ans);
  179. LOG4VTM(INFO, "GetLastErr err = " << err);
  180. devErrInfo.dwErrMsgLen = ans.dwErrMsgLen;
  181. strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str());
  182. return err;
  183. }
  184. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
  185. {
  186. pOutDevAptObj = new PinPadClassImpl();
  187. if(pOutDevAptObj == NULL)
  188. {
  189. return Error_Resource;
  190. }
  191. cmb::log_init_config config;
  192. config.dev_name = "vendor_PinPad";
  193. #if defined(_MSC_VER)
  194. config.log_dir = ("C:\\rvc\\dbg\\");
  195. #else
  196. config.log_dir = ("/opt/rvc/dbg/");
  197. #endif //_MSC_VER
  198. std::string str;
  199. cmb::log4vendor::init(config, str);
  200. std::string tmpStr = GetSimulatorUrl();
  201. LOG4VTM(INFO, "URL = " << tmpStr.c_str());
  202. return Error_Succeed;
  203. }
  204. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
  205. {
  206. if(pInDevAptObj == NULL)
  207. {
  208. return Error_Param;
  209. }
  210. if(PinPadClassImpl* pTmp = dynamic_cast<PinPadClassImpl*>(pInDevAptObj))
  211. {
  212. delete pTmp;
  213. pTmp = NULL;
  214. return Error_Succeed;
  215. }
  216. return Error_Param;
  217. }
  218. #ifdef NEWER_COMPILER_WORKAROUNDS
  219. DEVICEBASE_API ErrorCodeEnum GetDevAdapterVersion(DevSoftVersion& retVesion)
  220. {
  221. retVesion.wMajor = retVesion.wMinor = retVesion.wBuild = retVesion.wRevision = 0;
  222. return Error_Succeed;
  223. }
  224. #endif // NEWER_COMPILER_WORKAROUNDS