/// <summary> /// EVENT: Read card infomation /// /// Read MSR DATA or IC DATA EVENT /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void axKSNet_Dongle1_OnRecvEncReaderCard(object sender, AxKSNET_DONGLELib._DKSNet_DongleEvents_OnRecvEncReaderCardEvent e) { listBox_Log.Items.Add(@"카드정보 읽기"); listBox_Log.Items.Add(String.Format("RES CODE [{0}] ", e.resCode)); listBox_Log.Items.Add(String.Format("CardType [{0}]", e.cardType)); listBox_Log.Items.Add(String.Format("Count [{0}]", e.count)); listBox_Log.Items.Add(String.Format("Reader[{0}]", e.reader)); listBox_Log.Items.Add(String.Format("encData [{0}]", e.encData)); listBox_Log.Items.Add(String.Format("encCardNo[{0}][{1}]", e.encCardNo.Length, e.encCardNo)); listBox_Log.Items.Add(String.Format("noEncCardNo[{0}][{1}]", e.noEncCardNo.Length, e.noEncCardNo)); txtBox_EncCardNo.Text = e.encCardNo.ToString(); txtBox_NoEncCardNo.Text = e.noEncCardNo.ToString(); txtBox_EnvData.Text = e.encData.ToString(); string str_noCardNo_2 = e.noEncCardNo.ToString(); string svcCode = string.Empty; int idx_Check = str_noCardNo_2.IndexOf('='); if (idx_Check > -1) { str_noCardNo_2 = e.noEncCardNo.Substring(1, idx_Check - 1); svcCode = e.noEncCardNo.Substring(idx_Check + 1, 1); } else { str_noCardNo_2 = e.noEncCardNo.Substring(1, e.noEncCardNo.Length - 1); } listBox_Log.Items.Add(String.Format("serviceCode [{0}]", svcCode)); string request = CombineTelegram(e.cardType.ToString(), e.reader.ToString(), str_noCardNo_2.ToString(), m_pinData.ToString(), m_signData.ToString() ); byte[] bt_request = StringToByte(request); listBox_Log.Items.Add(request); //OpenEncReader(); }
/// <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 }