using System; using System.Text; using System.Drawing; using System.Windows.Forms; using System.Collections; using Cosmos.Win; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Data; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 해피기프트카드(코나머니) // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Win { public partial class frmHappyGiftCard : frm_PayMainBack { #region 변수 선언 private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리 private PosOLEDevice.DelegateOlePos delegatePos; private PosOLEDevice.DelegateIcReader delegateReader; // IC리더 콜백 //#20170918 IC 콜백 함수 변경 start //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정. /* private PosOLEDevice.CallbackIc delegateReaderCardInfo; // IC리더 콜백(CardInfo) private bool m_bCardInPut; //카드 입력 중복 방지 private string m_sIcChip; //IC CHIP DATA(EMV) private string m_InputType = ""; //PosConst.POS_VAN_MASTER.VAN_KEYIN; //입력구분 private string m_sCardNo; //입력 카드 번호 */ //#20170918 IC 콜백 함수 변경 end private IDataProcessUs m_cDataService = null; private IPaymentUs m_cHappyGiftCard = null; private IICReaderUs m_cDeviceICReader = null; private IDataCommonUs m_cDataCommon = null; //#20171023, 해피기프트(신) 결제 수정 Start, srlee private ISignPadUs m_cDeviceSignPad = null; // 서명패드 //#20171023, 해피기프트(신) 결제 수정 End, srlee //#20180329, 해피기프트(신) 자동적립 수정 Start, lsr private IPaymentExpUs m_cHappyPoint = null; // 해피포인트 적립 //#20180329, 해피기프트(신) 자동적립 수정 End, lsr private bool bNotDoubleClik = false; // 더블 클릭 방지용 private string m_sPosMenuKey; // 입력값 할인 /// /// 구분 /// public string SetPosMenuKey { set { this.m_sPosMenuKey = value; } } /// /// 입력구분 /// private string m_sInPutType = ""; /// /// 입력데이터 /// private string m_sInPutData = ""; /// /// 카드데이터 /// private string m_sInEncData = ""; /// /// FALLBACK 구분 /// private string m_sFallDiv = ""; /// /// 서비스구분 /// private string m_sServiceCode = ""; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 /// /// 마스킹데이터 /// private string m_sInMaskData = ""; //#20180717 해피기프트(신) 조회 기능 추가 start //변경 /// /// 조회 성공 여부 /// private bool m_bSearchSuccess = false; //#20180717 해피기프트(신) 조회 기능 추가 end #endregion 변수 선언 #region 생성자 & 소멸자 & 폼초기화 public frmHappyGiftCard() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); //this.UpdateStyles(); m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cHappyGiftCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.HPGIFTCARD); //#20171023, 해피기프트(신) 결제 수정 Start, srlee m_cDeviceSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD); //#20171023, 해피기프트(신) 결제 수정 End, srlee //#20180329, 해피기프트(신) 자동적립 수정 Start, lsr m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT); //#20180329, 해피기프트(신) 자동적립 수정 End, lsr delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent); delegateReader = new PosOLEDevice.DelegateIcReader(OnIcReaderCallBack); // IC리더 콜백 //#20170918 IC 콜백 함수 변경 start //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정. //delegateReaderCardInfo = new PosOLEDevice.CallbackIc(OnIcReaderCallBackCardInfo); // IC리더 콜백(CardInfo) //#20170918 IC 콜백 함수 변경 end } private void frmHappyGiftCard_Load(object sender, EventArgs e) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ""); InitControl(); tmrIcCard.Tag = ""; tmrIcCard.Enabled = true; // IC리더 콜백 설정 //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 start #region 해피기프트카드 선리딩 처리 if (m_cPosStatus.Sale.strHappyGiftCardNo != "") { //============================================================== // 오버로딩된 해피기프트카드 이벤트 함수 호출 //-------------------------------------------------------------- // - 파라미터 : sender, 해피기프트카드 카드번호, 조회까지 실행할지 여부 //============================================================== #region 오버로딩된 해피기프트카드인 조회 함수 호출 txtEditBox_EditBoxKeyDownEvent(null, m_cPosStatus.Sale.strHappyGiftCardNo, btnSearch); // 조회까지 수행 #endregion } #endregion 해피기프트카드 선리딩 처리 //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 end } private void frmHappyGiftCard_Activated(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(delegatePos); } private void frmHappyGiftCard_Deactivate(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(null); } private void frmHappyGiftCard_FormClosing(object sender, FormClosingEventArgs e) { tmrIcCard.Tag = "CLOSE"; UnRegIcCallback(); // IC리더 콜백 해지 InDataToZeroFill(); UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text); } /// /// 폼 컨트롤 초기화 /// private void InitControl() { try { // 이미지 로딩 처리 //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S); //this.Size = new Size(788, 402); //this.Location = new Point(216, 173); //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S); this.Location = new Point(0, 50); this.Size = new Size(1024, 525); //this.BackColor = Color.FromArgb(114, 114, 114); FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT); FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol , m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol); btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE); if (btnExit.Image != null) btnExit.Text = ""; IDataCommonUs m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); InitPayMainBack(m_cPosStatus, m_cDataCommon, m_sPosMenuKey, PosConst.MOT_MSG_TYPE.PAY_STEP_3, ""); //테마색상 적용! btnEnter.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); // 해피기프트카드(코나머니) if (m_sPosMenuKey == PosKey.MENU_KEY.HPGIFTCARD) lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1027); lblPayAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037); lblCardNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0051); lblBeforeBalanceAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0352); lblSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0049); btnSearch.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0004); btnEnter.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0057); //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 btnICCard.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0132); btnRfCard.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0580); // 기능 버튼 설정 체크 //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //FormManager.SetbtnMenu(txtCardNo, m_cDevStatus.ICReader.UseYn, btnICCard, btnRfCard, btnMenu3, btnMenu4); //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* // 조회 버튼 숨김 btnSearch.Visible = false; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //btnICCard.Visible = true; //btnRfCard.Visible = true; lblAfterBalanceAmt.Visible = false; lblBox5.Visible = false; txtAfterBalanceAmt.Visible = false; btnMenu3.Visible = false; btnMenu4.Visible = false; //20171020 dkshin 해피기프트(신) IC/RF 조회 기능 삭제 lblBeforeBalanceAmt.Visible = false; lblBox3.Visible = false; txtBeforeBalanceAmt.Visible = false; */ //변경 btnMenu3.Visible = false; btnMenu4.Visible = false; lblBeforeBalanceAmt.Visible = true; lblBox3.Visible = true; txtBeforeBalanceAmt.Visible = true; //#20180717 해피기프트(신) 조회 기능 추가 end txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt); // 받을금액 txtCardNo.Text = ""; //#20180717 해피기프트(신) 조회 기능 추가 start //기존 //txtBeforeBalanceAmt.Text = "0"; //변경 txtBeforeBalanceAmt.Text = ""; //#20180717 해피기프트(신) 조회 기능 추가 end txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt); // 결제금액 m_sInPutType = ""; // 입력구분 m_sInPutData = ""; // 입력데이터 m_sInEncData = ""; // 카드데이터 m_sFallDiv = ""; m_sServiceCode = ""; bNotDoubleClik = false; txtCardNo.ReadOnly = false; //#20171023, 해피기프트(신) 결제 수정 Start, srlee string retVal = string.Empty; string sFWver = string.Empty; string sModelName = string.Empty; //20171030 dkshin 서명패드 모델명, 버전 체크하여 RF버튼 보이기/숨기기(모델명150P이고 AT02버전 이상일때 보이기) int iFWver = 0; if ((m_cDevStatus.SignPad.UseYn == true) && (m_cDeviceSignPad.GetSignPadInfo(ref retVal) == true)) { sModelName = CmUtil.MidH(retVal, 0, 9).Trim(); //20171030 dkshin 서명패드 모델명 retVal = CmUtil.MidH(retVal, 10, 19).Trim(); // 펌웨어 버전 sFWver = CmUtil.MidH(retVal, 0, 2); // AT OR AI iFWver = CmUtil.IntParse(CmUtil.MidH(retVal, 2, 4)); } //#20171023, 해피기프트(신) 결제 수정 End, srlee // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { btnICCard.Visible = true; //#20180201, 해피기프트(신) RF카드 사인패드 펌웨어 AT02. AI07, AL04 이상만 적용되도록 수정 Start if ((iFWver >= 2 && sFWver.Equals("AT")) || (iFWver >= 7 && sFWver.Equals("AI")) || (iFWver >= 4 && sFWver.Equals("AL"))) //#20180201, 해피기프트(신) RF카드 사인패드 펌웨어 AT02. AI07, AL04 이상만 적용되도록 수정 End { btnRfCard.Visible = true; } //20171030 dkshin 서명패드 모델명, 버전 체크하여 RF버튼 보이기/숨기기(모델명150P이고 AT02버전 이상일때 보이기) start else { btnRfCard.Visible = false; }//end txtCardNo.MaxLength = 40; if (m_cDevStatus.ICReader.Integrity_IC_Status != true && m_cDevStatus.ICReader.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0384); //#20180717 해피기프트(신) 조회 기능 추가 start //기존 //lblBeforeBalanceAmt.Location = new Point(238, 269); //txtBeforeBalanceAmt.Location = new Point(376, 276); //#20180717 해피기프트(신) 조회 기능 추가 end } else { btnICCard.Visible = false; //#20180201, 해피기프트(신) RF카드 사인패드 펌웨어 AT02. AI07, AL04 이상만 적용되도록 수정 Start if ((iFWver >= 2 && sFWver.Equals("AT")) || (iFWver >= 7 && sFWver.Equals("AI")) || (iFWver >= 4 && sFWver.Equals("AL"))) //#20180201, 해피기프트(신) RF카드 사인패드 펌웨어 AT02. AI07, AL04 이상만 적용되도록 수정 End { btnRfCard.Visible = true; } //20171030 dkshin 서명패드 모델명, 버전 체크하여 RF버튼 보이기/숨기기(모델명150P이고 AT02버전 이상일때 보이기) start else { btnRfCard.Visible = false; }//end txtCardNo.MaxLength = 40; //#20180717 해피기프트(신) 조회 기능 추가 start //기존 //lblBeforeBalanceAmt.Location = new Point(238, 308); //txtBeforeBalanceAmt.Location = new Point(376, 315); //#20180717 해피기프트(신) 조회 기능 추가 end } txtCardNo.Select(); txtCardNo.SelectText(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 버튼 입력 처리 /// /// 버튼 입력 처리 /// /// /// private void btnProc_Click(object sender, EventArgs e) { try { if (bNotDoubleClik) return; bNotDoubleClik = true; if (((Cosmos.UI.CsmButton)sender) == btnICCard) // 카드 등록 { //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 Start, srlee //if (GetIcCardData(true, CmUtil.IntParse(txtPayAmt.Text)) != true) if (GetIcCardData(true, CmUtil.IntParse(txtSaleAmt.Text)) != true) //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 End, srlee { bNotDoubleClik = false; return; } */ //변경 if (GetIcCardData(true, 0) == true) { bNotDoubleClik = false; SearchTxtInPut(); //return; } //#20180717 해피기프트(신) 조회 기능 추가 end } //#20180717 해피기프트(신) 조회 기능 추가 start //변경 else if (((Cosmos.UI.CsmButton)sender) == btnSearch) // 조회 { if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC) { // IC리더 카드 읽기 if (GetIcCardData(true, 0) != true) { bNotDoubleClik = false; return; } } else if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { if (GetRfCardData("0") != true) { bNotDoubleClik = false; return; } } SearchTxtInPut(); if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } //#20180717 해피기프트(신) 조회 기능 추가 end else if (((Cosmos.UI.CsmButton)sender) == btnEnter) // 승인 { //#20171023, 해피기프트(신) 결제 수정 Start, srlee CompleteTxtInPut(); //#20171023, 해피기프트(신) 결제 수정 End, srlee if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 else if (((Cosmos.UI.CsmButton)sender) == btnRfCard) { UnRegIcCallback(); // IC리더 콜백 해지 //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 Start, srlee //GetRfCardData(CmUtil.DoubleParse(txtPayAmt.Text).ToString()); GetRfCardData(CmUtil.DoubleParse(txtSaleAmt.Text).ToString()); //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 End, srlee */ //변경 if (GetRfCardData("0") == true) { bNotDoubleClik = false; SearchTxtInPut(); //return; } //#20180717 해피기프트(신) 조회 기능 추가 end if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } padInPut.SetActiveFocus(); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); bNotDoubleClik = false; } finally { if (txtCardNo.Value == "") tmrIcCard.Enabled = true; // IC리더 콜백 설정 } bNotDoubleClik = false; } /// /// 닫기 /// /// /// private void btnExit_Click(object sender, EventArgs e) { try { txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.ESC_PREVIOUS); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region 텍스트박스 키 입력 이벤트 처리 /// /// 텍스트박스 키 입력 이벤트 처리 /// /// /// private void txtEditBox_EditBoxKeyDownEvent(object sender, string sFuncValue) { try { if (sFuncValue == PosKey.MENU_KEY.ENTER) { //#20180717 해피기프트(신) 조회 기능 추가 start //변경 if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { if (txtBeforeBalanceAmt.Text == "") SearchTxtInPut(); // 조회 } //#20180717 해피기프트(신) 조회 기능 추가 end //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 Start, srlee //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* if (((Cosmos.UI.CsmPosEditBox)sender) == txtSaleAmt) { if (CheckTxtInPut(sender, false) == false) return; txtCardNo.Select(); } */ //#20180717 해피기프트(신) 조회 기능 추가 end //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 End, srlee //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 start else if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { if (CheckTxtInPut(sender, false) == false) return; txtCardNo.Select(); } //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 end } else if (sFuncValue == PosKey.MENU_KEY.CLEAR) { if (((Cosmos.UI.CsmPosEditBox)sender).ReadOnly == false) ((Cosmos.UI.CsmPosEditBox)sender).Text = ""; if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { m_sInPutType = ""; m_sInPutData = ""; m_sInEncData = ""; m_sFallDiv = ""; m_sServiceCode = ""; //#20180717 해피기프트(신) 조회 기능 추가 start //변경 txtBeforeBalanceAmt.Text = ""; m_bSearchSuccess = false; //#20180717 해피기프트(신) 조회 기능 추가 end txtCardNo.ReadOnly = false; tmrIcCard.Enabled = true; } } else if (sFuncValue == PosKey.MENU_KEY.ESC_PREVIOUS) { this.DialogResult = DialogResult.Cancel; this.Close(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 텍스트박스 활성화 처리 /// /// /// private void txtEditBox_EnterEvent(object sender, EventArgs e) { try { padInPut.SetActiveControl = (Control)sender; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 번호 변경시 기존 조회값 초기화 /// /// /// private void txtCardNo_EditBoxTextChangedEvnet(object sender, EventArgs e) { m_sInPutType = ""; // 입력구분 m_sInPutData = ""; // 입력데이터 m_sInEncData = ""; // 카드데이터 m_sFallDiv = ""; m_sServiceCode = ""; } #endregion #region 텍스트박스 입력 유효성 체크 /// /// 텍스트박스 입력 유효성 체크 /// /// /// private bool CheckTxtInPut(object sender, bool bSearchMode) { try { // 특정 문자값 제거 try { if (m_cDevStatus.Msr.STX != "" && txtCardNo.Value.StartsWith(m_cDevStatus.Msr.STX)) txtCardNo.Value = txtCardNo.Value.Substring(1); int iLastEtx = txtCardNo.Value.LastIndexOf(m_cDevStatus.Msr.ETX); if (m_cDevStatus.Msr.ETX != "" && iLastEtx > 0) txtCardNo.Value = CmUtil.MidH(txtCardNo.Value, 0, iLastEtx); } catch { } //#20180717 해피기프트(신) 조회 기능 추가 start //변경 if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { // 카드번호 길이 체크 if (txtCardNo.Value.Length < 6) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0037); txtCardNo.Focus(); txtCardNo.SelectText(); return false; } } //#20180717 해피기프트(신) 조회 기능 추가 end //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 Start, srlee // 결제 금액 체크 //#20180717 해피기프트(신) 조회 기능 추가 Start //기존 //if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtSaleAmt) //변경 if (bSearchMode == false) //#20180717 해피기프트(신) 조회 기능 추가 End { if (m_cDataService.DoubleParse(txtSaleAmt.Value) == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0038); return false; } if (m_cDataService.DoubleParse(txtSaleAmt.Value) > m_cTrnStatus.Sale.RemainPayAmt) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0039); return false; } if (txtSaleAmt.Value.Length > 10) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0035); // 입력한 금액이 너무 큰 금액 입니다. return false; } if (CmUtil.AmountCut(m_cDataService.DoubleParse(txtSaleAmt.Value), CmUtil.IntParse(m_cPosStatus.Mst.PayRudDwLoc)) != m_cDataService.DoubleParse(txtSaleAmt.Value)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0036); // 입력한 금액은 입력 불가 단위 입니다. return false; } //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* if (m_cTrnStatus.Sale.RemainPayAmt != m_cDataService.DoubleParse(txtSaleAmt.Value)) { //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 Start, srlee if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC) { // IC리더 카드 읽기 if (GetIcCardData(true, CmUtil.IntParse(txtSaleAmt.Text)) != true) { bNotDoubleClik = false; return false; } } else if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { if (GetRfCardData(CmUtil.DoubleParse(txtSaleAmt.Text).ToString()) != true) { bNotDoubleClik = false; return false; } } //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 End, srlee txtCardNo.Select(); } */ //#20180717 해피기프트(신) 조회 기능 추가 end } //#20171020, 해피기프트(신) 결제금액 변경 시 카드 다시 리딩하도록 변경 End, srlee if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* // 카드번호 길이 체크 if (txtCardNo.Value.Length < 6) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0037); txtCardNo.Focus(); txtCardNo.SelectText(); return false; } */ //#20180717 해피기프트(신) 조회 기능 추가 end //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start // BIN 체크 //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 -- 2018.03.29 주석제거 lsr string[] aRet = new string[10]; string ret = m_cHappyGiftCard.SearchPayment(new string[] { PosConst.HPGIFTCARD_SEARCH_TYPE.PREFIX, txtCardNo.Value }, ref aRet); if (ret != UserCom.RST_OK) { WinManager.ErrorMessage(ret); txtCardNo.Focus(); txtCardNo.SelectText(); return false; } //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 start else { if (aRet[0].Trim() == "C" && aRet[2] == "98") { //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 Start //기존 /* //해피 기프트 카드인 경우 ret = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HAPPY_GIFTCARD, PosKey.MENU_KEY.HAPPY_GIFTCARD, txtCardNo.Value, m_sInPutData, m_sInPutType }); */ //변경 //해피 기프트 카드인 경우 ret = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HAPPY_GIFTCARD, PosKey.MENU_KEY.HAPPY_GIFTCARD, txtCardNo.Value, m_sInEncData, m_sInPutType }); //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 end if (ret == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); Application.DoEvents(); } else { this.DialogResult = DialogResult.Cancel; this.Close(); Application.DoEvents(); } //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 Start // IC카드 버튼 선택 -> 카드리딩 -> 승인버튼 선택 -> (구)해피기프트 화면 띄우고 조회 -> 상품권번호 Numeric 오류 -> (구)해피기프트 화면 종료 -> CheckTxtInPut() TRUE로 리턴되어 승인 전문 날아감 -> 전문 오류 return false; // 검토필요 //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 End } //#15930 PB 마포역 - 해피기프트 결제창에서 신용카드 승인되는 증상 start else if (!(aRet[0].Trim() == "C" && aRet[2] == "98") && aRet[0].Trim() != "N") { // 해피기프트 카드가 아닙니다. //WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0795)); WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0037)); txtCardNo.Focus(); txtCardNo.SelectText(); return false; } //#15930 PB 마포역 - 해피기프트 결제창에서 신용카드 승인되는 증상 end } //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 end //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } return true; } #endregion #region 텍스트박스 입력 완료 처리 /// /// 승인 처리 /// /// private bool CompleteTxtInPut() { string sRet = UserCom.RST_ERR; try { //#20180717 해피기프트(신) 조회 기능 추가 start //변경 if (m_bSearchSuccess == false) { SearchTxtInPut(); } //#20180717 해피기프트(신) 조회 기능 추가 end if (CheckTxtInPut(null,false) == false) return false; string m_sTax = "0"; string m_sItemCode = ""; double m_dCreditCardDcAtm = 0; string sDivMonth = "";//20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 - 할부개월 //#20171129, 해피기프트(신) MS매장 RF카드 IC승인되도록 수정 Start #region 주석 /*if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { if (m_sInPutData == "" && m_sInEncData == "") { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; m_sFallDiv = "0"; } else { //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //EncryptedCardNo(m_sInPutData, ref m_sInEncData, ref m_sInPutData); m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtSaleAmt.Value)).ToString(); sDivMonth = "00"; if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { string m_sInPutDataTemp = m_sInPutData; EncryptedCardNo(m_sInEncData, ref m_sInEncData, ref m_sInPutData); m_sInPutData = m_sInPutDataTemp; } } } else { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; }*/ #endregion if (m_sInPutData == "" && m_sInEncData == "") { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; m_sFallDiv = "0"; } else { if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { if (m_cDevStatus.ICReader.UseYn == true) { string m_sInPutDataTemp = m_sInPutData; EncryptedCardNo(m_sInEncData, ref m_sInEncData, ref m_sInPutData); m_sInPutData = m_sInPutDataTemp; } } } //#20171129, 해피기프트(신) MS매장 RF카드 IC승인되도록 수정 End //0:마스킹 카드번호 1:입력구분 2:카드번호 3:할부개월 4:총금액 5:봉사료 //6:세금 7:비밀번호 8:신용카드종류 9:칩데이터 10:사인 //11:Fallback구분 12:제휴할인금액(캠페인) 13:원승인번호 14:원승인일자 15:아이템코드 //16:매입사코드 17:매입사명 18:할인카드구분 19:할인금액 20:승인구분, 21:매체구분, 22:서비스코드 //승인처리 //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 /*sRet = m_cHappyGiftCard.SetPayment(new string[] { txtCardNo.Value, m_sInPutType, m_sInEncData, "", m_cDataService.DoubleParse(txtSaleAmt.Text).ToString(), "", m_sTax, "", "", m_sInPutData , "", m_sFallDiv, "0", "", "", m_sItemCode, "","","", m_dCreditCardDcAtm.ToString() ,ItemConst.PAY_APP_DIV.NORMAL, "", m_sServiceCode }); */ sRet = m_cHappyGiftCard.SetPayment(new string[] { txtCardNo.Value, m_sInPutType, m_sInEncData, sDivMonth, m_cDataService.DoubleParse(txtSaleAmt.Text).ToString(), "0", m_sTax, "", "", m_sInPutData , "", m_sFallDiv, "0", "", "", m_sItemCode, "","","", m_dCreditCardDcAtm.ToString() ,ItemConst.PAY_APP_DIV.NORMAL, "", m_sServiceCode }); if (sRet != UserCom.RST_OK) { InDataToZeroFill(); if (sRet != UserCom.RST_ERR) //에러 코드만일때는 메세지 표기 안함! WinManager.ErrorMessage(sRet); txtCardNo.Focus(); padInPut.SetActiveFocus(); return false; } //#20180329, 해피기프트(신) 자동적립 수정 Start, lsr else { if (PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") { m_cHappyPoint.SetHPGiftPayment(); // 해피포인드 등록 } } //#20180329, 해피기프트(신) 자동적립 수정 End, lsr this.DialogResult = DialogResult.OK; this.Close(); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } finally { //여전법 대응! ////////////////////////////////////////////////////////////////////////////////// CmUtil.ZeroFillClear(ref m_sInEncData); CmUtil.ZeroFillClear(ref m_sInPutData); ////////////////////////////////////////////////////////////////////////////////// } return false; } /// /// 조회 처리 /// /// private bool SearchTxtInPut() { string sRet = UserCom.RST_ERR; //string sCardNo = ""; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 string sPayAmt = ""; try { if (CheckTxtInPut(null, true) == false) return false; //#20180717 해피기프트(신) 조회 기능 추가 start //기존 /* // IC 모드여도 키인 OR 바코드 스캔 시 MS 전문 타도록 수정 if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { if (m_sInPutData == "" && m_sInEncData == "") { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; m_sFallDiv = "0"; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 sPayAmt = "1"; } else { //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //EncryptedCardNo(m_sInPutData, ref m_sInEncData, ref m_sInPutData); if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { string m_sInPutDataTemp = m_sInPutData; EncryptedCardNo(m_sInEncData, ref m_sInEncData, ref m_sInPutData); m_sInPutData = m_sInPutDataTemp; } sPayAmt = "0"; } } else { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 sPayAmt = "1"; } */ //변경 // IC 모드여도 키인 OR 바코드 스캔 시 MS 전문 타도록 수정 if (m_sInPutData == "" && m_sInEncData == "") { m_sInEncData = m_cDataCommon.MSR_CardNoCheck(txtCardNo.Value, "0000", ref m_sInPutType); // 유효기간 '0000' m_sInPutData = ""; m_sFallDiv = "0"; sPayAmt = "1"; } else { if (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF) { if (m_cDevStatus.ICReader.UseYn == true) { string m_sInPutDataTemp = m_sInPutData; EncryptedCardNo(m_sInEncData, ref m_sInEncData, ref m_sInPutData); m_sInPutData = m_sInPutDataTemp; } } sPayAmt = "0"; } m_bSearchSuccess = false; //#20180717 해피기프트(신) 조회 기능 추가 end string[] aRet = new string[1]; //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //string sPayAmt = "1"; txtAfterBalanceAmt.Text = "0"; //#20180717 해피기프트(신) 조회 기능 추가 start //기존 //txtBeforeBalanceAmt.Text = "0"; //변경 txtBeforeBalanceAmt.Text = ""; //#20180717 해피기프트(신) 조회 기능 추가 end //0:마스킹 카드번호 1:입력구분 2:카드번호 3:할부개월 4:총금액 5:봉사료 //6:세금 7:비밀번호 8:신용카드종류 9:칩데이터 10:사인 //11:Fallback구분 12:제휴할인금액 13:원승인번호 14:원승인일자 15:아이템코드 //16:매입사코드 17:매입사명 // 조회요청 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //string[] aParam = new string[] { PosConst.CREDITCARD_SEARCH_TYPE.POINT, m_InputType, m_sCardNo, sMonDiv, sPayAmt, "0", "0", "", "", m_sIcChip, "", m_sFallDiv, "0", "", "", "", "", "", "", "", "", "" }; string[] aParam = new string[] { PosConst.HPGIFTCARD_SEARCH_TYPE.HPGIFTCARD_SEARCH, m_sInPutType, m_sInEncData, "", sPayAmt, "0", "0", "", "", m_sInPutData, "", m_sFallDiv, "0", "", "", "", "", "", "", "", "", "" }; sRet = m_cHappyGiftCard.SearchPayment(aParam, ref aRet); if (sRet != UserCom.RST_OK) { WinManager.ErrorMessage(sRet); padInPut.SetActiveFocus(); txtCardNo.Value = ""; txtCardNo.Select(); return false; } //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 //Column.TR_PAYMENT.DATA m_cPayItem = (Column.TR_PAYMENT.DATA)m_cHappyGiftCard.GetPayment(new string[] { }); txtBeforeBalanceAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cDataService.DoubleParse(aRet[0].Trim())); // 거래전 잔액 //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 if (m_cDataService.DoubleParse(txtPayAmt.Text) <= m_cDataService.DoubleParse(txtBeforeBalanceAmt.Text)) { // 잔액이 받을금액보다 큰 경우 txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cDataService.DoubleParse(txtPayAmt.Text)); //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 txtAfterBalanceAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtBeforeBalanceAmt.Text), m_cDataService.DoubleParse(txtPayAmt.Text))); } else if (m_cDataService.DoubleParse(txtPayAmt.Text) > m_cDataService.DoubleParse(txtBeforeBalanceAmt.Text)) { // 잔액이 받을금액보다 작은 경우 txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cDataService.DoubleParse(txtBeforeBalanceAmt.Text)); //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 txtAfterBalanceAmt.Text = "0"; } //#20180717 해피기프트(신) 조회 기능 추가 start //변경 m_bSearchSuccess = true; //#20180717 해피기프트(신) 조회 기능 추가 end txtSaleAmt.Select(); txtSaleAmt.SelectText(); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } #endregion #region DeviceEvent 관련 /// /// DeviceEvent 관련 /// /// /// /// /// public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3) { try { switch (sDevice) { case PosConst.OPOS_DEVICE.MSR: this.Invoke(new EventHandler(OnMSREvent)); break; case PosConst.OPOS_DEVICE.SCANNER: this.Invoke(new EventHandler(OnScannerEvent)); break; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// MSR Event /// /// /// private void OnMSREvent(object source, EventArgs e) { try { string sMsrData = m_cDevStatus.Msr.Track2Data; if (sMsrData.Length > 0 && m_sInPutData == "") { m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP; m_sInPutData = sMsrData; txtCardNo.Text = m_sInPutData; //txtCardNo.ReadOnly = true; if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL) SearchTxtInPut(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 스캐너 이벤트 처리 /// /// /// private void OnScannerEvent(object source, EventArgs e) { try { string sScanData = m_cDevStatus.Scanner.DataLabel; if (sScanData.Length > 0 && m_sInPutData == "") { m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_KEYIN; m_sInPutData = sScanData; txtCardNo.Text = m_sInPutData; //txtCardNo.ReadOnly = true; if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL) SearchTxtInPut(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 카드 번호 암호화 /// /// /// /// /// private string EncryptedCardNo(string sInData, ref string sCardData, ref string sCardNo) { string sEncData = sInData; try { if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { UnRegIcCallback(); // IC리더 콜백 해지 } sEncData = m_cDeviceICReader.GetEncryptedCardNo(sInData).Trim(); if (CmUtil.MidH(sEncData, 0, 2) == "00") { sCardData = CmUtil.MidH(sEncData, 2, 512).Trim(); // Track|| sCardNo = CmUtil.MidH(sEncData, 514, sEncData.Length - 514).Trim(); // 마스킹 카드번호 } else { //암호화 처리 실패! UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Fail =>" + sInData); WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0280); sEncData = ""; } //if (txtCardNo.Value == "") tmrIcCard.Enabled = true; // IC리더 콜백 설정 --- 확인 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sEncData; } /// /// IC 카드 정보 입력 처리 /// /// private bool GetIcCardData(bool bCancelCallBack, int nSaleAmt) { string sRsvStr = ""; try { m_sInPutType = ""; m_sInPutData = ""; m_sInEncData = ""; m_sFallDiv = ""; m_sServiceCode = ""; if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { if (bCancelCallBack == true) UnRegIcCallback(); // IC리더 콜백 해지 txtCardNo.Value = ""; txtCardNo.ReadOnly = false; } else { // MSR return true; } if (m_cDeviceICReader.GetCardInfo_ICReader(PosConst.IC_READER_TRAN_TYPE.CREDIT, nSaleAmt, ref sRsvStr) == true) { if (CmUtil.MidH(sRsvStr, 0, 2) == "00") { txtCardNo.Value = CmUtil.MidH(sRsvStr, 1030, 37).Trim(); // 마스킹 카드번호 m_sInPutData = CmUtil.MidH(sRsvStr, 518, 512).Trim(); // IC Chip Data m_sInEncData = CmUtil.MidH(sRsvStr, 6, 512).Trim(); // Track|| 데이터 if (CmUtil.MidH(sRsvStr, 4, 2).Trim() == "02") // PosEntryMode(02:Swipe, 03: IC) { m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP; } else { m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC; } m_sServiceCode = CmUtil.MidH(sRsvStr, 1067, 5).Trim(); // 서비스코드 m_sFallDiv = CmUtil.MidH(sRsvStr, 3, 1); // == "3" ? "0" : "1"; // 거래매체유형(0:미지정, 1:MS, 2:IC, 3:Fallback) //tmrIcCard.Enabled = true; // IC리더 콜백 설정 return true; } } //if (txtCardNo.Value == "") tmrIcCard.Enabled = true; // IC리더 콜백 설정 --- 확인 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } #endregion #region 여전법 대응 /// /// ZeroFill 초기화 /// private void InDataToZeroFill() { try { //여전법 대응! ////////////////////////////////////////////////////////////////////////////////// CmUtil.ZeroFillClear(ref m_sInEncData); CmUtil.ZeroFillClear(ref m_sInPutData); ////////////////////////////////////////////////////////////////////////////////// //#20180717 해피기프트(신) 조회 기능 추가 start //변경 m_bSearchSuccess = false; txtBeforeBalanceAmt.Text = string.Empty; //#20180717 해피기프트(신) 조회 기능 추가 end txtCardNo.Value = string.Empty; } catch (Exception) { } } #endregion 여전법 대응 #region IC리더 콜백 관련 /// /// IC리더 콜백 설정 /// /// /// private void tmrIcCard_Tick(object sender, EventArgs e) { try { if (m_cDevStatus.ICReader.UseYn != true) // 여전법 인증여부(0:MSR, 1:IC) { tmrIcCard.Enabled = false; return; } if (tmrIcCard.Tag == null || tmrIcCard.Tag.ToString() == "") { // IC리더 콜백 설정 if (bNotDoubleClik) return; tmrIcCard.Enabled = false; //#20170918 IC 콜백 함수 변경 start //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정. //기존 m_cDeviceICReader.RegIcCallback(delegateReader); //변경 //string sApprID = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID); //m_cDeviceICReader.RegIcCallbackCardInfo(sApprID, m_cDataService.IntParse(txtSaleAmt.Value), delegateReaderCardInfo); //#20170918 IC 콜백 함수 변경 end } else if (tmrIcCard.Tag.ToString() == "MSR") { // MSR 카드 읽기 tmrIcCard.Enabled = false; tmrIcCard.Tag = ""; tmrIcCard.Interval = 500; //bNotDoubleClik = false; //SearchTxtInPut(); //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 start txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER); //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 end tmrIcCard.Enabled = true; } else if (tmrIcCard.Tag.ToString() == "IC") { // IC리더 카드 읽기 tmrIcCard.Enabled = false; tmrIcCard.Tag = ""; tmrIcCard.Interval = 500; bNotDoubleClik = false; btnProc_Click(btnICCard, null); } else tmrIcCard.Enabled = false; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } delegate void DelegateIcReaderCallBack(int rc, StringBuilder str); /// /// IC리더 콜백 함수 /// /// /// public void OnIcReaderCallBack(int num, StringBuilder str) { try { if (txtCardNo.InvokeRequired) { DelegateIcReaderCallBack d = new DelegateIcReaderCallBack(OnIcReaderCallBack); this.Invoke(d, new object[] { num, str }); } else { if (bNotDoubleClik) return; bNotDoubleClik = true; if (num == 1) { // IC 카드 tmrIcCard.Tag = "IC"; tmrIcCard.Interval = 100; } else { // MSR 카드 if (str.ToString().StartsWith("EN") == true) { m_sInPutType = ""; // 입력구분 m_sInPutData = ""; // 입력데이터 m_sInEncData = ""; // 카드데이터 txtCardNo.Value = CmUtil.MidH(str.ToString(), 512, 40).Trim(); //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 Start //기존 //m_sInPutData = CmUtil.MidH(str.ToString(), 0, 512).Trim(); //변경 m_sInEncData = CmUtil.MidH(str.ToString(), 0, 512).Trim(); //#16536 PB 판교원마을_해피기프트 실물카드 결제 시 오류 팝업되는 증상 end m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP; m_sServiceCode = CmUtil.MidH(str.ToString(), 552, 5).Trim(); m_sFallDiv = "0"; tmrIcCard.Tag = "MSR"; tmrIcCard.Interval = 100; } else { tmrIcCard.Interval = 500; } } tmrIcCard.Enabled = true; bNotDoubleClik = false; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); bNotDoubleClik = false; } } /// /// IC리더 콜백 해지 /// private void UnRegIcCallback() { try { if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { tmrIcCard.Enabled = false; //#20170918 IC 콜백 함수 변경 start //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정. //기존 m_cDeviceICReader.UnRegIcCallback(); //변경 //m_cDeviceICReader.UnRegIcCallbackCardInfo(); //#20170918 IC 콜백 함수 변경 end } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20170918 IC 콜백 함수 변경 start //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정. /* delegate void DelegateWriteLog(int returnValue, StringBuilder returnData); /// /// IC리더 콜백 함수(CardInfo) /// /// /// public void OnIcReaderCallBackCardInfo(int returnValue, StringBuilder returnData) { if (txtCardNo.InvokeRequired) { DelegateWriteLog d = new DelegateWriteLog(OnIcReaderCallBackCardInfo); this.Invoke(d, new object[] { returnValue, returnData }); } else { if (m_bCardInPut) return; m_bCardInPut = true; if (returnValue > 0) { string sRsvStr = returnData.ToString(); if (CmUtil.MidH(sRsvStr, 0, 2) == "00") { m_sCardNo = CmUtil.MidH(sRsvStr, 6, 512).Trim(); txtCardNo.Value = CmUtil.MidH(sRsvStr, 1030, 37).Trim(); m_sIcChip = CmUtil.MidH(sRsvStr, 518, 512).Trim(); if (CmUtil.MidH(sRsvStr, 4, 2).Trim() == "02") { m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP; } else { m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC; } m_sServiceCode = CmUtil.MidH(sRsvStr, 1067, 5).Trim(); m_sFallDiv = CmUtil.MidH(sRsvStr, 3, 1); // == "3" ? "0" : "1"; // IC 카드(CardInfo) tmrIcCard.Tag = "ICREADER"; tmrIcCard.Interval = 100; tmrIcCard.Enabled = true; m_bCardInPut = false; } } } } */ //#20170918 IC 콜백 함수 변경 end #endregion //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 /// /// RF 카드 정보 입력 처리 /// /// private bool GetRfCardData(string SaleAmt) { string sRsvStr = ""; try { txtCardNo.Value = ""; //카드 정보 입력 if (m_cDeviceICReader.GetRfEtcCardInfo("G", SaleAmt, "", "", "", ref sRsvStr) == false) { if (sRsvStr != "") WinManager.ErrorMessage(sRsvStr); return false; } txtCardNo.Value = CmUtil.MidH(sRsvStr, 1, 16).Trim(); m_sInEncData = CmUtil.MidH(sRsvStr, 1, 40).Trim();// Track|| 데이터 m_sInMaskData = CmUtil.MidH(sRsvStr, 81, 512).Trim(); m_sInPutData = m_sInMaskData;// chip data m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } finally { // 여전법 대응//////////////////////////////////////////////////////////////////// CmUtil.ZeroFillClear(ref sRsvStr); ////////////////////////////////////////////////////////////////////////////////// } return false; } //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 start #region 해피기프트카드 선리딩 처리를 위한 이벤트 오버로딩 public void txtEditBox_EditBoxKeyDownEvent(object sender, string _strHappyGiftCardNo, object _strDiv) { #region 구분(_strDiv) 값이 ''(공백)일 경우 카드 번호만 표시한다. if (_strDiv == null) { // 카드 번호 설정 txtCardNo.Value = _strHappyGiftCardNo; // 카드 번호 설정 후 clear m_cPosStatus.Sale.strHappyGiftCardNo = ""; } #endregion #region 구분(_strDiv) 값이 '조회'일 경우 카드 번호 표시후 조회까지 처리한다. else if (((Cosmos.UI.CsmButton)_strDiv) == btnSearch) { // 카드 번호 설정 ----- txtCardNo.Value = _strHappyGiftCardNo; // 카드 번호 설정 후 clear m_cPosStatus.Sale.strHappyGiftCardNo = ""; // 카드 조회 이벤트 호출 ----- txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER); } #endregion #region 구분(_strDiv) 값이 '승인'일 경우 제휴할인 카드 번호 표시후 승인까지 처리한다. else if (((Cosmos.UI.CsmButton)_strDiv) == btnEnter) { // 카드 번호 설정 txtCardNo.Value = _strHappyGiftCardNo; // 카드 번호 설정 후 clear m_cPosStatus.Sale.strHappyGiftCardNo = ""; // 카드 조회 이벤트 호출 txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER); // 카드 승인 이벤트 호출 btnProc_Click(btnEnter, null); } #endregion } #endregion 해피기프트카드 선리딩 처리를 위한 이벤트 오버로딩 //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 end } }