|
@@ -1509,21 +1509,13 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
|
|
|
spConfig->WriteConfigValueInt("1", "CardPercent", m_CardPercentEx[0]);
|
|
|
spEntityFunction->OpenConfig(Config_CenterSetting, spConfigCS);
|
|
|
|
|
|
- int tmpCardnoMismatch = 0, tmpCheckInterval = 200;
|
|
|
+ int tmpCheckInterval = 200;
|
|
|
|
|
|
- spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "EacQueryFlag", m_eacQueryFlag);
|
|
|
- spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "UseCardnoMismatch", tmpCardnoMismatch);
|
|
|
spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "CheckCardInInterval", tmpCheckInterval);
|
|
|
spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "RFVendorList", m_rfVendorList);
|
|
|
spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "SwallowCardUrl", m_csSwallowCardUrl);
|
|
|
spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "SyncMaterialUrl", m_csSyncMaterialUrl);
|
|
|
- spConfigCS->ReadConfigValue("Common", "EacQueryHost", m_EacQueryHost);
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("EacQueryFlag:%d,EacQueryHost:%s,UseCardnoMismatch:%d"
|
|
|
- , m_eacQueryFlag, m_EacQueryHost.GetData(), tmpCardnoMismatch);
|
|
|
-
|
|
|
- if (tmpCardnoMismatch == 1)
|
|
|
- m_bUseCardnoMismatch = true;
|
|
|
if (tmpCheckInterval >= 100 && tmpCheckInterval <= 1000)
|
|
|
m_iCheckCardInInterval = tmpCheckInterval;
|
|
|
|
|
@@ -2373,92 +2365,75 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- int cardTypeFromHost = 0;
|
|
|
- bool bMismatch = false;
|
|
|
- if (m_eacQueryFlag == 1)
|
|
|
- cardTypeFromHost = JudgeCardType(m_currCardNo, bMismatch);
|
|
|
- if (cardTypeFromHost > 0 && cardTypeFromHost != 2)//户口系统返回非纯磁条介质类型
|
|
|
+ l_beginTime = GetTickCountRVC();
|
|
|
+ bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER, m_hDevHelper, activeCardType);
|
|
|
+ l_endTime = GetTickCountRVC();
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
|
|
|
+ if (!bIC) {
|
|
|
+ ErrorCodeEnum eErrCode = Error_Unexpect;
|
|
|
+ CSimpleStringA ApiName = "";
|
|
|
+ CSimpleStringA alarmMsg = "";
|
|
|
+ CSimpleStringA csErrMsgWithReturnCode = "";
|
|
|
+ GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CT")(csErrMsgWithReturnCode.GetData());
|
|
|
+ LogWarn(Severity_Middle, Error_Unexpect, 0x2030000a, alarmMsg.GetData());
|
|
|
+ }
|
|
|
+ if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
|
|
|
{
|
|
|
- ctx->Ans.ICType = cardTypeFromHost;
|
|
|
- if (m_bUseCardnoMismatch && bMismatch)
|
|
|
+ if (bIC)
|
|
|
+ ctx->Ans.ICType = 1;
|
|
|
+ else
|
|
|
{
|
|
|
- bICOK = true;
|
|
|
- return 2;
|
|
|
+ ctx->Ans.ICType = 2;
|
|
|
}
|
|
|
}
|
|
|
- else//未访问户口系统或户口系统访问失败或户口未告知介质类型(包括插反卡)
|
|
|
+ else
|
|
|
{
|
|
|
-
|
|
|
- l_beginTime = GetTickCountRVC();
|
|
|
- bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER, m_hDevHelper, activeCardType);
|
|
|
- l_endTime = GetTickCountRVC();
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
|
|
|
- if (!bIC) {
|
|
|
- ErrorCodeEnum eErrCode = Error_Unexpect;
|
|
|
- CSimpleStringA ApiName = "";
|
|
|
- CSimpleStringA alarmMsg = "";
|
|
|
- CSimpleStringA csErrMsgWithReturnCode = "";
|
|
|
- GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CT")(csErrMsgWithReturnCode.GetData());
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, 0x2030000a, alarmMsg.GetData());
|
|
|
- }
|
|
|
- if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
|
|
|
+ if (bIC)
|
|
|
{
|
|
|
- if (bIC)
|
|
|
- ctx->Ans.ICType = 1;
|
|
|
- else
|
|
|
- {
|
|
|
- ctx->Ans.ICType = 2;
|
|
|
- }
|
|
|
+ bReadCardInfo = true;
|
|
|
+ ctx->Ans.ICType = 3;
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("maybe ic only.");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (bIC)
|
|
|
- {
|
|
|
- bReadCardInfo = true;
|
|
|
- ctx->Ans.ICType = 3;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("maybe ic only.");
|
|
|
+ //既没有读到磁条,又不是IC,很大概率是插反了
|
|
|
+ if (m_issueStatus) {
|
|
|
+ LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=1");
|
|
|
}
|
|
|
- else
|
|
|
+ else {
|
|
|
+ LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=0");
|
|
|
+ }
|
|
|
+ if (m_issueStatus)
|
|
|
{
|
|
|
- //既没有读到磁条,又不是IC,很大概率是插反了
|
|
|
- if (m_issueStatus) {
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=1");
|
|
|
- }
|
|
|
- else {
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=0");
|
|
|
- }
|
|
|
- if (m_issueStatus)
|
|
|
- {
|
|
|
- m_mixedEx[m_currentHopper - 1]++;
|
|
|
- SetCardMixed(m_mixedEx[m_currentHopper - 1], m_currentHopper);
|
|
|
- }
|
|
|
+ m_mixedEx[m_currentHopper - 1]++;
|
|
|
+ SetCardMixed(m_mixedEx[m_currentHopper - 1], m_currentHopper);
|
|
|
}
|
|
|
}
|
|
|
- if (bIC)
|
|
|
- {
|
|
|
- l_beginTime = GetTickCountRVC();
|
|
|
- eErr = m_hDevHelper->DeactivateICCard();
|
|
|
- l_endTime = GetTickCountRVC();
|
|
|
+ }
|
|
|
+ if (bIC)
|
|
|
+ {
|
|
|
+ l_beginTime = GetTickCountRVC();
|
|
|
+ eErr = m_hDevHelper->DeactivateICCard();
|
|
|
+ l_endTime = GetTickCountRVC();
|
|
|
|
|
|
- if (eErr != Error_Succeed) {
|
|
|
- SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactivateICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_Contact::DeactivateICCard err");
|
|
|
- }
|
|
|
- else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::DeactivateICCard");
|
|
|
- }
|
|
|
+ if (eErr != Error_Succeed) {
|
|
|
+ SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactivateICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_Contact::DeactivateICCard err");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::DeactivateICCard");
|
|
|
+ }
|
|
|
|
|
|
- l_beginTime = GetTickCountRVC();
|
|
|
- eErr = m_hDevHelper->ReleaseIC();
|
|
|
- l_endTime = GetTickCountRVC();
|
|
|
+ l_beginTime = GetTickCountRVC();
|
|
|
+ eErr = m_hDevHelper->ReleaseIC();
|
|
|
+ l_endTime = GetTickCountRVC();
|
|
|
|
|
|
- if (eErr != Error_Succeed) {
|
|
|
- SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC, "DevAdapter::ReleaseIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_Contact::ReleaseIC err");
|
|
|
- }
|
|
|
- else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::ReleaseIC");
|
|
|
- }
|
|
|
+ if (eErr != Error_Succeed) {
|
|
|
+ SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC, "DevAdapter::ReleaseIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_Contact::ReleaseIC err");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::ReleaseIC");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2639,69 +2614,55 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStandService_Read_Req,
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- int cardTypeFromHost = 0;
|
|
|
- bool bMismatch = false;
|
|
|
- if (m_eacQueryFlag == 1)
|
|
|
- cardTypeFromHost = JudgeCardType(m_currCardNo, bMismatch);
|
|
|
- if (cardTypeFromHost > 0)//户口系统有返回卡片类型
|
|
|
- {
|
|
|
- ctx->Ans.ICType = cardTypeFromHost;
|
|
|
- if (m_bUseCardnoMismatch && bMismatch)
|
|
|
- return 2;
|
|
|
+ l_beginTime = GetTickCountRVC();
|
|
|
+ bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_RF, m_hDevHelper, activeCardType);
|
|
|
+ l_endTime = GetTickCountRVC();
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
|
|
|
+ if (!bIC) {
|
|
|
+ ErrorCodeEnum eErrCode = Error_Unexpect;
|
|
|
+ CSimpleStringA ApiName = "";
|
|
|
+ CSimpleStringA alarmMsg = "";
|
|
|
+ CSimpleStringA csErrMsgWithReturnCode = "";
|
|
|
+ GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C6")(csErrMsgWithReturnCode.GetData());
|
|
|
+ LogWarn(Severity_Middle, Error_Unexpect, 0x20300017, alarmMsg.GetData());
|
|
|
}
|
|
|
- else//未访问户口系统或户口系统访问失败(包括插反卡)
|
|
|
+ if (!(bIC && activeCardType == 'A'))
|
|
|
+ bIC = false;
|
|
|
+ if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
|
|
|
{
|
|
|
-
|
|
|
- l_beginTime = GetTickCountRVC();
|
|
|
- bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_RF, m_hDevHelper, activeCardType);
|
|
|
- l_endTime = GetTickCountRVC();
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
|
|
|
- if (!bIC) {
|
|
|
- ErrorCodeEnum eErrCode = Error_Unexpect;
|
|
|
- CSimpleStringA ApiName = "";
|
|
|
- CSimpleStringA alarmMsg = "";
|
|
|
- CSimpleStringA csErrMsgWithReturnCode = "";
|
|
|
- GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C6")(csErrMsgWithReturnCode.GetData());
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, 0x20300017, alarmMsg.GetData());
|
|
|
+ if (bIC)
|
|
|
+ ctx->Ans.ICType = 1;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ctx->Ans.ICType = 2;
|
|
|
}
|
|
|
- if (!(bIC && activeCardType == 'A'))
|
|
|
- bIC = false;
|
|
|
- if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (bIC)
|
|
|
{
|
|
|
- if (bIC)
|
|
|
- ctx->Ans.ICType = 1;
|
|
|
- else
|
|
|
- {
|
|
|
- ctx->Ans.ICType = 2;
|
|
|
- }
|
|
|
+ bReadCardInfo = true;
|
|
|
+ ctx->Ans.ICType = 3;
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("maybe ic only.");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (bIC)
|
|
|
- {
|
|
|
- bReadCardInfo = true;
|
|
|
- ctx->Ans.ICType = 3;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("maybe ic only.");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
}
|
|
|
- if (bIC)
|
|
|
- {
|
|
|
- l_beginTime = GetTickCountRVC();
|
|
|
- eErr = m_hDevHelper->DeactContactlessICCard();
|
|
|
- l_endTime = GetTickCountRVC();
|
|
|
+ }
|
|
|
+ if (bIC)
|
|
|
+ {
|
|
|
+ l_beginTime = GetTickCountRVC();
|
|
|
+ eErr = m_hDevHelper->DeactContactlessICCard();
|
|
|
+ l_endTime = GetTickCountRVC();
|
|
|
|
|
|
- if (eErr != Error_Succeed) {
|
|
|
- SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactContactlessICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_RF::DeactContactlessICCard err");
|
|
|
- }
|
|
|
- else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_RF::DeactContactlessICCard");
|
|
|
- }
|
|
|
+ if (eErr != Error_Succeed) {
|
|
|
+ SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactContactlessICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "ReadCard_RF::DeactContactlessICCard err");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_RF::DeactContactlessICCard");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -4787,66 +4748,6 @@ void CCardIssuerFSM::CloseAndClearDevObj(bool bCheckConnecting, bool bCloseOnly)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-int CCardIssuerFSM::JudgeCardType(CSimpleStringA cardno, bool& bMismatch)
|
|
|
-{
|
|
|
- if (cardno.GetLength() < 8)
|
|
|
- return 0;
|
|
|
- int cardType = 0;
|
|
|
- IHttpFunc* client;
|
|
|
- client = create_http(HttpsLogCallBack);
|
|
|
- CQueryCardTypeReq qCardTypeReq;
|
|
|
- CQueryCardTypeRet qCardTypeRet;
|
|
|
- //qCardTypeReq.m_printDbg = true;//oiltest
|
|
|
- qCardTypeReq.m_timeOut = 3;//3 second
|
|
|
-
|
|
|
- qCardTypeReq.m_url = m_EacQueryHost.GetData();
|
|
|
- //qCardTypeReq.m_url = "http://55.13.170.50:8080/defa-gateway/dee1/EacQuery/queryByEac";
|
|
|
- qCardTypeReq.HEAD.xHdrLen = 203;
|
|
|
- qCardTypeReq.HEAD.xIsuCnl = "X86";
|
|
|
- qCardTypeReq.HEAD.xRtnCod = "SUC0000";
|
|
|
- qCardTypeReq.BODY.x1.xCltNbr = "";
|
|
|
- qCardTypeReq.BODY.x1.xEacNbr = cardno.GetData();
|
|
|
- qCardTypeReq.BODY.x1.xIacNbr = "";
|
|
|
- long beg = GetTickCountRVC();
|
|
|
- PROCESS_LINK_CONTEXT("LR0402203CardType")
|
|
|
- bool ret = client->Post(qCardTypeReq, qCardTypeRet, &nextLink);
|
|
|
- long end = GetTickCountRVC();
|
|
|
- if (ret)
|
|
|
- {
|
|
|
- bool bParse = qCardTypeRet.Parse(qCardTypeRet.m_resultData.c_str());
|
|
|
- if (bParse)
|
|
|
- {
|
|
|
- if (qCardTypeRet.BODY.z1.zPsbMdm.compare("C") == 0)
|
|
|
- cardType = 2;
|
|
|
- else if (qCardTypeRet.BODY.z1.zPsbMdm.compare("I") == 0)
|
|
|
- cardType = 3;
|
|
|
- else if (qCardTypeRet.BODY.z1.zPsbMdm.compare("M") == 0)
|
|
|
- cardType = 1;
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("Query card type from host is:%s,zPsbSeq:%s"
|
|
|
- , qCardTypeRet.BODY.z1.zPsbMdm.c_str(), qCardTypeRet.BODY.z1.zPsbSeq.c_str()));
|
|
|
- int eacLen = qCardTypeRet.BODY.z1.zEacNbr.length();
|
|
|
- if (eacLen > 7 && cardno.Compare(qCardTypeRet.BODY.z1.zEacNbr.c_str()) != 0)
|
|
|
- {
|
|
|
- bMismatch = true;
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Account_EAC_Mismatch,
|
|
|
- CSimpleStringA::Format("cardno:%s****%s EAC:%s****%s", cardno.SubString(0,6).GetData(), cardno.SubString(cardno.GetLength()-4, 4).GetData()
|
|
|
- , qCardTypeRet.BODY.z1.zEacNbr.substr(0, 6).c_str(), qCardTypeRet.BODY.z1.zEacNbr.substr(eacLen - 4, 4).c_str()));
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("Query card type return false:%s",qCardTypeRet.HEAD.xRtnCod.c_str()));//也没必要知道什么错 oilyang@20220829 在功能可用之前,还是有必要的
|
|
|
- }
|
|
|
- else {
|
|
|
- }
|
|
|
- client->Destory();
|
|
|
- //oiltest for stupid http component!!!
|
|
|
- //if (cardno.IsStartWith("622580") || cardno.IsStartWith("622588") || cardno.IsStartWith("622609")
|
|
|
- // || cardno.IsStartWith("410062"))
|
|
|
- // return 3;
|
|
|
- return cardType;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
void CCardIssuerFSM::HttpsLogCallBack(const char* logtxt) {
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s", logtxt);
|
|
|
}
|
|
@@ -5425,11 +5326,19 @@ void CCardIssuerFSM::ReadMag(SpReqAnsContext<CardIssuerStandService_ReadJS_Req,
|
|
|
//oiltmp what's this???
|
|
|
if (m_issueStatus)
|
|
|
SetDevState(DEVICE_STATUS_NORMAL);//设置为mixed从读卡失败恢复为成功时才触发同步计数和写运行时
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Succeed);
|
|
|
}
|
|
|
else {
|
|
|
- SetErrorAndLog(eMagReadErr, MEC_DEVAPI_CARDISSUER_MagRead, "DevAdapter::MagRead", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "", "ReadMag::MagRead fail");
|
|
|
- ctx->Ans.magStatus = 1;
|
|
|
- ctx->Ans.magData = "";
|
|
|
+ DWORD dwCode = SetErrorAndLog(eMagReadErr, MEC_DEVAPI_CARDISSUER_MagRead, "DevAdapter::MagRead", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "", "ReadMag::MagRead fail");
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, dwCode);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ctx->Ans.magStatus = 1;
|
|
|
+ ctx->Ans.magData = "";
|
|
|
+ ctx->Ans.magMsg = GetErrMsgByCode(dwCode);
|
|
|
+ }
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
@@ -5438,6 +5347,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
ctx->Ans.icStatus = 1;
|
|
|
+ ctx->Ans.icMode = 0;
|
|
|
m_ullBeginTime = GetTickCountRVC();
|
|
|
ErrorCodeEnum eErr = m_hDevHelper->MoveCard(CI_MOVECARD_IC_POSITION);
|
|
|
m_ullEndTime = GetTickCountRVC();
|
|
@@ -5446,11 +5356,15 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
}
|
|
|
else {
|
|
|
DWORD dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MoveCard, "DevAdapter::MoveCard", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220340");
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
if (bContinue)
|
|
|
return -1;
|
|
|
else
|
|
|
{
|
|
|
- ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ else
|
|
|
+ ctx->Answer(Error_Succeed);
|
|
|
return -1;
|
|
|
}
|
|
|
}
|
|
@@ -5498,7 +5412,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
|
|
|
if (bContinue) {
|
|
|
if (retDetectAndRead == -1) {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败 bContinue");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败 to continue");
|
|
|
GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
|
|
|
if (m_issueStatus) {
|
|
@@ -5509,7 +5423,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
}
|
|
|
}
|
|
|
else if (retDetectAndRead == -2) {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败 bContinue");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败 to continue");
|
|
|
if (m_issueStatus) {
|
|
|
SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "读取IC数据失败");
|
|
|
}
|
|
@@ -5518,7 +5432,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
}
|
|
|
}
|
|
|
else if (retDetectAndRead == -3) {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败 bContinue");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败 to continue");
|
|
|
if (m_issueStatus) {
|
|
|
SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "retDetectAndRead = -3");
|
|
|
}
|
|
@@ -5528,6 +5442,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
+ DWORD dwTmpUserErrCode = 0;
|
|
|
if (retDetectAndRead == -1) {
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败");
|
|
|
GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
@@ -5541,11 +5456,14 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(m_ullEndTime - m_ullBeginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, alarmMsg.GetData());
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
if (IsInBusiness()) {
|
|
@@ -5556,27 +5474,32 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(m_ullEndTime - m_ullBeginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, alarmMsg.GetData());
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
- ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(CardIssuer_UserErrorCode_ActiveICCard_Failed);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (retDetectAndRead == -2) {
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败");
|
|
|
- DWORD dwTmpUserErrCode = 0;
|
|
|
if (m_issueStatus) {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220320", "读取IC数据失败");
|
|
|
}
|
|
|
else {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220303", "读取IC数据失败");
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
- ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
else if (retDetectAndRead == -3) {
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败");
|
|
@@ -5587,11 +5510,14 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
else {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220303", "retDetectAndRead =-3");
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
- ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return -1;
|
|
@@ -5616,7 +5542,6 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
|
|
|
break;
|
|
|
}
|
|
|
ctx->Ans.pbocData = taaResult;
|
|
|
- ctx->Ans.icMode = 0;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -5624,6 +5549,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
ctx->Ans.icStatus = 1;
|
|
|
+ ctx->Ans.icMode = 1;
|
|
|
m_ullBeginTime = GetTickCountRVC();
|
|
|
ErrorCodeEnum eErr = m_hDevHelper->MoveCard(CI_MOVECARD_RF_POSITION);
|
|
|
m_ullEndTime = GetTickCountRVC();
|
|
@@ -5632,11 +5558,15 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
}
|
|
|
else {
|
|
|
DWORD dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MoveCard, "DevAdapter::MoveCard", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220340");
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
if (bContinue)
|
|
|
return -1;
|
|
|
else
|
|
|
{
|
|
|
- ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
+ ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
+ else
|
|
|
+ ctx->Answer(Error_Succeed);
|
|
|
return -1;
|
|
|
}
|
|
|
}
|
|
@@ -5679,11 +5609,11 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
CSimpleStringA ApiName = "";
|
|
|
CSimpleStringA alarmMsg = "";
|
|
|
CSimpleStringA csErrMsgWithReturnCode = "";
|
|
|
-
|
|
|
+ DWORD dwTmpUserErrCode = 0;
|
|
|
if (bContinue)
|
|
|
{
|
|
|
if (retDetectAndRead == -1) {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败(非接)bContinue");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败(非接)to continue");
|
|
|
GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
|
|
|
|
|
|
if (m_issueStatus) {
|
|
@@ -5695,24 +5625,22 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
}
|
|
|
else if (retDetectAndRead == -2) {
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败 bContinue");
|
|
|
- DWORD dwTmpUserErrCode = 0;
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败 to continue");
|
|
|
if (m_issueStatus) {
|
|
|
- dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "读取IC数据失败");
|
|
|
+ SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "读取IC数据失败");
|
|
|
}
|
|
|
else {
|
|
|
- dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220303", "读取IC数据失败");
|
|
|
+ SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220303", "读取IC数据失败");
|
|
|
}
|
|
|
}
|
|
|
else if (retDetectAndRead == -3) {
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败 bContinue");
|
|
|
- DWORD dwTmpUserErrCode = 0;
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败 to continue");
|
|
|
if (m_issueStatus) {
|
|
|
- dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "retDetectAndRead=-3");
|
|
|
+ SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220320", "retDetectAndRead=-3");
|
|
|
}
|
|
|
else {
|
|
|
- dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220303", "retDetectAndRead=-3");
|
|
|
+ SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, m_ullEndTime - m_ullBeginTime, "QLR040220303", "retDetectAndRead=-3");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -5732,11 +5660,14 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(m_ullEndTime - m_ullBeginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
if (IsInBusiness())
|
|
@@ -5749,44 +5680,51 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(m_ullEndTime - m_ullBeginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (retDetectAndRead == -2) {
|
|
|
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败");
|
|
|
- DWORD dwTmpUserErrCode = 0;
|
|
|
if (m_issueStatus) {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220320", "读取IC数据失败");
|
|
|
}
|
|
|
else {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220303", "读取IC数据失败");
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
else if (retDetectAndRead == -3) {
|
|
|
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败");
|
|
|
- DWORD dwTmpUserErrCode = 0;
|
|
|
if (m_issueStatus) {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220320", "retDetectAndRead=-3");
|
|
|
}
|
|
|
else {
|
|
|
dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, "QLR040220303", "retDetectAndRead=-3");
|
|
|
}
|
|
|
- //oilyang@20250822 if read mag successfully, we should return magData
|
|
|
- if (ctx->Ans.magStatus != 0)
|
|
|
+ if (m_bSingleMagOrIC)
|
|
|
ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
|
|
|
else
|
|
|
+ {
|
|
|
+ //oilyang@20250828 return ErrorSucceed so that the caller can know the failed reason of both mag&ic
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(dwTmpUserErrCode);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return -1;//上电读卡失败
|
|
@@ -5811,7 +5749,6 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
|
|
|
break;
|
|
|
}
|
|
|
ctx->Ans.pbocData = taaResult;
|
|
|
- ctx->Ans.icMode = 1;
|
|
|
LogWarn(Severity_Low, Error_Succeed, CardIssuer_UserErrorCode_ReadByRF, CSimpleStringA::Format("PreOnline_RF ok.iIssue:%d ", m_issueStatus));
|
|
|
|
|
|
return 0;
|
|
@@ -6000,14 +5937,17 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
ctx->Ans.magStatus = 2;
|
|
|
ctx->Ans.icStatus = 2;
|
|
|
ctx->Ans.icMode = -1;
|
|
|
+ ctx->Ans.magMsg = "";
|
|
|
+ ctx->Ans.icMsg = "";
|
|
|
switch (ctx->Req.mode)
|
|
|
{
|
|
|
case ReadMode_MagOnly:
|
|
|
+ m_bSingleMagOrIC = true;
|
|
|
ReadMag(ctx);
|
|
|
- ctx->Answer(Error_Succeed);
|
|
|
break;
|
|
|
case ReadMode_ICOnly_ContactICFirst:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = true;
|
|
|
//read via contact, if failed and support RF,to read via RF
|
|
|
int ret = PreOnlineJS_ReadViaContact(ctx, m_bSupportRF);
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ret:%d, m_bSupportRF:%d", ret, m_bSupportRF);
|
|
@@ -6019,6 +5959,7 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
break;
|
|
|
case ReadMode_ICOnly_RFFirst:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = true;
|
|
|
//if support RF, read via RF, if failed then read via contact
|
|
|
int ret = -1;
|
|
|
if (m_bSupportRF)
|
|
@@ -6031,6 +5972,7 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
break;
|
|
|
case ReadMode_ICOnly_RFOnly:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = true;
|
|
|
if (m_bSupportRF)
|
|
|
{
|
|
|
if (PreOnlineJS_ReadViaRF(ctx, false) == 0)
|
|
@@ -6042,6 +5984,7 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
break;
|
|
|
case ReadMode_MagIC_ContactICFirst:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = false;
|
|
|
//first read mag, then read via contact, if failed and support RF,to read via RF
|
|
|
ReadMag(ctx);
|
|
|
int ret = PreOnlineJS_ReadViaContact(ctx, m_bSupportRF);
|
|
@@ -6054,6 +5997,7 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
break;
|
|
|
case ReadMode_MagIC_RFFirst:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = false;
|
|
|
//first read mag, if support RF, read via RF, if failed then read via contact
|
|
|
int ret = -1;
|
|
|
ReadMag(ctx);
|
|
@@ -6067,6 +6011,7 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
break;
|
|
|
case ReadMode_MagIC_RFOnly:
|
|
|
{
|
|
|
+ m_bSingleMagOrIC = false;
|
|
|
int ret = -1;
|
|
|
ReadMag(ctx);
|
|
|
if (m_bSupportRF)
|
|
@@ -6075,7 +6020,10 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, Ca
|
|
|
PreOnlineJS_ICDataProcess(ctx);
|
|
|
}
|
|
|
else
|
|
|
+ {
|
|
|
+ ctx->Ans.icMsg = GetErrMsgByCode(CardIssuer_UserErrorCode_NotSupportRF);
|
|
|
ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
@@ -6407,4 +6355,10 @@ void CCardIssuerFSM::FSMEventDefaultProcess(FSMEvent* pEvt, DWORD dwUserCode)
|
|
|
break;
|
|
|
}
|
|
|
return;
|
|
|
+}
|
|
|
+CSimpleStringA CCardIssuerFSM::GetErrMsgByCode(DWORD dwCode)
|
|
|
+{
|
|
|
+ CSimpleStringA tmpRTA(true), tmpDesc(true);
|
|
|
+ GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA);
|
|
|
+ return CSimpleStringA::Format("[%s]%s", tmpRTA.GetData(), tmpDesc.GetData());
|
|
|
}
|