|
|
@@ -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;
|