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

Merge branch 'develop' of http://mayun.itc.cmbchina.cn/QD_RemoteBankArea/LR04.02_RVCTerminalPlus into develop

胡琛80272472 4 лет назад
Родитель
Сommit
e6cec40171

+ 41 - 4
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -828,10 +828,25 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 
 			ctx->Ans.ICData = "";
 			int activeCardType;
-			bool bGetICData = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A000000333", activeCardType);
-			if (!bGetICData)
+			//bool bGetICData = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A000000333", activeCardType);
+			int retDetectAndRead = -1;
+			if (!ctx->Req.aid.IsNullOrEmpty())
 			{
-				Dbg("DetectAndReadICData failed.");
+				Dbg("aid:[%s]", (const char*)ctx->Req.aid);
+				retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, ctx->Req.aid, activeCardType);
+			}
+			else {
+				retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A000000333", activeCardType);
+				if (retDetectAndRead < -1)//-1:DetectIfICCard failed; -2:select app failed
+				{
+					Dbg("Can't read pboc record, to try emv...");
+					retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A0000000108888", activeCardType);
+				}
+			}
+			
+			if (retDetectAndRead < 0)
+			{
+				Dbg("DetectAndReadICData failed");
 				ctx->Answer(Error_Unexpect);
 				return 1;
 			}
@@ -946,7 +961,29 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		m_pCardProcess->SplitBusinessData("DF690101",strlen("DF690101"));
 	}
 	int activeCardType;
-	if (!m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A000000333", activeCardType))//oiltest 20140915
+	//oilyang@20201014 add emv card support
+	int retDetectAndRead = -1;
+	ICData aidFromBus(false, 0x4f, 0x00);
+	if (m_pCardProcess->FindTagValue(TAG_VECTOR_BUS, aidFromBus, false, 0) == -1)
+	{
+		Dbg("the front BusinessData han't provide aid data.");
+		retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A000000333", activeCardType);
+		if (retDetectAndRead < -1)//-1:DetectIfICCard failed; -2:select app failed
+		{
+			Dbg("Can't read pboc record,to try emv..."); 
+			retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, "A0000000108888", activeCardType);
+		}
+	}
+	else {
+		char* pAIDTmp = new char[64];
+		memset(pAIDTmp, 0, 64);
+		HexBuf2StrBuf(aidFromBus.value, &pAIDTmp, aidFromBus.lenth);
+		Dbg("the aid is[%s],len:%d .", pAIDTmp, strlen(pAIDTmp));
+		retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, pAIDTmp, activeCardType);
+		if (pAIDTmp != NULL)
+			delete[]pAIDTmp;
+	}
+	if (retDetectAndRead < 0)
 	{
 		ctx->Answer(Error_Unexpect);
 		return 0;

+ 1 - 0
Module/mod_chromium/CModTools.cpp

@@ -325,6 +325,7 @@ std::string CModTools::generateCefclientCmd(bool isExtend, std::string mainUrl)
 	strCmdLine.Append(" --hide-controls");
 	strCmdLine.Append(" --always-on-top");
 	strCmdLine.Append(" --logextend=").Append((+PAGE_TYPE::slv)._to_string());
+	strCmdLine.Append(R"( --errurl=file:///)").Append(getErrUrl().second.c_str());
 	DbgEx("cmdline : %s", strCmdLine.GetData());
 
 	return strCmdLine.GetData();

+ 4 - 3
Module/mod_chromium/CModTools.h

@@ -36,11 +36,11 @@ public:
 	bool killAllChromium();	//通过taskkill 关闭掉所有的cefclient
 	bool killChromiumByName(std::string name);
 	void RestartProxyServer();
+	TradeManageCodeEnum CheckJobLimited();
+private:
 	std::pair<CSimpleStringA, int>  ReadConfig();	//读本地配置,已废弃
 	std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA> ReadCenterConfigStr(CSimpleStringA entityName = "");
-	void setLimitReason(const char* reason);
-    TradeManageCodeEnum CheckJobLimited();
-private:
+
 	std::pair<bool, std::string> getMainUrl();
 	std::pair<bool, std::string> getAdUrl();
 	std::pair<bool, std::string> getErrUrl();
@@ -52,6 +52,7 @@ private:
 	std::pair<bool, std::string> GenerateErrPage(ERR_PAGE_REASON errType);
 	std::string GetSpShellBootTime();
 	bool isOutsidePad();
+	void setLimitReason(const char* reason);
 	int StandardToStamp(const char* str_time, bool dateOnly);
 	bool CheckTradeRecord();
 private: