Exemple #1
0
        /// <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();
        }
Exemple #2
0
        /// <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
        }