/// <summary> /// IC Card 정상시, /// 2nd Generation Request after 카드사와 요청 /// VAN 승인 요청 및 응답 /// /// 2번 호출함 /// - 카드 삽입 후 승인 요청 후 /// - RequestReaderCom2ndGen 후출 정상 아닐 때, 취소 요청 후 호출 해서 종료 함 /// <param name="readCardInfo">처음 삽입시 받은 카드정보</param> /// <param name="errorMsg">오류 메시지</param> /// </summary> public string RequestReaderCom2ndGen(SignPadCardInfo readCardInfo, string encData, out string errorMsg) { string dateTime = DateTime.Now.ToString("yyMMddHHmmss"); string sRtn = m_dksNetdongle.EncReaderCom2ndGen(dateTime, readCardInfo.TransAmt, readCardInfo.ResCode, readCardInfo.Count, encData); LogUtils.Instance.Log("Call RequestReaderCom2ndGen rtn[{0}]", sRtn); errorMsg = GetRecvEncReaderErrorMsg(sRtn); return(sRtn); }
/// <summary> /// EVENT: Read card infomation /// /// Read MSR DATA or IC DATA EVENT /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_dksNetdongle_OnRecvEncReaderCard(object sender, AxKSNET_DONGLELib._DKSNet_DongleEvents_OnRecvEncReaderCardEvent e) { // 이벤트 처리 없으면 무시 if (CardICReaderEvent == null) { return; } // Reset 거래금액 string strTransAmt = string.Format("{0:d9}", m_icCardTransAmt); string errorMsg = GetRecvEncReaderErrorMsg(e.resCode); SignPadCardInfo cardInfo = null; if (e.resCode == "00") { #region Get card info LogUtils.Instance.Log(@"카드정보 읽기"); LogUtils.Instance.Log(String.Format("RES CODE [{0}] ", e.resCode)); LogUtils.Instance.Log(String.Format("CardType [{0}]", e.cardType)); string noEncCardNo = e.noEncCardNo; string svcCode = string.Empty; int idx_Check = noEncCardNo.IndexOf('='); if (idx_Check > -1) { noEncCardNo = e.noEncCardNo.Substring(1, idx_Check - 1); // 여전법 추가(KSK) 현금영수증 카드 처리 수정 if (e.noEncCardNo.Length == idx_Check + 1) { svcCode = ""; } else { svcCode = e.noEncCardNo.Substring(idx_Check + 1, 1); } } else { noEncCardNo = e.noEncCardNo.Substring(1, e.noEncCardNo.Length - 1); } LogUtils.Instance.Log("Service Code [{0}]", svcCode); #region 여전법 2016.09.27 추가 : 사인패드에서 입력받은 마스킹 카드 번호의 마스킹 부분을 재마스킹 함 if (noEncCardNo.Length > 12) { string preCardNum = noEncCardNo.Substring(0, 6); string endCardNum = noEncCardNo.Substring(12, noEncCardNo.Length - 12); noEncCardNo = string.Format("{0}******{1}", preCardNum, endCardNum); } //Console.WriteLine("[{0}]", noCardNum); #endregion cardInfo = new SignPadCardInfo() { EncCardNo = e.encCardNo, NoEncCardNo = noEncCardNo, EncData = e.encData, CardType = e.cardType, CardGubun = e.noEncCardNo.Substring(0, 1), Count = e.count, NoEncExtCardNo = svcCode, ServiceCode = svcCode, ResCode = e.resCode, Reader = e.reader, TransAmt = strTransAmt }; #endregion } CardICReaderEvent(e.resCode, errorMsg, cardInfo); // e.resCode = 01~07, error fallback }