using System; using System.Drawing; using System.Windows.Forms; using System.Text; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Collections; namespace Cosmos.Win { public partial class frmCreditCard : 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 IDataProcessUs m_cDataService = null; private IPaymentUs m_cCreditCard = null; // 신용카드 결제 클래스 private ICampaignUs m_cCampaingMain = null; // 캠페인 관리 private IICReaderUs m_cICReader = null; // IC리더기 private ISignPadUs m_cSignPad = null; // 사인패드 private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 //MoonSeokWoo 2017.12.14 Add private IPaymentExpUs m_cHappyPoint = null; // 해피포인트 적립 //MoonSeokWoo 2017.12.14 End //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start private IPaymentUs m_cHappyGiftCard = null; // 해피기프트(신) //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리 private PosOLEDevice.DelegateOlePos delegatePos; private PosOLEDevice.DelegateIcReader delegateReader; // IC리더 콜백 private PosOLEDevice.CallbackIc delegateReaderCardInfo; // IC리더 콜백(CardInfo) //private Column.TR_PAYMENT.DATA m_cMultiCard = null; private bool m_bApproval; //중복 승인 방지 체크 private bool m_bCardInPut; //카드 입력 중복 방지 private string m_InputType = ""; //PosConst.POS_VAN_MASTER.VAN_KEYIN; //입력구분 //private string m_sApptype; //정상,취소 구분(0:정상,1:취소/반품) private string m_sCardNo; //입력 카드 번호 private string m_sSign; //사인 데이터 private string m_sIcChip; //IC CHIP DATA(EMV) private string m_sPassWord; //비밀번호(은련카드) private string m_sService; //봉사료 private string m_sTax; //세금 private string m_sCardKind; //카드종류 //private string m_sPaySeq; //취소시 결제 순번 //private string m_sCanCardNo; //취소시 카드 번호 private string m_sFallDiv; //FallBack구분 private string m_sItemCode; //아이템코드 private string m_sServiceCode; //서비스코드 private string m_sMediaType; //매체구분 private double m_dCreditCardDcAtm; //카드할인금액 private string m_sCreditCardDcTy; //카드할인타입 public string SetDcTy { set { this.m_sCreditCardDcTy = value; } } private double m_nSamsungPoint; // 삼성포인트 public double SetSamsungPoint { set { this.m_nSamsungPoint = value; } } private string m_sPayAmtIn; public string SetPayAmt { set { m_sPayAmtIn = value; } } // 판매등록시 사용자 입력 금액 private string m_sPosMenuKey; /// /// POS 기능키 /// public string SetPosMenuKey { set { this.m_sPosMenuKey = value; } } /// /// 받을금액 /// private double m_nRemainPayAmt = 0; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start /// /// 카드구분(B:현대오일뱅크, C:신용카드, H:HP, L:LG, S:SK, N:해피기프트(신)) /// private string m_sCardDiv; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj private string m_sMobileCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj #endregion 변수 선언 #region 생성자 & 소멸자 public frmCreditCard() { 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_cCreditCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CREDITCARD); m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); m_cICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER); m_cSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); //*** MoonSeokWoo 2017.12.14 Add m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT); //*** MoonSeokWoo 2017.12.14 End //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_cHappyGiftCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.HPGIFTCARD); //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent); delegateReader = new PosOLEDevice.DelegateIcReader(OnIcReaderCallBack); // IC리더 콜백 delegateReaderCardInfo = new PosOLEDevice.CallbackIc(OnIcReaderCallBackCardInfo); // IC리더 콜백(CardInfo) } private void frmCreditCard_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(); //if (string.IsNullOrEmpty(m_sApptype)) m_sApptype = ItemConst.SALE_APP_DIV.APP_NORMAL; // 고객화면 캠페인 컨텐츠 표시 m_cCampaingMain.CustDisplayCampaign(ItemConst.CPI_CUST_PAY_TYPE.CREDTCARD); tmrIcCard.Tag = ""; tmrIcCard.Enabled = true; // IC리더 콜백 설정 } private void frmCreditCard_FormClosing(object sender, FormClosingEventArgs e) { tmrIcCard.Tag = "CLOSE"; // 마우스(이중클릭방지) Point nPoint = System.Windows.Forms.Cursor.Position; Cursor.Clip = new System.Drawing.Rectangle(1024, 0, 1, 1); this.Update(); m_sCreditCardDcTy = ""; m_dCreditCardDcAtm = 0; 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); // 마우스(이중클릭방지) Cursor.Clip = Screen.PrimaryScreen.Bounds; Cursor.Position = nPoint; } private void frmCreditCard_Activated(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(delegatePos); } private void frmCreditCard_Deactivate(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(null); } #endregion 생성자 & 소멸자 #region 폼 컨트롤 초기화 /// /// 폼 컨트롤 초기화 /// 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); 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 = ""; btnEnter.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0058); lblCardNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0051); lblPayAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0049); lblDivMonth.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0050); lblApprNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0053); lblDcAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0036); lblAppAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0066); btnMenu1.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0614); btnMenu2.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0795); btnMenu3.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0056); btnApprMenual.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0364); btnCatApp.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0854); btnMobileCashSearch.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0403); if (PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.T_MONEY, PosMst.MST_PAY_DC.DATA.USE_YN) == "1" || PosMstManager.GetMstPayDc(ItemConst.TR_ITEM_ID.MOBILECASH_ITEM, ItemConst.TR_ITEM_ID.MOBILECASH.CASHBEE, PosMst.MST_PAY_DC.DATA.USE_YN) == "1") { btnMenu2.Visible = true; btnMenu2.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0795); btnMobileCashSearch.Visible = true; } else { btnMenu2.Visible = false; btnMobileCashSearch.Visible = false; btnMenu2.Text = ""; } txtCardNo.Text = ""; txtCardComp.Text = ""; txtCardComp.Tag = ""; txtPayAmt.Text = ""; txtDivMonth.Text = ""; txtApprNo.Text = ""; txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(0); txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(0); //m_sCanCardNo = ""; m_sCardNo = ""; m_sSign = ""; m_sIcChip = ""; m_sPassWord = ""; m_sService = "0"; m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtAppAmt.Value)).ToString(); //세금 m_sCardKind = ""; m_InputType = ""; //PosConst.POS_VAN_MASTER.VAN_KEYIN; //입력구분 m_sServiceCode = ""; m_sItemCode = ""; m_sMediaType = ""; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_sCardDiv = ""; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj if (string.IsNullOrEmpty(m_cPosStatus.Sale.SaleMainPayStep)) m_cPosStatus.Sale.SaleMainPayStep = "3"; ckbUnionPay.Checked = false; txtPayAmt.Enabled = true; txtApprNo.Enabled = true; if (m_cDevStatus.CatTerminal.UseYn == false) btnCatApp.Visible = false; else btnCatApp.Visible = true; if (m_sCreditCardDcTy == ItemConst.CREDITCARD_DC_TY.CREDIT_SPNT) { // 삼성포인트 ckbSamsungPoint.Checked = (m_nSamsungPoint == 1 ? true : false); } else { m_nSamsungPoint = 0; ckbSamsungPoint.Checked = false; } ckbSamsungPoint.Visible = ckbSamsungPoint.Checked; m_bCardInPut = false; txtPayAmt.Enabled = true; txtDivMonth.Enabled = true; txtApprNo.Enabled = true; string sPayamt = m_cPosStatus.Global.NumericTOCurrency(0); m_nRemainPayAmt = m_cTrnStatus.Sale.RemainPayAmt; if (string.IsNullOrEmpty(m_sPayAmtIn) == false) { if (m_nRemainPayAmt < m_cDataService.DoubleParse(m_sPayAmtIn)) { sPayamt = m_cPosStatus.Global.NumericTOCurrency(m_nRemainPayAmt); } else { sPayamt = m_cPosStatus.Global.NumericTOCurrency(m_cDataService.DoubleParse(m_sPayAmtIn)); } } else { sPayamt = m_cPosStatus.Global.NumericTOCurrency(m_nRemainPayAmt); } txtPayAmt.Text = sPayamt; // 결제 대상 금액 if (string.IsNullOrEmpty(m_sPosMenuKey)) m_sPosMenuKey = PosKey.MENU_KEY.CREDIT_CARD; InitPayMainBack(m_cPosStatus, m_cDataCommon, m_sPosMenuKey, PosConst.MOT_MSG_TYPE.PAY_STEP_3, ""); txtAppAmt.Text = sPayamt; //if (btnApprMenual.Text == "") //{ // btnApprMenual.Visible = false; //} //else //{ // btnApprMenual.Visible = true; //} ckbUnionPay.Enabled = true; m_sPayAmtIn = ""; // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { if (m_cDevStatus.ICReader.Integrity_IC_Status != true && m_cDevStatus.ICReader.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0384); } //GetCreditDcAmt(); //SetFuncSelectColor(""); //txtApprNo.OneDigitEvent = true; // 기능 버튼 설정 체크 FormManager.SetbtnMenu(txtCardNo, m_cDevStatus.ICReader.UseYn, btnMenu1, btnMenu2, btnMenu3, btnMenu4); txtPayAmt.Select(); txtPayAmt.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 Control Event private void tmrPinPad_Tick(object sender, EventArgs e) { try { tmrPinPad.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); } } /// /// 결제 금액 변경 이벤트 /// /// /// private void txtPayAmt_EditBoxTextChangedEvnet(object sender, EventArgs e) { try { //if (CheckTxtInPut(txtPayAmt) == false) return; if (m_dCreditCardDcAtm > 0) { txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_dCreditCardDcAtm); txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtPayAmt.Value), m_dCreditCardDcAtm)); } else { txtAppAmt.Value = txtPayAmt.Value; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString()); } } #region 버튼 입력 처리 /// /// 버튼 입력 처리 /// /// /// private void btnProc_Click(object sender, EventArgs e) { try { if (((Cosmos.UI.CsmButton)sender).Text == "") return; //텍스트가 없는것은 무시 if (((Cosmos.UI.CsmButton)sender).Name.StartsWith("btnMenu")) SetFuncSelectColor(sender, true); if (((Cosmos.UI.CsmButton)sender) == btnApprMenual) // 임의등록 { txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.CNVN_REG); } else if (((Cosmos.UI.CsmButton)sender) == btnEnter) // 승인 { txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.APPROVAL); } else if (((Cosmos.UI.CsmButton)sender) == btnMenu3) // 이동단말기 { txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.PDA_APP_LOG); } else if (((Cosmos.UI.CsmButton)sender) == btnCatApp) // CAT 단말기 { txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.CAT_TERMINAL); } else if (((Cosmos.UI.CsmButton)sender) == btnMobileCashSearch ) // 잔액조회 { string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" }); if (sRet == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); Application.DoEvents(); } //return; } else if (((Cosmos.UI.CsmButton)sender) == btnMenu2) // 티머니/캐시비 { if (m_cDataService.DoubleParse(txtPayAmt.Value) == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0038); } else { UnRegIcCallback(); // IC리더 콜백 해지 string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, m_cDataService.DoubleParse(txtPayAmt.Text).ToString(), "A" }); if (sRet == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); Application.DoEvents(); } else { if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } } //return; } else if (((Cosmos.UI.CsmButton)sender) == btnMenu1) // PayOn { //if (m_cDataService.DoubleParse(txtPayAmt.Value) == 0) //{ // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0038); //} //else //{ // PayOnAppy(); //} //return; txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.PAY_ON); } //GetRfCreditCardInfo 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); } finally { if (((Cosmos.UI.CsmButton)sender).Name.StartsWith("btnMenu")) SetFuncSelectColor(sender, false); } } /// /// 버튼 선택 색상 변경 /// /// private void SetFuncSelectColor(object sender, bool bSelected) { try { //if (bSelected == true) //{ // ((UI.CsmButton)sender).BackColor = Color.FromArgb(70, 86, 98); // ((UI.CsmButton)sender).ForeColor = Color.White; //} //else //{ // ((UI.CsmButton)sender).BackColor = Color.White; // ((UI.CsmButton)sender).ForeColor = Color.FromArgb(70, 86, 98); //} //foreach (Control c in this.Controls) //{ // if (c is Cosmos.UI.CsmButton) // { // if (c.Name.StartsWith("btnMenu") && c.Name.Length == 8) // { // if (c.Name == sBtnName) // { // c.BackColor = Color.FromArgb(70, 86, 98); // c.ForeColor = Color.White; // } // else // { // c.BackColor = Color.White; // c.ForeColor = Color.FromArgb(70, 86, 98); // } // } // } //} } 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_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); } } #endregion #region 텍스트박스 키 입력 이벤트 처리 /// /// 텍스트박스 키 입력 이벤트 처리 /// /// /// private void txtEditBox_EditBoxKeyDownEvent(object sender, string sFuncValue) { try { if (sFuncValue == PosKey.MENU_KEY.ENTER) { if (((Cosmos.UI.CsmPosEditBox)sender) == txtPayAmt) { if (CheckTxtInPut(txtPayAmt) == false) return; if (m_dCreditCardDcAtm > 0) { txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_dCreditCardDcAtm); txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtPayAmt.Value), m_dCreditCardDcAtm)); } else { txtAppAmt.Value = txtPayAmt.Value; } txtDivMonth.Select(); } else if (((Cosmos.UI.CsmPosEditBox)sender) == txtDivMonth) { if (CheckTxtInPut(txtDivMonth) == false) return; txtCardNo.Select(); } else if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { // 카드 KEY-IN 없음! - 여전법대응 //if (txtCardNo.Text != "") //{ // if (CheckTxtInPut(txtCardNo) == false) return; // if (txtCardNo.Text != "") // { // m_sCardNo = EncryptedCardNo(txtCardNo.Value); // if (m_sCardNo == "") return; // m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_KEYIN; // //입력 카드 번호 마스킹 // txtCardNo.Value = CmUtil.MakePersonInfo(txtCardNo.Value); // } // //if (m_sApptype == ItemConst.SALE_APP_DIV.APP_NORMAL) // //{ // CardDataDisplay(); // txtApprNo.Select(); // //} //} //else //{ // if (m_bCardInPut == true) return; // m_bCardInPut = true; // if (GetCardInfo() == true) // { // CardDataDisplay(); // //txtApprNo.Select(); // txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.APPROVAL); // } // else // { // //카드 입력 에러 다시 입력 하세요. // txtCardNo.Select(); // } // m_bCardInPut = false; //} if (txtCardNo.Value == "" || m_sCardNo == "") { if (m_bCardInPut == true) return; m_bCardInPut = true; if (GetCardInfo(true) == false) { //카드 입력 에러 다시 입력 하세요. txtCardNo.Select(); m_bCardInPut = false; return; } CardDataDisplay(); } txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.APPROVAL); m_bCardInPut = false; } } else if (sFuncValue == PosKey.MENU_KEY.CLEAR) { if (((Cosmos.UI.CsmPosEditBox)sender) == txtApprNo) { // 승인번호 없을 때 카드 번호 클리어 if (txtApprNo.Text != "") { if (((Cosmos.UI.CsmPosEditBox)sender).ReadOnly == false) ((Cosmos.UI.CsmPosEditBox)sender).Text = ""; } else { m_sCardNo = ""; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_sCardDiv = ""; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End txtCardNo.Value = ""; txtCardNo.Select(); } } else if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj txtCardNo.Value = ""; txtCardNo.Select(); tmrIcCard.Enabled = true; // IC리더 콜백 설정 } else { if (((Cosmos.UI.CsmPosEditBox)sender).ReadOnly == false) ((Cosmos.UI.CsmPosEditBox)sender).Text = ""; } } else if (sFuncValue == PosKey.MENU_KEY.ESC_PREVIOUS) { ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // 캠페인 취소 처리 m_cCampaingMain.CancelCampaignPayment(alPayItem.Count.ToString(), ""); this.DialogResult = DialogResult.Cancel; this.Close(); } else if (sFuncValue == PosKey.MENU_KEY.APPROVAL) { // 연습모드에서 신용카드 승인 시 POP-UP 알림 띄움(2017.07.03) if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0700); } //2016-10-25 변경 요청 -> 승인버튼 입력시 카드 번호 입력 후 승인 처리 if (txtCardNo.Value == "" || m_sCardNo == "") { if (AutoSetApprProcess() == false) { if (txtCardNo.Value == "") tmrIcCard.Enabled = true; return; } } //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 Start // 기존 /* if (CheckTxtInPut(null) == false) { if (txtCardNo.Value == "") tmrIcCard.Enabled = true; return; } */ //변경 else { if (CheckTxtInPut(null) == false) { if (txtCardNo.Value == "") tmrIcCard.Enabled = true; return; } } //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 End UnRegIcCallback(); // IC리더 콜백 해지 CompleteTxtInPut(1); if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } else if (sFuncValue == PosKey.MENU_KEY.CAT_TERMINAL) { //사용유무체크 // if (m_cDevStatus.CatTerminal.UseYn == false) //WinManager.ErrorMessage(); //단말기 사용 엔터키 입력 if (CheckTxtInPut(txtPayAmt) == false) return; if (CheckTxtInPut(txtDivMonth) == false) return; CompleteTxtInPut(2); } else if (sFuncValue == PosKey.MENU_KEY.PAY_ON) { if (CheckTxtInPut(txtPayAmt) == false) return; UnRegIcCallback(); // IC리더 콜백 해지 CompleteTxtInPut(3); if (txtCardNo.Value == "") tmrIcCard.Enabled = true; } else if (sFuncValue == PosKey.MENU_KEY.CNVN_REG) { //if (CheckTxtInPut(null) == false) return; //CompleteTxtInPut(2); if (m_cDataService.DoubleParse(txtAppAmt.Value) > m_nRemainPayAmt) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0039); return; } if (RegManualAppr() == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); } } else if (sFuncValue == PosKey.MENU_KEY.PDA_APP_LOG) { if (RegPadApp() == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; 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); } } #endregion #region 텍스트박스 입력 유효성 체크 /// /// 텍스트박스 입력 유효성 체크 /// /// /// private bool CheckTxtInPut(object sender) { 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 { } // 결제 금액 체크 if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtPayAmt) { if (m_cDataService.DoubleParse(txtPayAmt.Value) == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0038); return false; } if (m_cDataService.DoubleParse(txtAppAmt.Value) > m_cTrnStatus.Sale.RemainPayAmt) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0039); return false; } if (m_cDataService.DoubleParse(txtPayAmt.Value) <= m_dCreditCardDcAtm) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0131); return false; } if (txtPayAmt.Value.Length > 10) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0035); // 입력한 금액이 너무 큰 금액 입니다. return false; } if (CmUtil.AmountCut(m_cDataService.DoubleParse(txtPayAmt.Value), CmUtil.IntParse(m_cPosStatus.Mst.PayRudDwLoc)) != m_cDataService.DoubleParse(txtPayAmt.Value)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0036); // 입력한 금액은 입력 불가 단위 입니다. return false; } //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 Start // 기존 //#15962 PB 시청역 - 분할결제 및 카드결제관련 수정요청건 Start //적용시 주석 #region 주석 if (m_cTrnStatus.Sale.RemainPayAmt != m_cDataService.DoubleParse(txtPayAmt.Value)) { // IC리더 카드 읽기 //#20180122 금액 변경시 거래매체유형이 "1"이 아닌 경우에만 카드 재리딩 기능 적용 start //테스트 후 배포 예정 //기존 /* if (m_bCardInPut == true) return false; m_bCardInPut = true; if (GetCardInfo(true) == true) { CardDataDisplay(); } else { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0095); m_bCardInPut = false; return false; } m_bCardInPut = false; */ //변경 //m_sFallDiv 1 : 칩이 없는 카드 //칩이없는 카드는 재리딩 할 필요가 없기 때문에(칩 데이터 생성 불필요) 재리딩 안하도록 수정 if (m_sFallDiv != "1") { if (m_bCardInPut == true) return false; m_bCardInPut = true; if (GetCardInfo(true) == true) { CardDataDisplay(); } else { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0095); m_bCardInPut = false; return false; } m_bCardInPut = false; } //#20180122 금액 변경시 거래매체유형이 "1"이 아닌 경우에만 카드 재리딩 기능 적용 end } #endregion //#15962 PB 시청역 - 분할결제 및 카드결제관련 수정요청건 end //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 End } //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 Start // 변경 if (sender == null) { if (m_cTrnStatus.Sale.RemainPayAmt != m_cDataService.DoubleParse(txtPayAmt.Value)) { // IC리더 카드 읽기 //m_sFallDiv 1 : 칩이 없는 카드 //칩이없는 카드는 재리딩 할 필요가 없기 때문에(칩 데이터 생성 불필요) 재리딩 안하도록 수정 if (m_sFallDiv != "1") { if (m_bCardInPut == true) return false; m_bCardInPut = true; if (GetCardInfo(true) == true) { CardDataDisplay(); } else { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0095); m_bCardInPut = false; return false; } m_bCardInPut = false; } } } //20171116 신용카드 창에서 금액 변경 후 바로 승인버튼 선택했을 시 카드 여러번 리딩하는 현상 수정 End if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtDivMonth) { // 할부개월 입력 여부 if (txtDivMonth.Value == "") { txtDivMonth.Value = "00"; } else { txtDivMonth.Value = txtDivMonth.Value.ToString().PadLeft(2, '0'); } //#13341 신용카드 할부 개월 수 제한 기능 적용 start, phj // 1. 신용카드 할부 개월 수 제한 기능 적용 // 2. 공통코드에 [신용카드 허용 할부개월 수] 추가 후 해당 개월 수 이상 입력 시 string sDivMonth = string.Empty; sDivMonth = m_cDataCommon.MstCmmSearch("T0033", "1"); if (sDivMonth != "") { if (int.Parse(sDivMonth, 0) < int.Parse(txtDivMonth.Value, 0)) { WinManager.ConfirmMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0766), sDivMonth)); txtDivMonth.Value = "00"; return false; } } //#13341 신용카드 할부 개월 수 제한 기능 적용 end, phj } // 카드번호 길이 체크 if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo) { if (txtCardNo.Value.Length < 6) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0037); txtCardNo.Text = ""; return false; } } //// 할부개월 체크 //if (m_cDataService.DoubleParse(txtDivMonth.Value) >= 60) //{ // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0528); // txtDivMonth.Value = ""; // return 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); return false; } return true; } #endregion #region 텍스트박스 입력 완료 처리 /// /// 텍스트박스 입력 완료 처리 /// /// /// private bool CompleteTxtInPut(int nFlowMode) { string sRet = UserCom.RST_ERR; try { // 승인금액 또는 결제 금액을 확인 하세요. if (m_cDataService.DoubleParse(txtAppAmt.Value) <= 0) { MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0597); return false; } if (nFlowMode == 1) // 신용카드 승인 처리 { // 중복 승인 방지 체크 if (m_bApproval == true) return false; m_bApproval = true; sRet = CreditCardApproval(); m_bApproval = false; if (sRet != UserCom.RST_OK) { InDataToZeroFill(); //#20170830 신용승인 실패시 사운드 출력 start System.Media.SystemSounds.Beep.Play(); //#20170830 신용승인 실패시 사운드 출력 start if (sRet != UserCom.RST_ERR) //에러 코드만일때는 메세지 표기 안함! WinManager.ErrorMessage(sRet); txtCardNo.Focus(); padInPut.SetActiveFocus(); return false; } //*** MoonSeokWoo 2017.12.14 Add else { //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj //기존 /* if (PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") { m_cHappyPoint.SetCoopPaymentIC(new string[] { "", "" }); } */ //변경 if (PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") { m_cHappyPoint.SetCoopPaymentIC(new string[] { "", "", m_sMobileCode }); } //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj } //*** MoonSeokWoo 2017.12.14 End } else if (nFlowMode == 2) // CAT 단말기 승인 { // 중복 승인 방지 체크 if (m_bApproval == true) return false; m_bApproval = true; sRet = CatTerminalApproval(); m_bApproval = false; if (sRet != UserCom.RST_OK) { InDataToZeroFill(); if (sRet != UserCom.RST_ERR) //에러 코드만일때는 메세지 표기 안함! WinManager.ErrorMessage(sRet); txtCardNo.Focus(); padInPut.SetActiveFocus(); return false; } } else if (nFlowMode == 3) // PayOn { // 중복 승인 방지 체크 if (m_bApproval == true) return false; m_bApproval = true; sRet = PayOnAppy(); m_bApproval = false; if (sRet != UserCom.RST_OK) { InDataToZeroFill(); if (sRet != UserCom.RST_ERR) //에러 코드만일때는 메세지 표기 안함! WinManager.ErrorMessage(sRet); txtCardNo.Focus(); padInPut.SetActiveFocus(); return false; } } else { return false; //if (m_bApproval == true) return false; //m_bApproval = true; ////임의 등록 //if (txtApprNo.Value.Length < 6) //{ // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0040); // m_bApproval = false; // txtApprNo.Select(); // return false; //} //sRet = MenualApproval(); //m_bApproval = false; //if (sRet != UserCom.RST_OK) //{ // padInPut.SetActiveFocus(); // return false; //} } // 캠페인 할인결제 확정 처리 => 키값 ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); m_cCampaingMain.CompleteCampaignPayment((alPayItem.Count - 1).ToString()); this.DialogResult = DialogResult.OK; 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); return false; } return true; } #endregion #endregion Control Event #region User Method #region 카드데이터 화면 표시 /// /// 카드데이터 화면 표시 /// /// private void CardDataDisplay() { 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 { } //if (m_dCreditCardDcAtm > 0) //{ // //txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_dCreditCardDcAtm); // //txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtPayAmt.Value), m_dCreditCardDcAtm)); //} //else //{ // 캠페인 처리 => 키값(취소시사용),카드번호,캠페인대상,지불구분,지불금액 ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); double nDisAmt = m_cCampaingMain.ExecuteCampaignPayment(alPayItem.Count.ToString(), CmUtil.RPadH(txtCardNo.Text, 32) + m_sServiceCode, ItemConst.CPI_CUST_PAY_TYPE.CREDTCARD, m_cDataService.DoubleParse(txtPayAmt.Value)); if (nDisAmt >= m_cDataService.DoubleParse(txtAppAmt.Text)) { // 캠페인 취소 처리 m_cCampaingMain.CancelCampaignPayment(alPayItem.Count.ToString(), ""); txtCardNo.Value = ""; m_sCardNo = ""; m_InputType = ""; m_sIcChip = ""; m_sFallDiv = ""; m_sServiceCode = ""; m_sItemCode = ""; WinManager.ErrorMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0598), nDisAmt, txtPayAmt.Value)); return; } txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(nDisAmt); // 캠페인 할인금액 txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtPayAmt.Value), nDisAmt)); // 승인금액 if (nDisAmt > 0 && m_InputType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC) { if (GetCardInfo(true) != true) { //카드 읽기 실패 카드를 다시 읽혀 주세요. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0095); return; } } //} string[] aRet = new string[4]; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_sCardDiv = ""; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End string sRet = m_cCreditCard.SearchPayment(new string[] { PosConst.CREDITCARD_SEARCH_TYPE.PREFIX, CmUtil.MidH(txtCardNo.Value, 0, 6).ToString() }, ref aRet); if (sRet == UserCom.RST_OK) { //카드구분 txtCardComp.Text = aRet[1]; txtCardComp.Tag = aRet[2]; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_sCardDiv = aRet[0].Trim(); //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 start //if (CmUtil.MidH(txtCardNo.Value, 0, 6).ToString() == "428231"&& aRet[2] == "98") if (aRet[0].Trim() == "C" && aRet[2] == "98") { // 해피 기프트 카드인 경우 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HAPPY_GIFTCARD, PosKey.MENU_KEY.HAPPY_GIFTCARD, txtCardNo.Value, m_sCardNo, m_InputType }); if (sRet == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); Application.DoEvents(); } else { this.DialogResult = DialogResult.Cancel; this.Close(); Application.DoEvents(); } } //#20180612 신용카드, 해피기프트(신) 화면에서 해피기프트(구) 카드번호 리딩되도록 수정 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); } } #endregion #region 카드번호 조회 /// /// 카드번호 조회 /// /// /// /// /// private bool CardSearch(string sCardData, bool bMenual, string sUniEtcData, bool bNFCCard) { try { //조회 필요시 처리 } 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 string CreditCardApproval() { string sDivMonth = ""; string sRet = UserCom.RST_ERR; try { //InParam //0:마스킹 카드번호 1:입력구분 2:카드번호 3:할부개월 4:총금액 5:봉사료 //6:세금 7:비밀번호 8:신용카드종류 9:칩데이터 10:사인 //11:Fallback구분 12:제휴할인금액(캠페인) 13:원승인번호 14:원승인일자 15:아이템코드 //16:매입사코드 17:매입사명 18:할인카드구분 19:할인금액 20:승인구분 21:매체구분 22:서비스코드 // 삼성포인트 sDivMonth = string.Format("{0:00}", txtDivMonth.Value.Trim()); if (m_nSamsungPoint == 1) { // 삼성포인트 사용시 할부개월 + 60 sDivMonth = string.Format("{0:00}", CmUtil.DoubleAdd(m_cDataService.DoubleParse(sDivMonth), 60).ToString()); } sRet = UnionPwAndSign(); if (sRet != UserCom.RST_OK) return sRet; m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtAppAmt.Value)).ToString(); //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start // 기존 //승인처리 //sRet = m_cCreditCard.SetPayment(new string[] { // txtCardNo.Value, m_InputType, m_sCardNo, sDivMonth, txtAppAmt.Value, m_sService, m_sTax, m_sPassWord, m_sCardKind, m_sIcChip // , m_sSign, m_sFallDiv, m_dCreditCardDcAtm > 0 ? "0": m_cDataService.DoubleParse(txtDcAmt.Value).ToString(),"","",m_sItemCode, "","",m_sCreditCardDcTy, m_dCreditCardDcAtm.ToString() // ,ItemConst.PAY_APP_DIV.NORMAL, m_sMediaType, m_sServiceCode }); // 변경 //승인처리 if (m_sCardDiv == "N") { // 해피기프트(신) sRet = m_cHappyGiftCard.SetPayment(new string[] { txtCardNo.Value, m_InputType, m_sCardNo, sDivMonth, txtAppAmt.Value, "0", m_sTax, "", "", m_sIcChip , "", m_sFallDiv, "0", "", "", m_sItemCode, "","","", m_dCreditCardDcAtm.ToString(), ItemConst.PAY_APP_DIV.NORMAL, "", m_sServiceCode }); } else { sRet = m_cCreditCard.SetPayment(new string[] { txtCardNo.Value, m_InputType, m_sCardNo, sDivMonth, txtAppAmt.Value, m_sService, m_sTax, m_sPassWord, m_sCardKind, m_sIcChip , m_sSign, m_sFallDiv, m_dCreditCardDcAtm > 0 ? "0": m_cDataService.DoubleParse(txtDcAmt.Value).ToString(),"","",m_sItemCode, "","",m_sCreditCardDcTy, m_dCreditCardDcAtm.ToString() ,ItemConst.PAY_APP_DIV.NORMAL, m_sMediaType, m_sServiceCode }); } //#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 sRet; } /// /// CAT 단말기 신용카드 승인 처리 /// /// /// private string CatTerminalApproval() { string sDivMonth = ""; string sAppType = ""; string sRet = UserCom.RST_ERR; try { // 삼성포인트 sDivMonth = string.Format("{0:00}", txtDivMonth.Value.Trim()); if (m_nSamsungPoint == 1) { // 삼성포인트 사용시 할부개월 + 60 sDivMonth = string.Format("{0:00}", CmUtil.DoubleAdd(m_cDataService.DoubleParse(sDivMonth), 60).ToString()); } //InParam // 0.전문구분,1.거래유형, 2.할부개월, 3.승인금액 , 4.봉사료, 5.세금, 6.원승인번호, 7.원거래일자, 8.포인트거래구분, 9.상품코드, //10.전표인쇄여부, 11.추가항목, 12.제휴할인코드, 13.제휴할인금액, 14.예비1, 15.예비2 sAppType = ckbUnionPay.Checked == true ? PosConst.POS_CAT_MASTER.TRADE_ID.CAT_UNION_AGREE : PosConst.POS_CAT_MASTER.TRADE_ID.CAT_CARD_AGREE; m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtAppAmt.Value)).ToString(); //승인처리 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 sRet = m_cCreditCard.SetPayment(new string[] { PosConst.POS_CAT_MASTER.TRAN_TYPE, sAppType, sDivMonth, txtAppAmt.Value, m_sService, m_sTax, "", "", "", "", "", "", m_sCreditCardDcTy, m_dCreditCardDcAtm.ToString(), "", "" }); } 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 sRet; } #endregion 신용카드 승인 처리 #region 임의 등록 처리 /// /// 임의 등록 처리 /// /// /// private string MenualApproval() { string sRet = UserCom.RST_ERR; ////0:마스킹 카드번호 1:입력구분 2:카드번호 3:할부개월 4:총금액 5:봉사료 ////6:세금 7:비밀번호 8:신용카드종류 9:칩데이터 10:사인 ////11:Fallback구분 12:제휴할인금액(캠페인) 13:원승인번호 14:원승인일자 15:아이템코드 ////16:매입사코드 17:매입사명 18:할인카드구분 19:할인금액 20:승인구분 21:매체구분 22:서비스코드 //try //{ // string sDivMonth = (m_nSamsungPoint == 1) ? CmUtil.DoubleAdd(60, m_cDataService.DoubleParse(txtDivMonth.Value)).ToString() : txtDivMonth.Value.ToString(); // m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtAppAmt.Value)).ToString(); // //임의 등록 처리 // sRet = m_cCreditCard.SetMenualPayment(new string[] { // txtCardNo.Value, m_InputType, m_sCardNo, txtDivMonth.Value, txtAppAmt.Value, m_sService, m_sTax, m_sPassWord, m_sCardKind, m_sIcChip // , m_sSign, m_sFallDiv, txtDcAmt.Value, txtApprNo.Value,"",m_sItemCode, txtCardComp.Tag.ToString(),txtCardComp.Text,m_sCreditCardDcTy, m_dCreditCardDcAtm.ToString() // ,ItemConst.PAY_APP_DIV.COMPULSION,m_sMediaType,m_sServiceCode }); //} //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 sRet; //} return sRet; } #endregion 임의 등록 처리 /// /// 카드 번호 암호화 /// /// /// private string EncryptedCardNo(string sIndata) { string tmpEnc = ""; try { UnRegIcCallback(); // IC리더 콜백 해지 tmpEnc = m_cICReader.GetEncryptedCardNo(sIndata).Trim(); if (CmUtil.MidH(tmpEnc, 0, 2) == "00") { tmpEnc = CmUtil.MidH(tmpEnc, 2, 512).Trim(); m_sFallDiv = "1"; } else { tmpEnc = ""; //암호화 처리 실패! 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); } if (txtCardNo.Value == "") tmrIcCard.Enabled = true; // IC리더 콜백 설정 } catch (Exception ex) { tmpEnc = ""; WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return tmpEnc; } /// /// 카드 정보 입력 처리 /// /// private bool GetCardInfo(bool bCancelCallBack) { return GetCardInfo(bCancelCallBack, true); } private bool GetCardInfo(bool bCancelCallBack, bool bEnableCallBack) { bool bRet = false; string sRsvStr = ""; try { if (bCancelCallBack == true) UnRegIcCallback(); // IC리더 콜백 해지 txtCardNo.Value = ""; m_sCardNo = ""; m_InputType = ""; m_sIcChip = ""; m_sFallDiv = ""; m_sServiceCode = ""; m_sItemCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj if (m_cICReader.GetCardInfo_ICReader(PosConst.IC_READER_TRAN_TYPE.CREDIT, CmUtil.IntParse(txtAppAmt.Value), ref sRsvStr) == true) { 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"; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = CmUtil.MidH(sRsvStr, 1072, 7).Trim(); //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj bRet = true; } } if (bEnableCallBack == 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); } finally { CmUtil.ZeroFillClear(ref sRsvStr); } return bRet; } /// /// 은련 비밀번호 와 사인 데이터 받기 /// /// private string UnionPwAndSign() { string sRet = UserCom.RST_OK; try { m_sPassWord = ""; m_sSign = ""; //은련카드 비밀번호 입력 if (ckbUnionPay.Checked) { //은련비밀번호 받기 //실패시 승인 안함! if (m_cSignPad.GetPin_SignPad(txtCardNo.Value, ref m_sPassWord) == false) { m_sPassWord = ""; //비밀번호를 판매POS에서 입력하시겠습니까? if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0562) == true) { if (m_cSignPad.GetKioskPin(txtCardNo.Value, ref m_sPassWord) == false) { return sRet; } } else { sRet = UserCom.RST_ERR + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0096); return sRet; } } } //싸인 받기 if (m_cDataService.DoubleParse(txtAppAmt.Value) > m_cDataService.DoubleParse(CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT007), "50000"))) { //전자 서명 사용 유무! if (m_cDevStatus.SignPad.UseYn == true) { string sPath = BaseCom.NxDataPath + "SIGN\\"; CmUtil.CreateDirectory(sPath); if (m_cSignPad.GetSign_SignPadEx(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0557), string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0583) , m_cPosStatus.Global.NumericTOCurrency(m_cDataService.DoubleParse(txtAppAmt.Value))), "", "", sPath, "SIGN.BMP", ref m_sSign) == false) { if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0550) == false) { return UserCom.RST_ERR; } m_sSign = ""; } } else { UserLog.WriteLogFile(UserCom.LOG_DEBUG, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명)) System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)) "Not Use SingPad Skip!"); } } } 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 sRet; } /// /// 카드 할인 대상 금액 조회 /// private void GetCreditDcAmt() { try { m_dCreditCardDcAtm = 0; if (m_sCreditCardDcTy == ItemConst.CREDITCARD_DC_TY.CREDIT_SFC) { double dTmp = 0; // 상품정보 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소 if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL) continue; // 서비스(무료) if (cSaleItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue; // 서비스(무료) if (cSaleItem.NONSALES_RSN_CD != "0") continue; // 비매출구분 if (cSaleItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호 if (cSaleItem.BILL_AMT <= 0) continue; // 영수금액 if (cSaleItem.DC_PRMT_YN != "0") continue; // 할인가능 여부 dTmp = CmUtil.DoubleAdd(dTmp, cSaleItem.SALE_AMT); } dTmp = CmUtil.DoubleDivision(CmUtil.DoubleMultiplication(dTmp, 10), 100); //할인 대상 금액 계산 m_dCreditCardDcAtm = CmUtil.MathRounds(dTmp, m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc)); txtDcAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_dCreditCardDcAtm); txtAppAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleSubtraction(m_cDataService.DoubleParse(txtPayAmt.Value), m_dCreditCardDcAtm)); if (m_dCreditCardDcAtm == 0) m_sCreditCardDcTy = ""; //대상 금액이 없으면 할인코드 지우자! } } 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 RegPadApp() { string sRet = UserCom.RST_ERR; try { frmPayPda fForm = (frmPayPda)FormManager.GetForm(FormManager.FORM_PAY_PDA); if (fForm == null) { fForm = new frmPayPda(); FormManager.AddForm(FormManager.FORM_PAY_PDA, fForm); } fForm.PosMenuKeyIn = txtAppAmt.Value; if (fForm.ShowDialog() == DialogResult.OK) sRet = UserCom.RST_OK; } 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 sRet; } /// /// 임의 등록 /// /// private string RegManualAppr() { string sRet = UserCom.RST_ERR; try { frmMenualAppr fForm = (frmMenualAppr)FormManager.GetForm(FormManager.FORM_MANUAL_APPR); if (fForm == null) { fForm = new frmMenualAppr(); FormManager.AddForm(FormManager.FORM_MANUAL_APPR, fForm); } fForm.SetPosMenuKey = PosKey.MENU_KEY.CNVN_REG; fForm.SetAppAmt = txtAppAmt.Value; fForm.SetDcAmt = m_dCreditCardDcAtm.ToString(); fForm.SetDcCode = m_sCreditCardDcTy; if (fForm.ShowDialog() == DialogResult.OK) sRet = UserCom.RST_OK; } 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 sRet; } /// /// PayOn결제 /// /// private string PayOnAppy() { string sRet = UserCom.RST_ERR; string sRecvData = ""; string sCardNo = ""; try { string sBackAmt = txtAppAmt.Value; //카드 정보 입력 bool bRet = m_cICReader.GetRfCreditCardInfo("1", m_cPosStatus.Global.CurrencyTONumeric(txtAppAmt.Value).ToString(), "", "", "", ref sRecvData); if (bRet == false) { if (sRecvData != "") WinManager.ErrorMessage(sRecvData); return sRet; } CardDataDisplay(); // 캠페인 적용 금액이 틀려지면 다시 읽기~ if (sBackAmt != txtAppAmt.Value) { bRet = m_cICReader.GetRfCreditCardInfo("1", m_cPosStatus.Global.CurrencyTONumeric(txtAppAmt.Value).ToString(), "", "", "", ref sRecvData); if (bRet == false) { if (sRecvData != "") WinManager.ErrorMessage(sRecvData); return sRet; } } m_sCardNo = CmUtil.MidH(sRecvData, 2, 512).Trim(); m_sSign = ""; m_sIcChip = CmUtil.MidH(sRecvData, 1116, 512).Trim(); m_sPassWord = ""; m_sCardKind = CmUtil.MidH(sRecvData, 0, 1); m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF; m_sServiceCode = CmUtil.MidH(sRecvData, 554, 5).Trim(); m_sItemCode = ""; m_sMediaType = CmUtil.MidH(sRecvData, 1, 1); sCardNo = CmUtil.MidH(sRecvData, 514, 40).Trim(); // 삼성 페이 체크! if (CmUtil.MidH(sRecvData, 1628, 2) == "02" && (m_sCardKind == "D" || m_sCardKind == "F")) { if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT023), "1") == "0") { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0661)); return sRet; } m_sItemCode = "02"; } //#20180122 페이온 거래시 카드 구분자 치환 start // 삼성페이 : D -> C, BC 모바일 : C -> B if (m_sCardKind == "D") { m_sCardKind = "C"; } else if (m_sCardKind == "C") { m_sCardKind = "B"; } //#20180122 페이온 거래시 카드 구분자 치환 end //사인체크 UnionPwAndSign(); m_sTax = m_cDataService.GetPaymentAmtVAT(m_cDataService.DoubleParse(txtAppAmt.Value)).ToString(); //승인처리 //0:마스킹 카드번호 1:입력구분 2:카드번호 3:할부개월 4:총금액 5:봉사료 //6:세금 7:비밀번호 8:신용카드종류 9:칩데이터 10:사인 //11:Fallback구분 12:제휴할인금액(캠페인) 13:원승인번호 14:원승인일자 15:아이템코드 //16:매입사코드 17:매입사명 18:할인카드구분 19:할인금액 20:승인구분 21:매체구분 22:서비스코드 sRet = m_cCreditCard.SetPayment(new string[] { sCardNo, m_InputType, m_sCardNo, "00", m_cPosStatus.Global.CurrencyTONumeric(txtAppAmt.Value).ToString(), m_sService, m_sTax, m_sPassWord, m_sCardKind, m_sIcChip , m_sSign, m_sFallDiv, m_dCreditCardDcAtm > 0 ? "0": m_cDataService.DoubleParse(txtDcAmt.Value).ToString() ,"","",m_sItemCode, "","",m_sCreditCardDcTy, m_dCreditCardDcAtm.ToString() ,ItemConst.PAY_APP_DIV.NORMAL, m_sMediaType, m_sServiceCode }); if (sRet != UserCom.RST_OK) { WinManager.ErrorMessage(sRet); return sRet; } else { this.DialogResult = DialogResult.OK; 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); } return sRet; } /// /// 승인 버튼 누를 때 카드 번호 입력받고 승인처리 /// /// private bool AutoSetApprProcess() { bool bRet = false; try { if (CheckTxtInPut(txtPayAmt) == false) return false; CheckTxtInPut(txtDivMonth); if (m_bCardInPut == true) return false; m_bCardInPut = true; if (GetCardInfo(true, false) == true) { CardDataDisplay(); bRet = true; } else { //카드 입력 에러 다시 입력 하세요. txtCardNo.Select(); } m_bCardInPut = 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); m_bCardInPut = false; } return bRet; } /// /// ZeroFill 초기화 /// private void InDataToZeroFill() { try { //여전법 대응! ////////////////////////////////////////////////////////////////////////////////// CmUtil.ZeroFillClear(ref m_sCardNo); //Card CmUtil.ZeroFillClear(ref m_sIcChip); //Emv CmUtil.ZeroFillClear(ref m_sPassWord); //PWD ////////////////////////////////////////////////////////////////////////////////// txtCardNo.Value = string.Empty; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 Start m_sCardDiv = string.Empty; //#20180329, 해피기프트(신) 신용카드 화면에서 승인 시 결제코드 선불카드로 저장되도록 수정 End //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = ""; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj } catch (Exception) { } } #endregion User Method #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; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #region MSR Event /// /// MSR Event /// /// /// private void OnMSREvent(object source, EventArgs e) { try { //if (m_cMultiCard == null) //{ // bool bRet = CardSearch(m_cDevStatus.Msr.Track2Data, false, "", false); // if (bRet == false) // { // txtCardNo.Text = ""; // txtCardNo.Select(); // } //} //else //{ // //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_1410); // return; //} } 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 MSR Event 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 DeviceEvent 관련 #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 (m_bCardInPut) return; tmrIcCard.Enabled = false; string sApprID = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID); m_cICReader.RegIcCallbackCardInfo(sApprID, m_cDataService.IntParse(txtPayAmt.Value), delegateReaderCardInfo); //m_cICReader.RegIcCallback(delegateReader); } else if (tmrIcCard.Tag.ToString() == "MSR") { // MSR 카드 읽기 tmrIcCard.Enabled = false; tmrIcCard.Tag = ""; tmrIcCard.Interval = 500; CardDataDisplay(); tmrIcCard.Enabled = true; } else if (tmrIcCard.Tag.ToString() == "IC") { // IC리더 카드 읽기 tmrIcCard.Enabled = false; tmrIcCard.Tag = ""; if (m_bCardInPut == true) return; m_bCardInPut = true; if (GetCardInfo(false) == true) { CardDataDisplay(); } m_bCardInPut = false; } else if (tmrIcCard.Tag.ToString() == "ICREADER") { // IC리더 카드 읽기(CardInfo) tmrIcCard.Enabled = false; tmrIcCard.Tag = ""; if (m_bCardInPut == true) return; m_bCardInPut = true; CardDataDisplay(); if (m_InputType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP) tmrIcCard.Enabled = true; m_bCardInPut = false; } 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 (m_bCardInPut) return; m_bCardInPut = true; if (num == 1) { // IC 카드 tmrIcCard.Tag = "IC"; tmrIcCard.Interval = 100; } else { // MSR 카드 if (str.ToString().StartsWith("EN") == true) { m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP; m_sCardNo = CmUtil.MidH(str.ToString(), 0, 512).Trim(); txtCardNo.Value = CmUtil.MidH(str.ToString(), 512, 40).Trim(); 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; m_bCardInPut = 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); m_bCardInPut = false; } } /// /// IC리더 콜백 해지 /// private void UnRegIcCallback() { try { if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { tmrIcCard.Enabled = false; m_cICReader.UnRegIcCallbackCardInfo(); // m_cICReader.UnRegIcCallback(); } } 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 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"; //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 start,phj m_sMobileCode = CmUtil.MidH(sRsvStr, 1072, 7).Trim(); //#15183 보안리더기 삼성페이 해피포인트 자동적립 기능 수정 end,phj // IC 카드(CardInfo) tmrIcCard.Tag = "ICREADER"; tmrIcCard.Interval = 100; tmrIcCard.Enabled = true; m_bCardInPut = false; } } } } #endregion } }