Example #1
0
        /// <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);
        }
Example #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
        }