Răsfoiți Sursa

!10413 准入调用pinpad状态判断调整,身份证getdevinfo返回值调整
Merge pull request !10413 from 80310970/T24ND051_base_ST2

杨诗友80174847 1 an în urmă
părinte
comite
dfcfb6bc7f

+ 5 - 0
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -1899,6 +1899,9 @@ ErrorCodeEnum CIDCertFSM::DeleteFileIfExisted(LPCTSTR fileName)
 
 ErrorCodeEnum CIDCertFSM::GetDevCatInfo(DevCategoryInfo &devInfo, CSimpleStringA& devType)
 {
+	if (m_getDevCategory != Error_Succeed)
+		return m_getDevCategory;
+
 #ifdef RVC_OS_LINUX
 	LOG_FUNCTION();
 	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) + 1 : MAX_DEV_MODEL_LEN);
@@ -2057,6 +2060,7 @@ int CIDCertFSM::Initial() //windows ver
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 	eErrDev = m_hDevHelper->GetDevCategory(m_devCatInfo);
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
+	m_getDevCategory = err; //获取设备信息的api执行结果
 	if (eErrDev == Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(m_ullEndTime - m_ullBeginTime)
@@ -2209,6 +2213,7 @@ int CIDCertFSM::Initial() //linux ver
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 	err = m_hDevHelper->GetDevCategory(m_devCatInfo);
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
+	m_getDevCategory = err; //获取设备信息的api执行结果
 	if (err == Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(m_ullEndTime - m_ullBeginTime)

+ 3 - 2
Module/mod_IDCertificate/IDCertFSM.h

@@ -223,7 +223,7 @@ public:
 
 #ifdef RVC_OS_LINUX
 		CIDCertFSM() :m_devInit(false), m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
-		m_bExit(false), m_testResult(Error_Succeed), m_csMachineType(""), m_csSite(""), m_terminalNo(""), m_devSN("")
+		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect),m_csMachineType(""), m_csSite(""), m_terminalNo(""), m_devSN("")
 		, m_devVendor(""), m_devVer(""), m_devBatch(""){
 		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
 		m_FirstStart = TRUE;
@@ -231,7 +231,7 @@ public:
 	};
 #else
 		CIDCertFSM():m_bCancelRead(false),m_bReading(false),m_bWaitReadMore(false),
-	m_bExit(false),m_testResult(Error_Succeed), m_csMachineType(""), m_csSite(""), m_terminalNo("")
+	m_bExit(false),m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_csSite(""), m_terminalNo("")
 	,m_devVendor(""), m_devVer(""), m_devBatch(""), invalidBreak(false), m_logBefore(false), transImgMsg("")
 	{
 		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
@@ -330,6 +330,7 @@ private:
 #endif
 	bool m_bCancelRead, m_bReading, m_bWaitReadMore, m_bExit;
 	ErrorCodeEnum m_testResult;
+	ErrorCodeEnum m_getDevCategory;
 	DevCategoryInfo m_devCatInfo;
 	DevStateEnum m_devState;
 	CSimpleStringA m_csMachineType, m_csSite, m_terminalNo;

+ 58 - 61
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -1028,77 +1028,74 @@ int CAccessAuthEntity::GetPinPadIDAndDeviceID(CSimpleStringA &strPinPadID, CSimp
 		rc = pPinPadClient->GetDevInfo(req, ans, 3000);
 		if (rc == Error_Succeed)
 		{
-			if (ans.state == DEVICE_STATUS_NORMAL)
+			bPinPadOnline = true;
+			nRet = 0;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad model: %s", (const char*)ans.model);
+
+			// CM = V2.0#PM = V1.0#MID = 75500001#PID = 12345678#FWID = V1234567#Vendor = nantian
+			// 密码键盘ID,PID,8到16字节;  设备ID,MID,8到16字节;  固件版本号,FWID,8字节
+			CSimpleStringA str = ans.model;
+			if (!str.IsNullOrEmpty())
 			{
-				bPinPadOnline = true;
-				nRet = 0;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad model: %s", (const char*)ans.model);
-
-				// CM = V2.0#PM = V1.0#MID = 75500001#PID = 12345678#FWID = V1234567#Vendor = nantian
-				// 密码键盘ID,PID,8到16字节;  设备ID,MID,8到16字节;  固件版本号,FWID,8字节
-				CSimpleStringA str = ans.model;
-				if (!str.IsNullOrEmpty())
+				auto arr = str.Split('#');
+				if (arr.GetCount() > 0)
 				{
-					auto arr = str.Split('#');
-					if (arr.GetCount() > 0)
+					for (int i = 0; i < arr.GetCount(); i++)
 					{
-						for (int i = 0; i < arr.GetCount(); i++)
+						auto arr2 = arr[i].Split('=');
+						if (arr2.GetCount() != 2)
+							continue;
+
+						//if (arr2[0] == "PID")
+						if (!strnicmp((LPCTSTR)arr2[0], "PID", strlen("PID")))
+						{
+							strPID = arr2[1];
+
+							if (!strPID.IsNullOrEmpty())
+								bPinPadID = true;
+						}
+						//else if (arr2[0] == "MID")
+						else if (!strnicmp((LPCTSTR)arr2[0], "MID", strlen("MID")))
 						{
-							auto arr2 = arr[i].Split('=');
-							if (arr2.GetCount() != 2)
-								continue;
-
-							//if (arr2[0] == "PID")
-							if (!strnicmp((LPCTSTR)arr2[0], "PID", strlen("PID")))
-							{
-								strPID = arr2[1];
-
-								if (!strPID.IsNullOrEmpty())
-									bPinPadID = true;
-							}
-							//else if (arr2[0] == "MID")
-							else if (!strnicmp((LPCTSTR)arr2[0], "MID", strlen("MID")))
-							{
-								strMID = arr2[1];
-
-								if (!strMID.IsNullOrEmpty())
-									bDeviceID = true;
-							}
-							//else if (arr2[0] == "Vendor")
-							else if (!strnicmp((LPCTSTR)arr2[0], "Vendor", strlen("Vendor")))
-							{
-								strVendor = arr2[1];
-
-								if (!strVendor.IsNullOrEmpty())
-									bVendor = true;
-							}
-							else if (!strnicmp((LPCTSTR)arr2[0], "FWBID", strlen("FWBID")))
-							{
-								strBluetoothID = arr2[1];
-								DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("strBluetoothID=%s", strBluetoothID);
-								if (!strBluetoothID.IsNullOrEmpty())
-									bBluetooth = true;
-							}
+							strMID = arr2[1];
+
+							if (!strMID.IsNullOrEmpty())
+								bDeviceID = true;
+						}
+						//else if (arr2[0] == "Vendor")
+						else if (!strnicmp((LPCTSTR)arr2[0], "Vendor", strlen("Vendor")))
+						{
+							strVendor = arr2[1];
+
+							if (!strVendor.IsNullOrEmpty())
+								bVendor = true;
+						}
+						else if (!strnicmp((LPCTSTR)arr2[0], "FWBID", strlen("FWBID")))
+						{
+							strBluetoothID = arr2[1];
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("strBluetoothID=%s", strBluetoothID);
+							if (!strBluetoothID.IsNullOrEmpty())
+								bBluetooth = true;
+						}
 #ifdef RVC_OS_WIN
-							else if (!strnicmp((LPCTSTR)arr2[0], "PM", strlen("PM")))
-							{
-								CSimpleStringA strPM = arr2[1];
+						else if (!strnicmp((LPCTSTR)arr2[0], "PM", strlen("PM")))
+						{
+							CSimpleStringA strPM = arr2[1];
 
-								if (!strPM.IsNullOrEmpty() && strPM.Compare("V3.0", true) == 0)
-									m_bNewSMFWB = true;
-							}
-#endif // RVC_OS_WIN
+							if (!strPM.IsNullOrEmpty() && strPM.Compare("V3.0", true) == 0)
+								m_bNewSMFWB = true;
 						}
+#endif // RVC_OS_WIN
 					}
 				}
 			}
-			else
-			{
-				if (!HasPinPad())
-					isPinPadMac = false;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad STATUS ERROR!, state: %d", ans.state);
-				return nRet; //此时nRet = -1, pinpad调用失败
-			}
+		}
+		else if (rc == Error_NotInit)
+		{
+			if (!HasPinPad())
+				isPinPadMac = false;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad NOT INIT!");
+			return nRet; //此时nRet = -1, pinpad调用失败
 		}
 		else
 		{