Просмотр исходного кода

#IQRV #comment:错误码和话术细化改动。pinpad校验间隔调整为200ms

陈纪林80310970 6 месяцев назад
Родитель
Сommit
ee99df9aa6

+ 4 - 2
Module/include/EventCode.h

@@ -181,13 +181,15 @@ static const char* Device_Type_Table[] = {
 #define ERR_ACCESSAUTH_GET_MAC_FAILED				 0x5021000A  //获取终端设备的MAC地址失败
 
 #define ERR_ACCESSAUTH_CONNECT_PINPAD					0x50220001  //实体已启动,连接pinpad错误
-#define ERR_ACCESSAUTH_FROM_PINPAD						0x50220002  //来自pinpad的错误
+#define ERR_ACCESSAUTH_PINPAD_OPEN_OVERTIME				0x50220002  //pinpad超时未打开
 #define ERR_ACCESSAUTH_CONNECT_TOKEN_SERVICE			0x50220003  //连接令牌管理实体(Token server)错误
 #define ERR_ACCESSAUTH_FROM_TOKEN_SERVICE				0x50220004  //来自令牌管理的错误
 #define ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_KEYS		 0x50220005  //来自令牌管理的错误(SetKeyPair)
 #define ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_TOKEN		 0x50220006  //来自令牌管理的错误(SetToken)
 #define ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_SHAREKEY	 0x50220007  //来自令牌管理的错误(SetSharedSK)
-#define ERR_ACCESSAUTH_CONNECT_PINPAD_UNLOAD			 0x50220008  //实体未启动,连接pinpad错误
+#define ERR_ACCESSAUTH_PINPAD_OPEN_FAILED				 0x50220008  //pinpad打开失败
+#define ERR_ACCESSAUTH_PINPAD_GETDATA_FAILED			 0x50220009  //pinpad打开失败
+#define ERR_ACCESSAUTH_FROM_PINPAD			             0x5022000A  //来自pinpad的其他错误
 
 #define ERR_ACCESSAUTH_RVC_INIT                      0x50230001  //调用KMC接口RVCInit错误
 #define ERR_ACCESSAUTH_INIT_KMC                      0x50230002  //调用KMC接口InitKMC错误

+ 22 - 30
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -737,12 +737,6 @@ ErrorCodeEnum CAccessAuthEntity::GetPinPadModel(CSimpleStringA& pinpadModel, boo
 		auto pPinPadClient = new PinPadService_ClientBase(this);
 		if ((rc = pPinPadClient->Connect()) == Error_Succeed)
 		{
-			//初始错误信息
-			errInfo["errcode"] = "RTA5205";
-			errInfo["msg"] = "调用PinPad发生错误";
-			errInfo["getLastErr"] = GetLastError();
-			pinpadModel = generateJsonStr(errInfo).second.c_str();
-
 			PinPadService_GetDevInfo_Req req = {};
 			PinPadService_GetDevInfo_Ans ans = {};
 
@@ -767,57 +761,55 @@ ErrorCodeEnum CAccessAuthEntity::GetPinPadModel(CSimpleStringA& pinpadModel, boo
 		
 		pPinPadClient->SafeDelete();
 		pPinPadClient = NULL;
-		waitMS += 1000;
+		waitMS += INTERVAL_WAIT_PINPAD_MS;
 
 		if (waitPinPadMS > 0) //配置有效时才进行等待,不然直接跳出循环
 		{
-			Sleep(1000); //等待1s
+			Sleep(INTERVAL_WAIT_PINPAD_MS); //等待200ms
 		}
 	} 
 	while (bPinPadOnline == false && waitMS < waitPinPadMS); //获取pinpad成功,或者时间超过阈值跳出
 
 	if (rc == Error_NotInit)
 	{
-		strErrMsg = "PinPad硬件打开中,未获取到硬件信息";
+		strErrMsg = "PinPad超时未打开";
 		SetAuthErrMsg(strErrMsg.GetData());
 
 		string outStr = GetOutPutStr("%s%08X%s%s", "GetDevInfo", rc, "strErrMsg", strErrMsg.GetData());
-		m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_PINPAD, outStr.c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5205")(outStr.c_str());
+		m_FSM.doWarnMsg(ERR_ACCESSAUTH_PINPAD_OPEN_OVERTIME, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5204")(outStr.c_str());
+
+		errInfo["errcode"] = "RTA5204";
+		errInfo["msg"] = "PinPad超时未打开";
+		errInfo["getLastErr"] = GetLastError();
+		pinpadModel = generateJsonStr(errInfo).second.c_str();
+
 	}
 	else if(rc == Error_DevNotAvailable)
 	{
-		strErrMsg = "PinPad硬件打开失败,调用GetDevInfo失败";
+		strErrMsg = "PinPad打开失败";
 		SetAuthErrMsg(strErrMsg.GetData());
 
 		string outStr = GetOutPutStr("%s%08X%s%s", "GetDevInfo", rc, "strErrMsg", strErrMsg.GetData());
-		m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_PINPAD, outStr.c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5205")(outStr.c_str());
-	}
-	else if (rc == Error_NetBroken)
-	{
-		strErrMsg = "PinPad实体未启动, 连接密码键盘失败";
-		SetAuthErrMsg((const char*)strErrMsg);
-
-		m_FSM.doWarnMsg(ERR_ACCESSAUTH_CONNECT_PINPAD_UNLOAD,
-			GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", "PinPad实体未启动, 连接密码键盘失败").c_str());
+		m_FSM.doWarnMsg(ERR_ACCESSAUTH_PINPAD_OPEN_FAILED, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5218")(outStr.c_str());
 
 		errInfo["errcode"] = "RTA5218";
-		errInfo["msg"] = "PinPad实体未启动";
+		errInfo["msg"] = "PinPad打开失败";
 		errInfo["getLastErr"] = GetLastError();
 		pinpadModel = generateJsonStr(errInfo).second.c_str();
 	}
 	else if(rc != Error_Succeed)
 	{
-		strErrMsg = "连接PinPad实体失败";
-		SetAuthErrMsg((const char*)strErrMsg);
+		strErrMsg = "连接PinPad取数据异常";
+		SetAuthErrMsg(strErrMsg.GetData());
 
-		m_FSM.doWarnMsg(ERR_ACCESSAUTH_CONNECT_PINPAD,
-			GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", "连接PinPad实体失败").c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5204")("连接密码键盘异常");
+		string outStr = GetOutPutStr("%s%08X%s%s", "GetPinPadModel", rc, "strErrMsg", strErrMsg.GetData());
+		m_FSM.doWarnMsg(ERR_ACCESSAUTH_PINPAD_GETDATA_FAILED, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5205")(outStr.c_str());
 
-		errInfo["errcode"] = "RTA5204";
-		errInfo["msg"] = "PinPad实体启动成功,但连接PinPad实体失败";
+		errInfo["errcode"] = "RTA5205";
+		errInfo["msg"] = "连接PinPad取数据异常";
 		errInfo["getLastErr"] = GetLastError();
 		pinpadModel = generateJsonStr(errInfo).second.c_str();
 	}

+ 1 - 0
Module/mod_accessauth/mod_AccessAuth.h

@@ -12,6 +12,7 @@ using namespace AccessAuthorization;
 #define BUF_SIZE 256
 
 #define DEFALT_WAIT_PINPAD_MS 0
+#define INTERVAL_WAIT_PINPAD_MS 200
 
 int HexBuf2StrBuf(PBYTE hexBuf, char** strBuf, DWORD len);
 int StrBuf2HexBuf(LPCTSTR strBuf, PBYTE* hexBuf);