using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.Common; using Cosmos.CommonManager; using System.Runtime.InteropServices; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 사인패드 제어 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.OLEDevice { public class DeviceSignPad : ISignPadUs { #region SpcnPos.DLL 함수 /// /// [사인패드] 전자서명 요청 함수 /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetSign(int input_amt, byte[] input_sign_path, byte[] input_sign_name, byte[] output_msg); /// /// [사인패드] 전자서명 요청 함수 EX(메세지) /// /// /// /// /// /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetSignEx(byte[] input_msg1, byte[] input_msg2, byte[] input_msg3, byte[] input_msg4, byte[] input_sign_path, byte[] input_sign_name, byte[] output_msg); /// /// [사인패드] 비밀번호 요청 함수 /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetPin(byte[] input_pin_block, byte[] output_msg); /// /// [사인패드] 사용자정보 요청 함수 /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetMsg(int maskingType, byte[] show_msg, byte[] output_msg); /// /// [사인패드] 사용자정보 요청 함수(MAX 처리) /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetMsg2(int maskingType, int maxLen, byte[] show_msg, byte[] output_msg); // 환경설정 정보 가져오기 [DllImport("SpcnPos.dll")] public static extern int SpcnGetFlag(byte[] appName, byte[] keyName, byte[] output, int outputMaxLen); // 환경설정 정보 설정하기 [DllImport("SpcnPos.dll")] public static extern int SpcnSetFlag(byte[] appName, byte[] keyName, byte[] value); // 상호인증 요청 [DllImport("SpcnPos.dll")] public static extern int SpcnIcReaderKeyDownload(byte[] inTrmlId, byte[] inAuthInfo); // 무결성 요청 [DllImport("SpcnPos.dll")] public static extern int SpcnIcReaderIntegrity(byte[] outResTime); // 키오스크 전자서명 요청 [DllImport("SpcnPos.dll")] public static extern int SpcnGetKioskSign(byte[] input_sign_path, byte[] input_sign_name, byte[] output_msg); // 승인함수 [DllImport("SpcnPos.dll")] public static extern int SpcnIcPos(byte[] input_msg, int input_msg_len, byte[] signData, byte[] icData, byte[] oilData, byte[] authInfo, byte[] output_msg); // (RF) RF카드 정보 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardInfo(byte[] output_msg); // (RF) RF카드 잔액 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfCommonCardInfo(byte[] samType, byte[] output_msg); // (RF) RF카드 잔액 조회 (비프 여부 - 화면표시 여부로 사용) [DllImport("SpcnPos.dll")] public static extern int SpcnRfCommonCardInfoEx(byte[] samType, byte[] isBeep, byte[] output_msg); // (RF) SAM ID조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfGetSamId(byte[] samType, byte[] output_msg); // (RF) T머니/EB카드 개시거래 [DllImport("SpcnPos.dll")] public static extern int SpcnRfStart(byte[] terminalNo, byte[] bizName, byte[] docSeq, byte[] samType, byte[] output_msg); // (RF) T머니/EB카드 운영정보 다운로드 [DllImport("SpcnPos.dll")] public static extern int SpcnRfDownOperatingData(byte[] terminalNo, byte[] bizName, byte[] docSeq, byte[] samType, byte[] output_msg); // (RF) PAYON SAM 등록 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPayonOpen(byte[] terminalNo, byte[] bizName, byte[] docSeq, byte[] cardType); /// /// RF 시간 설정 /// [DllImport("SpcnPos.dll")] public static extern int SpcnRfReaderSetTime(); // (RF) 후불 결제 거래 카드 정보 요청 [DllImport("SpcnPos.dll")] public static extern int SpcnRfCreditCardInfo(byte[] terminalNo, byte[] samType, byte[] amount, byte[] msg1, byte[] msg2, byte[] msg3, byte[] output_msg); // (RF) 선불카드 지불 거래 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardApprove(byte[] terminalNo, byte[] samType, byte[] amount, byte[] msg1, byte[] msg2, byte[] msg3, byte[] output_msg); // (RF) 선불카드 지불 재거래 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardApproveRe(byte[] terminalNo, byte[] samType, byte[] amount, byte[] msg1, byte[] msg2, byte[] msg3, byte[] output_msg); // (RF) 선불카드 직전취소 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardProcCancel(byte[] terminalNo, byte[] samType, byte[] msg1, byte[] msg2, byte[] msg3, byte[] org_money, byte[] org_dateTime, byte[] org_receiptNo, byte[] output_msg); // (RF) 선불카드 현금반품 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardVoidCash(byte[] terminalNo, byte[] samType, byte[] msg1, byte[] msg2, byte[] msg3, byte[] org_money, byte[] org_dateTime, byte[] org_receiptNo, byte[] output_msg); // (RF) 선불카드 반품충전 [DllImport("SpcnPos.dll")] public static extern int SpcnRfPrepaidCardCancel(byte[] terminalNo, byte[] bizName, byte[] docSeq, byte[] samType, byte[] msg1, byte[] msg2, byte[] msg3, byte[] receiptNo, byte[] org_money, byte[] org_dateTime, byte[] org_receiptNo, byte[] output_msg); // (RF) 거래내역 개수 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfGetTranCount(byte[] samType, byte[] output_msg); // (RF) 마지막 거래내역 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfGetLastTran(byte[] samType, byte[] output_msg); // (RF) 거래내역 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfGetTranIndex(byte[] samType, byte[] tranIndex, byte[] output_msg); // (RF) 거래내역 순차 조회 [DllImport("SpcnPos.dll")] public static extern int SpcnRfGetTranOrder(byte[] samType, byte[] tranIndex, byte[] output_msg); // (RF) 거래내역 삭제 [DllImport("SpcnPos.dll")] public static extern int SpcnRfDeleteTran(byte[] samType); // (RF) 거래내역 업로드 [DllImport("SpcnPos.dll")] public static extern int SpcnRfUploadTran(byte[] terminalNo, byte[] bizName, byte[] docSeq, byte[] receiptNo, byte[] org_money, byte[] org_dateTime, byte[] org_receiptNo, byte[] rfData, byte[] output_msg); // 싸인 BMP -> 데이터 변환 [DllImport("SpcnPos.dll")] public static extern int SpcnGetSignFromImage(byte[] filePath, byte[] output_msg); // 싸인패드 정보 확인((O) 응답메시지 (모델명(10) + 펌웨어버젼(20) + App버젼(30) + RF버젼(30) + 시리얼번호(30) + POS연동타입(1)) [DllImport("SpcnPos.dll")] public static extern int SpcnGetSignPadInfo(byte[] output_msg); /// /// 키오스크 비밀번호 입력 POS사용자(은련카드용) /// /// 암호화에 사용될 핀블럭 /// 암호화 되어진 비밀번호 /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetKioskPin(byte[] input_pin_block, byte[] output); /// /// 비밀번호 입력 POS사용자(해피포인트) /// /// 암호화 되어지지 않는 비밀번호 /// [DllImport("SpcnPos.dll")] public static extern int SpcnGetKioskMsg(byte[] output); #endregion #region csp_download.DLL 함수 /// /// [사인패드] 업데이트 요청 함수(생성) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_Create(); /// /// [사인패드] 업데이트 요청 함수(초기화) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_ClearFiles(int ret_code); /// /// [사인패드] 업데이트 요청 함수(펌웨어) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_SetFileSW(int ret_code, string updateData); /// /// [사인패드] 업데이트 요청 함수(시작) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_Start(int ret_code, string sign_port); /// /// [사인패드] 업데이트 요청 함수(영상) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_SetFileAVI(int ret_code, byte[] updateData); /// /// [사인패드] 업데이트 요청 함수(이미지) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_SetFileBMP(int ret_code, int index, byte[] updateData); /// /// [사인패드] 업데이트 요청 함수(결과코드) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_SetMessageResult(int ret_code, IntPtr hwnd, int nMessaage); /// /// [사인패드] 업데이트 요청 함수(프로그래스바 결과값) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_SetMessageProgress(int ret_code, IntPtr hwnd, int nMessaage); /// /// [사인패드] 업데이트 자원해제 /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_Destroy(int ret_code); /// /// [사인패드] 업데이트 종료(취소) /// [DllImport("csp_downloader.dll")] public static extern int CSPDN_Stop(int ret_code); //[DllImport("user32.dll", SetLastError = true)] //private static extern int SendMessage(int hWnd, int wMsg, int wParam, int lParam); #endregion #region 생성자 /// /// SPCN_Dongle.ocx 가 포함된 form 객체 /// //frmSignPad frmSignPad = null; /// /// StateServer Object (StateServer 객체) /// public StateServer StateObject = (StateServer)StateServer.GetInstance(); /// /// Device 상태 정보 객체 /// public DeviceStatus m_cDevStatus = null; /// /// Pos 상태 정보 객체 /// public PosStatus m_cPosStatus = null; /// /// T-Money Host /// private static string m_sTMoneyHost = null; public string TMoneyHost { get { return m_sTMoneyHost; } set { m_sTMoneyHost = value; } } /// /// T-Money Port /// private static int m_iTMoneyPort = -1; public int TMoneyPort { get { return m_iTMoneyPort; } set { m_iTMoneyPort = value; } } // 임시 pss private int nRet_Code = 0; /// /// 생성자 /// public DeviceSignPad() { try { //frmSignPad = new frmSignPad(); m_cPosStatus = (PosStatus)StateObject.POS; m_cDevStatus = (DeviceStatus)StateObject.DEVICE; //UpdateIniConfig(); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } } #endregion #region Byte배열을 string으로 변환 (Byte배열의 null(0x00)값 제거) /// /// Byte배열을 string으로 변환 (Byte배열의 null(0x00)값 제거) /// /// /// private string ByteToString(byte[] data) { int inx = Array.FindIndex(data, 0, (x) => x == 0x0); if (inx >= 0) { return Encoding.Default.GetString(data, 0, inx); } else { return Encoding.Default.GetString(data); } } #endregion #region SpcnPos.dll 이 사용하는 SpcnPosCfg.ini 파일 update /// /// SpcnPos.dll 이 사용하는 SpcnPosCfg.ini 파일 update /// public void UpdateIniConfig() { StringBuilder sbGetText = new StringBuilder(); CmMessage m_PosDevice = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + "PosDevice.INI"); string sPortNumber = string.Empty; string sAutoFlag = string.Empty; string sMinCnt = string.Empty; string sTimeOut = string.Empty; long lBaudrate = 0; bool bRtn = false; try { sPortNumber = CmUtil.StringNullEmpty(GetConfigInfo(m_PosDevice, "SIGNPAD", "SerialPortNumber")); lBaudrate = CmUtil.LongParse(CmUtil.StringNullEmpty(GetConfigInfo(m_PosDevice, "SIGNPAD", "SerialBaudRate"))); sAutoFlag = CmUtil.StringNullEmpty(GetConfigInfo(m_PosDevice, "SIGNPAD", "AutoFlag")); sMinCnt = CmUtil.StringNullEmpty(GetConfigInfo(m_PosDevice, "SIGNPAD", "MinCnt")); sTimeOut = CmUtil.StringNullEmpty(GetConfigInfo(m_PosDevice, "SIGNPAD", "TimeOut")); if (sPortNumber.Length < 3 || lBaudrate <= 0) { new Exception("PosDevice.INI 사인패드 설정 오류"); return; } // SIGN_PORT 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_PORT, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != sPortNumber.Substring(3, sPortNumber.Length - 3))//Yoo modify 20160613 { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_PORT, sPortNumber.Substring(3, sPortNumber.Length - 3), BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig);//Yoo modify 20160613 if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_PORT + " 쓰기 실패"); } } // SIGN_BAUDRATE 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_BAUDRATE, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != Convert.ToString(lBaudrate)) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_BAUDRATE, Convert.ToString(lBaudrate), BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_BAUDRATE + " 쓰기 실패"); } } // SIGN_AUTO_FLAG 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_AUTOFLAG, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != sAutoFlag) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_AUTOFLAG, sAutoFlag, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_AUTOFLAG + " 쓰기 실패"); } } // SIGN_MIN_CNT 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_MIN_CNT, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != sMinCnt) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_MIN_CNT, sMinCnt, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_MIN_CNT + " 쓰기 실패"); } } // SIGN_TIMEOUT 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_TIMEOUT, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != sTimeOut) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_TIMEOUT, sTimeOut, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_SIGN_TIMEOUT + " 쓰기 실패"); } } //#20170904 IC_MSG_CARD, RF_MSG_CARD 문구 추가 start // IC_MSG_CARD 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_IC_MSG_CARD, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0726)) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_IC_MSG_CARD, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0726), BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_IC_MSG_CARD + " 쓰기 실패"); } } // RF_MSG_CARD 설정 sbGetText.Clear(); WinAPI.GetPrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_RF_MSG_CARD, string.Empty, sbGetText, 64, BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (sbGetText.ToString() != MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0727)) { bRtn = WinAPI.WritePrivateProfileString(PosConst.POS_SIGNPAD_CONFIG.APPNAME, PosConst.POS_SIGNPAD_CONFIG.KEY_RF_MSG_CARD, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0727), BaseCom.NxBinPath + PosConst.INI_FILE_NAME.ICReaderConfig); if (bRtn == false) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, 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 (함수명)) PosConst.INI_FILE_NAME.ICReaderConfig + "/" + PosConst.POS_SIGNPAD_CONFIG.KEY_RF_MSG_CARD + " 쓰기 실패"); } } //#20170904 IC_MSG_CARD, RF_MSG_CARD 문구 추가 end } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } } #endregion #region 설정 파일 읽기 /// /// 설정 파일 읽기 /// /// /// /// /// private string GetConfigInfo(CmMessage cCfgInfo, string sGroup, string sValueName) { return GetConfigInfo(cCfgInfo, sGroup, sValueName, ""); } private string GetConfigInfo(CmMessage cCfgInfo, string sGroup, string sValueName, string sDefault) { try { string sValue = cCfgInfo.GetMessage(sGroup).GetMessageValue(sValueName); if (sValue == null) return sDefault; else return sValue; } catch { } return sDefault; } #endregion #region 사인패드 관련 함수 /// /// [사인패드] 전자서명 요청 /// /// 거래금액 /// 전자서명 생성 디렉토리 /// 전자서명 생성 파일명 /// 전자서명 데이터 /// public bool GetSign_SignPad(int iAmount, string sSignDataPath, string sSignDataName, ref string sSignData) { int iRtn = 0; bool bRtn = false; byte[] arSignData = new byte[2048]; try { sSignData = string.Empty; Array.Clear(arSignData, 0x0, arSignData.Length); if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return bRtn; } #if !DEVICE_MSR_VER //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetSign(iAmount, Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); #else if (m_cDevStatus.ICReader.UseYn == true) // 여전법 인증여부(0:MSR, 1:IC) { //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetSign(iAmount, Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); } else { iRtn = SpcnGetSign(iAmount, Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); } #endif if (iRtn > 0) { sSignData = ByteToString(arSignData); bRtn = true; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// [사인패드] 전자서명 요청EX /// /// 거래금액 /// 전자서명 생성 디렉토리 /// 전자서명 생성 파일명 /// 전자서명 데이터 /// public bool GetSign_SignPadEx(string sMsg1, string sMsg2, string sMsg3, string sMsg4, string sSignDataPath, string sSignDataName, ref string sSignData) { int iRtn = 0; bool bRtn = false; byte[] arSignData = new byte[2048]; try { sSignData = string.Empty; Array.Clear(arSignData, 0x0, arSignData.Length); if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return bRtn; } #if !DEVICE_MSR_VER //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetSignEx(Encoding.Default.GetBytes(sMsg1), Encoding.Default.GetBytes(sMsg2), Encoding.Default.GetBytes(sMsg3), Encoding.Default.GetBytes(sMsg4), Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); #else if (m_cDevStatus.ICReader.UseYn == true) // 여전법 인증여부(0:MSR, 1:IC) { //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetSignEx(Encoding.Default.GetBytes(sMsg1), Encoding.Default.GetBytes(sMsg2), Encoding.Default.GetBytes(sMsg3), Encoding.Default.GetBytes(sMsg4), Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); } else { iRtn = SpcnGetSignEx(Encoding.Default.GetBytes(sMsg1), Encoding.Default.GetBytes(sMsg2), Encoding.Default.GetBytes(sMsg3), Encoding.Default.GetBytes(sMsg4), Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); } #endif if (iRtn > 0) { sSignData = ByteToString(arSignData); bRtn = true; } else { Cosmos.CommonManager.WinManager.ErrorMessage( ErrCodeToMsg(iRtn)); bRtn = false; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// [사인패드] 전자서명 요청 터치패드(키오스크,테블릿용) /// /// /// /// /// public bool GetSign_SignPadForTouchpad(string sSignDataPath, string sSignDataName, ref string sSignData) { int iRtn = 0; bool bRtn = false; byte[] arSignData = new byte[2048]; try { //이 함수 사용시 설정 추가 부분! //============================================ //SpcnPoscfg.ini 해당 항목 추가 //============================================ //KIOSK_CUSTOM_SET=Y //[DESIGN] //KIOSK_SIGN_DIALOG_POS=50,100,800,800 //KIOSK_SIGN_BG_COLOR=0,0,0 //KIOSK_SIGN_FONT_COLOR=150,100,100 //KIOSK_SIGN_BTN_COLOR=40,40,40 //KIOSK_SIGN_FONT=굴림,27 //============================================ //KIOSK_CUSTOM_SET : Y 고정 //KIOSK_SIGN_DIALOG_POS : 위치 및 크기 //KIOSK_SIGN_DIALOG_POS : 폼 배경색 //KIOSK_SIGN_BG_COLOR : 싸인화면 배경색 //KIOSK_SIGN_FONT_COLOR : 글자폰트 //KIOSK_SIGN_BTN_COLOR : 버튼색상 //KIOSK_SIGN_FONT : 폰트 및 사이즈 sSignData = string.Empty; Array.Clear(arSignData, 0x0, arSignData.Length); //if (m_cPosStatus.Base.OlePosSignPadUseFlag != "1") //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); // return bRtn; //} //else if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cPosStatus.Base.OlePosSignPadUseFlag == "1") //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetKioskSign(Encoding.Default.GetBytes(sSignDataPath), Encoding.Default.GetBytes(sSignDataName), arSignData); if (iRtn > 0) { sSignData = ByteToString(arSignData); bRtn = true; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// BitMap -> SignData 변환 /// /// /// /// public bool GetSign_BmpToData(string sSignDataPath, ref string sSignData) { int iRtn = 0; bool bRtn = false; byte[] arSignData = new byte[2048]; try { sSignData = string.Empty; Array.Clear(arSignData, 0x0, arSignData.Length); iRtn = SpcnGetSignFromImage(Encoding.Default.GetBytes(sSignDataPath), arSignData); if (iRtn > 0) { sSignData = ByteToString(arSignData); bRtn = true; } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// 싸인패드 정보 확인[(O) 응답메시지 (모델명(10) + 펌웨어버젼(20) + App버젼(30) + RF버젼(30) + 시리얼번호(30) + POS연동타입(1)] /// /// /// public bool GetSignPadInfo(ref string sRsltMsg) { int iRtn = 0; bool bRtn = false; byte[] outMsg = new byte[2049]; try { sRsltMsg = string.Empty; Array.Clear(outMsg, 0x0, outMsg.Length); iRtn = SpcnGetSignPadInfo(outMsg); if (iRtn > 0) { sRsltMsg = ByteToString(outMsg); bRtn = true; } else { sRsltMsg = string.Empty; } } catch (Exception ex) { sRsltMsg = string.Empty; UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// [사인패드] 비밀번호 요청 /// /// 마스킹 처리된 카드번호 /// 암호화 되어진 비밀번호 /// public bool GetPin_SignPad(string sMaskedCardNo, ref string sEncryptedPwd) { int iRtn = 0; bool bRtn = false; byte[] arCardNo = null; byte[] arPwd = new byte[2048]; try { sEncryptedPwd = string.Empty; arCardNo = Encoding.Default.GetBytes(sMaskedCardNo); Array.Clear(arPwd, 0x0, arPwd.Length); for (int i = 0; i < arCardNo.Length; i++) { if (arCardNo[i] == '*') { arCardNo[i] = (byte)'0'; } } if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return bRtn; } #if !DEVICE_MSR_VER //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetPin(arCardNo, arPwd); #else if (m_cDevStatus.ICReader.UseYn == true) // 여전법 인증여부(0:MSR, 1:IC) { //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} iRtn = SpcnGetPin(arCardNo, arPwd); } else { iRtn = SpcnGetPin(arCardNo, arPwd); } #endif if (iRtn <= 0) { if (iRtn != -84) { string sErrMsg = ErrCodeToMsg(iRtn); Cosmos.CommonManager.WinManager.ErrorMessage(sErrMsg); UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + iRtn + "=" + sErrMsg); } return false; } sEncryptedPwd = ByteToString(arPwd); bRtn = true; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// 은련카드 비밀번호 사용자 입력 처리 /// /// /// /// public bool GetKioskPin(string sMaskedCardNo, ref string sEncryptedPwd) { int iRtn = 0; bool bRtn = false; byte[] arCardNo = null; byte[] arPwd = new byte[2048]; try { sEncryptedPwd = string.Empty; arCardNo = Encoding.Default.GetBytes(sMaskedCardNo.Replace("*", "0")); // 카드번호 마스킹 '*' => '0' 으로 치환! Array.Clear(arPwd, 0x0, arPwd.Length); iRtn = SpcnGetKioskPin(arCardNo, arPwd); if (iRtn <= 0) { if (iRtn != -84) { string sErrMsg = ErrCodeToMsg(iRtn); Cosmos.CommonManager.WinManager.ErrorMessage(sErrMsg); UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + iRtn + "=" + sErrMsg); } return false; } sEncryptedPwd = ByteToString(arPwd); bRtn = true; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// 비밀번호 입력 처리(해피포인트) /// /// /// public bool GetKioskMsg(ref string sEncryptedPwd) { int iRtn = 0; bool bRtn = false; byte[] arPwd = new byte[2048]; try { sEncryptedPwd = string.Empty; Array.Clear(arPwd, 0x0, arPwd.Length); iRtn = SpcnGetKioskMsg(arPwd); if (iRtn <= 0) { if (iRtn != -84) { string sErrMsg = ErrCodeToMsg(iRtn); Cosmos.CommonManager.WinManager.ErrorMessage(sErrMsg); UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + iRtn + "=" + sErrMsg); } return false; } sEncryptedPwd = ByteToString(arPwd); bRtn = true; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// 사용자정보 요청 함수 /// /// /// /// /// public bool GetMsg_SignPad(bool bMaskingEnable, string sDisplayMsg, ref string sReceivedData) { return GetMsg_SignPad(bMaskingEnable, sDisplayMsg, ref sReceivedData, 0); } /// /// 사용자정보 요청 함수 /// /// /// /// /// public bool GetMsg_SignPad(bool bMaskingEnable, string sDisplayMsg, ref string sReceivedData, int iMaxLengh) { int iRtn = 0; bool bRtn = false; byte[] arReceivedData = new byte[2048]; try { sReceivedData = string.Empty; Array.Clear(arReceivedData, 0x0, arReceivedData.Length); if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return bRtn; } #if !DEVICE_MSR_VER //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} if (iMaxLengh > 0 ) { iRtn = SpcnGetMsg2(bMaskingEnable ? 0 : 1, iMaxLengh, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } else { iRtn = SpcnGetMsg(bMaskingEnable ? 0 : 1, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } #else if (m_cDevStatus.ICReader.UseYn == true) // 여전법 인증여부(0:MSR, 1:IC) { //if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn) //{ // Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0387); // return bRtn; //} if (iMaxLengh > 0) { iRtn = SpcnGetMsg2(bMaskingEnable ? 0 : 1, iMaxLengh, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } else { iRtn = SpcnGetMsg(bMaskingEnable ? 0 : 1, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } } else { if (iMaxLengh > 0) { iRtn = SpcnGetMsg2(bMaskingEnable ? 0 : 1, iMaxLengh, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } else { iRtn = SpcnGetMsg(bMaskingEnable ? 0 : 1, Encoding.Default.GetBytes(sDisplayMsg), arReceivedData); } } #endif if (iRtn <= 0) { if (iRtn != -84) { string sErrMsg = ErrCodeToMsg(iRtn); Cosmos.CommonManager.WinManager.ErrorMessage(sErrMsg); UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + iRtn + "=" + sErrMsg); } return false; } sReceivedData = ByteToString(arReceivedData); bRtn = true; } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return bRtn; } /// /// 서명패드 업데이트(펌웨어) /// /// public bool SetFirmware_SignPad_Update(int nCreateCode, string sDatePath) { bool bRtn = true; int nRet = -1; nRet = CSPDN_ClearFiles(nCreateCode); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); bRtn = false; } nRet = -1; nRet = CSPDN_SetFileSW(nCreateCode, sDatePath); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); bRtn = false; } return bRtn; } /// /// 서명패드 업데이트(동영상) /// /// public bool SetAvi_SignPad_Update(int nCreateCode, string sDatePath) { bool bRtn = true; int nRet = -1; nRet = CSPDN_ClearFiles(nCreateCode); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); return false; } nRet = -1; nRet = CSPDN_SetFileAVI(nCreateCode, Encoding.Default.GetBytes(sDatePath)); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); return false; } return bRtn; } /// /// 서명패드 업데이트(이미지) /// /// public bool SetImage_SignPad_Update(int nCreateCode, int nIndex, string sDatePath) { bool bRtn = true; int nRet = -1; // //nRet = CSPDN_ClearFiles(nRet_Code); //if (nRet <= 0) //{ // UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name // , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" // , "ERROR => CODE : " + nRet); // return false; //} //nRet = -1; nRet = CSPDN_SetFileBMP(nCreateCode, nIndex, Encoding.Default.GetBytes(sDatePath)); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); return false; } return bRtn; } /// /// 서명패드 업데이트 완료 후 시작 /// /// public bool SignPad_Start(int nCreateCode, string sSignPort) { bool bRtn = false; int nRet = -1; nRet = CSPDN_Start(nCreateCode, sSignPort); if (nRet < 0) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nRet); return bRtn; } bRtn = true; return bRtn; } /// /// 서명패드 업데이트(결과메세지 리턴) /// /// public bool SignPad_Update_Return(int nCreateCode, IntPtr nhwnd, int nMessage) { bool bRtn = false; int nRet = -1; nRet = CSPDN_SetMessageResult(nCreateCode, nhwnd, nMessage); return bRtn; } /// /// 서명패드 업데이트(결과메세지 리턴) /// /// public bool SignPad_Update_Progress_Return(int nCreateCode, IntPtr nhwnd, int nMessage) { bool bRtn = false; int nRet = -1; nRet = CSPDN_SetMessageProgress(nCreateCode, nhwnd, nMessage); return bRtn; } /// /// 서명패드 업데이트 파일 코드(각 함수에 다 넣어 줌) /// /// public int SignPad_Create_UpdateCode() { int nRet_Code = -1; nRet_Code = CSPDN_Create(); return nRet_Code; } /// /// 서명패드 업데이트 자원해제 /// /// public int SignPad_Update_Destroy(int nCreateCode) { int nRet = -1; CSPDN_Destroy(nCreateCode); return nRet; } /// /// 서명패드 업데이트 파일초기화 /// /// public int SignPad_Update_FileClear(int nCreateCode) { int nRet = -1; CSPDN_ClearFiles(nCreateCode); return nRet; } /// /// 서명패드 업데이트 취소 /// /// public int SignPad_Update_Stop(int nCreateCode) { int nRet = -1; nRet = CSPDN_Stop(nCreateCode); return nRet; } #endregion #region T-Money 기능 /// /// 운영정보 다운로드 /// /// /// /// /// /// /// public string TMoneyDownload(string sTerminalNo, string sBizNm, string sSeqNo, string sCardType, string sDownType, ref byte[] rep_array) { //byte[] rep_array = new byte[2049]; int iReturn = -1; string sRet = UserCom.RST_ERR; int iRtn = -1; try { // 서명패드 시간설정 요청 if (m_cDevStatus.ICReader.UseYn == true) iRtn = SpcnRfReaderSetTime(); if (sCardType == "T") { //WinManager.ShowSearchMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0349)); iReturn = SpcnRfDownOperatingData(GetByteArrayFromString(sTerminalNo), GetByteArrayFromString(sBizNm), GetByteArrayFromString(sSeqNo), GetByteArrayFromString(sCardType), rep_array); } else if (sCardType == "E") { //WinManager.ShowSearchMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0360)); iReturn = SpcnRfDownOperatingData(GetByteArrayFromString(sTerminalNo), GetByteArrayFromString(sBizNm), GetByteArrayFromString(sSeqNo), GetByteArrayFromString(sCardType), rep_array); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } finally { if (iReturn > 0) sRet = UserCom.RST_OK; //WinManager.HideSearchMessage(this); } return sRet; } /// /// T-Money 개시 /// /// /// /// /// /// public string TMoneyOpen(string sTerminalNo, string sBizNm, string sSeqNo, string sCardType) { int iReturn = -1; byte[] rep_array = new byte[2049]; string sRet = UserCom.RST_ERR; int iRtn = -1; try { // 서명패드 시간설정 요청 if (m_cDevStatus.ICReader.UseYn == true) iRtn = SpcnRfReaderSetTime(); if (sCardType == "Y") { //WinManager.ShowSearchMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0350)); iReturn = SpcnRfPayonOpen(GetByteArrayFromString(sTerminalNo), GetByteArrayFromString(sBizNm), GetByteArrayFromString(sSeqNo), GetByteArrayFromString(sCardType)); } else if (sCardType == "T") { //WinManager.ShowSearchMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0348)); iReturn = SpcnRfStart(GetByteArrayFromString(sTerminalNo), GetByteArrayFromString(sBizNm), GetByteArrayFromString(sSeqNo), GetByteArrayFromString(sCardType), rep_array); } else if (sCardType == "E") { //WinManager.ShowSearchMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0359)); iReturn = SpcnRfStart(GetByteArrayFromString(sTerminalNo), GetByteArrayFromString(sBizNm), GetByteArrayFromString(sSeqNo), GetByteArrayFromString(sCardType), rep_array); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } finally { if (iReturn > 0) sRet = UserCom.RST_OK; //WinManager.HideSearchMessage(this); } return sRet; } /// /// T-Money 잔액조회 /// /// /// /// /// public int TMoneyInfo(string sCardType, ref string sRet) { return TMoneyInfo(sCardType, ref sRet, "N" ); } public int TMoneyInfo(string sCardType, ref string sRet, string sBeep = "N" ) { int nReturn = -1; byte[] rep_array = new byte[2049]; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } //nReturn = SpcnRfCommonCardInfo(GetByteArrayFromString(sCardType), rep_array); nReturn = SpcnRfCommonCardInfoEx(GetByteArrayFromString(sCardType), GetByteArrayFromString(sBeep), rep_array); if (nReturn <= 0) { if (nReturn != -84) { string sErrMsg = ErrCodeToMsg(nReturn); Cosmos.CommonManager.WinManager.ErrorMessage(sErrMsg); UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.INFO_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name , System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "ERROR => CODE : " + nReturn + "=" + sErrMsg); } return nReturn; } sRet = System.Text.Encoding.Default.GetString(rep_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 지불거래 /// /// /// /// /// /// /// /// /// public int TMoneyApprove(string sTID, string sCardType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sResultMsg) { int nReturn = -1; byte[] rep_signpad_array = new byte[2049]; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } nReturn = SpcnRfPrepaidCardApprove(GetByteArrayFromString(sTID), GetByteArrayFromString(sCardType), GetByteArrayFromString(sAmount), GetByteArrayFromString(sMsg1), GetByteArrayFromString(sMsg2), GetByteArrayFromString(sMsg3), rep_signpad_array); sResultMsg = System.Text.Encoding.Default.GetString(rep_signpad_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 지불 재거래 /// /// /// /// /// /// /// /// /// public int TMoneyApproveRe(string sTID, string sCardType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sResultMsg) { int nReturn = -1; byte[] rep_signpad_array = new byte[2049]; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } nReturn = SpcnRfPrepaidCardApproveRe(GetByteArrayFromString(sTID), GetByteArrayFromString(sCardType), GetByteArrayFromString(sAmount), GetByteArrayFromString(sMsg1), GetByteArrayFromString(sMsg2), GetByteArrayFromString(sMsg3), rep_signpad_array); sResultMsg = System.Text.Encoding.Default.GetString(rep_signpad_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 승인내역 Upload /// /// /// /// /// /// /// /// /// /// /// public int TMoneyUploadTran(string sTID, string sbizName, string sDocSeq, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, string sRfData, ref string sResultMsg) { int nReturn = -1; byte[] rep_signpad_array = new byte[2049]; byte[] rep_van_array = new byte[2049]; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } rep_signpad_array = System.Text.Encoding.Default.GetBytes(sRfData); nReturn = SpcnRfUploadTran(GetByteArrayFromString(sTID), GetByteArrayFromString(sbizName), GetByteArrayFromString(sDocSeq), GetByteArrayFromString(sTradeNo), GetByteArrayFromString(sOrgAmount), GetByteArrayFromString(sOrgDateTime), GetByteArrayFromString(sOrgTradeNo), rep_signpad_array, rep_van_array); sResultMsg = System.Text.Encoding.Default.GetString(rep_van_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 직전취소 /// /// /// /// /// /// /// /// /// /// /// public int TMoneyApproveCancel(string sTID, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg) { byte[] rep_signpad_array = new byte[2049]; int nReturn = -1; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } nReturn = SpcnRfPrepaidCardProcCancel(GetByteArrayFromString(sTID), GetByteArrayFromString(sCardType), GetByteArrayFromString(sMsg1), GetByteArrayFromString(sMsg2), GetByteArrayFromString(sMsg3), GetByteArrayFromString(sOrgAmount), GetByteArrayFromString(sOrgDateTime), GetByteArrayFromString(sOrgTradeNo), rep_signpad_array); sResultMsg = System.Text.Encoding.Default.GetString(rep_signpad_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 현금반품 /// /// /// /// /// /// /// /// /// /// /// /// public int TMoneyCashVoid(string sTID, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg) { byte[] rep_signpad_array = new byte[2049]; int nReturn = -1; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } Array.Clear(rep_signpad_array, 0, rep_signpad_array.Length); nReturn = SpcnRfPrepaidCardVoidCash(GetByteArrayFromString(sTID), GetByteArrayFromString(sCardType), GetByteArrayFromString(sMsg1), GetByteArrayFromString(sMsg2), GetByteArrayFromString(sMsg3), GetByteArrayFromString(sOrgAmount), GetByteArrayFromString(sOrgDateTime), GetByteArrayFromString(sOrgTradeNo), rep_signpad_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } /// /// T-Money 반품충전 /// /// /// /// /// /// /// /// /// /// /// /// /// /// public int TMoneyVoidCharge(string sTID, string sbizName, string sDocSeq, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg) { byte[] rep_signpad_array = new byte[2049]; int nReturn = -1; try { // 무결성 실패후 진행시 오류 메시지 표시 if (m_cDevStatus.SignPad.UseYn != true) { Cosmos.CommonManager.WinManager.ErrorMessage(Cosmos.CommonManager.POS_MESSAGE.ERROR.MSG_0390); return nReturn; } Array.Clear(rep_signpad_array, 0, rep_signpad_array.Length); nReturn = SpcnRfPrepaidCardCancel(GetByteArrayFromString(sTID), GetByteArrayFromString(sbizName), GetByteArrayFromString(sDocSeq), GetByteArrayFromString(sCardType), GetByteArrayFromString(sMsg1), GetByteArrayFromString(sMsg2), GetByteArrayFromString(sMsg3), GetByteArrayFromString(sTradeNo), GetByteArrayFromString(sOrgAmount), GetByteArrayFromString(sOrgDateTime), GetByteArrayFromString(sOrgTradeNo), rep_signpad_array); sResultMsg = System.Text.Encoding.Default.GetString(rep_signpad_array); } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_IOS, 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 (함수명)) ex.Message); } return nReturn; } private byte[] GetByteArrayFromString(string src) { return System.Text.Encoding.Default.GetBytes(src); } #endregion #region 응답코드 /// /// 응답코드 /// /// /// private string ErrCodeToMsg(int nErrCode) { string sMsg = string.Empty; try { switch (nErrCode) { case -3: sMsg = "암호화오류(전문생성오류)"; break; case -4: sMsg = "암호화오류(전문생성오류)"; break; case -5: sMsg = "암호화오류 (전문오류)"; break; case -6: sMsg = "암호화오류 (전문오류)"; break; case -7: sMsg = "암호화오류 (키생성)"; break; case -8: sMsg = "암호화오류 (키생성)"; break; case -9: sMsg = "암호화오류 (키생성)"; break; case -10: sMsg = "요청 IP 오류"; break; case -11: sMsg = "암호화 구분 2 붙인 전문 오류"; break; case -12: sMsg = "전자서명 전문일 경우 전문길이 필드 없는 오류"; break; case -13: sMsg = "전자서명 전문일 경우 전문길이 필드 없는 오류"; break; case -14: sMsg = "전문 전체길이 체크 오류"; break; case -15: sMsg = "파라미터 오류 (접속 IP 오류)"; break; case -16: sMsg = "파라미터 오류 (요청전문 오류)"; break; case -17: sMsg = "전자서명 암호화 오류"; break; case -18: sMsg = "개시거래 요망"; break; case -20: sMsg = "SOCKET CONNECT 오류"; break; case -21: sMsg = "SOCKET SELECT 오류"; break; case -22: sMsg = "SOCKET RECV SELECT 오류"; break; case -23: sMsg = "SOCKET RECV SELECT 오류"; break; case -24: sMsg = "SOCKET RECV 오류"; break; case -25: sMsg = "SOCKET RECV 오류"; break; case -26: sMsg = "SOCKET SEND 오류"; break; case -30: sMsg = "전문오류 (전자서명 필요없는 거래)"; break; case -31: sMsg = "전문오류 (전자서명 데이터 구조 오류)"; break; case -32: sMsg = "전문오류 (CR 없음)"; break; case -33: sMsg = "전문오류 (ETX 없음)"; break; case -34: sMsg = "전문오류(FS2 없음)"; break; case -35: sMsg = "전자서명오류 (암호화 오류)"; break; case -36: sMsg = "전자서명 길이 오류 (모바일)"; break; case -37: sMsg = "IC데이터 오류 (FS오류)"; break; case -38: sMsg = "IC데이터 오류(IC데이터/등록정보 오류)"; break; case -40: sMsg = "EOT 미수신 (수신X)"; break; case -41: sMsg = "EOT 미수신 (수신오류)"; break; case -42: sMsg = "SOCKET 초기화 오류"; break; case -43: sMsg = "SOCKET CONNECT 오류"; break; case -44: sMsg = "SOCKET SEND 오류 (암호화)"; break; case -45: sMsg = "SOCKET SEND 오류 (전문)"; break; case -46: sMsg = "SOCKET RECV 오류 (헤더)"; break; case -47: sMsg = "SOCKET RECV 오류 (전문)"; break; case -48: sMsg = "SOCKET RECV 오류 (암호화)"; break; case -49: sMsg = "SOCKET RECV 오류 (CHECK)"; break; case -50: sMsg = "SOCKET SEND 오류 (ACK)"; break; case -60: sMsg = "(모바일)SOCKET 생성 오류"; break; case -61: sMsg = "(모바일)SOCKET CONNECT 오류"; break; case -62: sMsg = "(모바일)SOCKET SELECT 오류"; break; case -63: sMsg = "(모바일)SOCKET 옵션 설정 오류"; break; case -64: sMsg = "(모바일)SOCKET 옵션 설정 오류"; break; case -65: sMsg = "(모바일)SOCKET 오류"; break; case -66: sMsg = "(모바일)SOCKET RECV 오류"; break; case -67: sMsg = "(모바일)SOCKET RECV SELECT 오류"; break; case -68: sMsg = "(모바일)SOCKET RECV SELECT 오류"; break; case -69: sMsg = "(모바일)SOCKET SEND 오류"; break; case -70: sMsg = "(모바일)SOCKET SEND SELECT 오류"; break; case -79: sMsg = "시리얼 클래스 생성 오류"; break; case -80: sMsg = "INI 파일 오류 (TYPE 구분 설정요망)"; break; case -81: sMsg = "싸인패드 포트 오류"; break; case -82: sMsg = "싸인패드 포트 오류"; break; case -83: sMsg = "싸인패드 통신 오류"; break; case -84: sMsg = "싸인패드 사용자 취소"; break; case -85: sMsg = "싸인패드 타임아웃 오류"; break; case -86: sMsg = "싸인패드 오픈 오류"; break; case -87: sMsg = "싸인패드 초기화 오류"; break; case -88: sMsg = "싸인패드 요청 오류"; break; case -89: sMsg = "싸인패드 통신 오류"; break; case -90: sMsg = "요청전문오류 (헤더 메시지 길이 오류)"; break; case -91: sMsg = "요청전문오류 (거래구분 코드 오류)"; break; case -92: sMsg = "미지원 전문"; break; case -93: sMsg = "요청전문 필수 항목 누락"; break; case -94: sMsg = "버퍼 초과"; break; case -95: sMsg = "핀블럭 길이 오류"; break; case -96: sMsg = "(전자서명생성) 이미지 파일 미존재"; break; case -97: sMsg = "(전자서명생성) 이미지 파일 읽기 오류"; break; case -98: sMsg = "(전자서명생성) 이미지 파일 크기 오류"; break; case -99: sMsg = "(전자서명생성) 이미지 파일 데이터 오류"; break; case -101: sMsg = "IC리더기 포트 설정 오류"; break; case -102: sMsg = "IC리더기 오픈 오류"; break; case -103: sMsg = "IC리더기 시리얼 생성 오류"; break; case -104: sMsg = "IC리더기 파라미터 오류"; break; case -105: sMsg = "IC리더기 쓰기 오류"; break; case -106: sMsg = "보안표준키 다운로드 항목 오류(K2)"; break; case -107: sMsg = "보안표준키 다운로드 승인 거절(K2)"; break; case -108: sMsg = "보안표준키 다운로드 항목 오류(K4)"; break; case -109: sMsg = "보안표준키 다운로드 승인 거절(K4)"; break; case -110: sMsg = "IC리더기 응답 오류(Class 생성 오류)"; break; case -111: sMsg = "IC리더기 응답 오류(길이 정보 수신 오류)"; break; case -112: sMsg = "IC리더기 응답 오류(STX 오류)"; break; case -113: sMsg = "IC리더기 응답 오류(수신 오류)"; break; case -114: sMsg = "IC리더기 응답전문 오류(STX 오류)"; break; case -115: sMsg = "IC리더기 응답전문 오류(ETX 오류)"; break; case -116: sMsg = "IC리더기 응답전문 오류(LRC 오류)"; break; case -117: sMsg = "IC리더기 초기화 오류"; break; case -118: sMsg = "IC리더기 사용자 취소"; break; case -119: sMsg = "IC리더기 타임아웃 오류"; break; case -120: sMsg = "IC리더기 통신 오류"; break; case -121: sMsg = "카드발급사 인증요청 IC CHIP DATA 오류"; break; case -122: sMsg = "카드발급사 인증요청 데이터 오류"; break; case -123: sMsg = "카드발급사 등록제 정보 데이터 오류"; break; case -124: sMsg = "카드발급사 응답전문 데이터 오류"; break; case -125: sMsg = "카드발급사 전문 구분 데이터 오류"; break; case -126: sMsg = "카드발급사 전문버젼 데이터 오류"; break; case -127: sMsg = "카드발급사 응답전문 미승인 오류"; break; case -128: sMsg = "카드발급사 응답전문 GS 데이터 오류"; break; case -129: sMsg = "카드발급사 인증 거절 (망취소 거절) - POS 망취소 요망"; break; case -130: sMsg = "카드발급사 인증 거절 (망취소 완료)"; break; case -131: sMsg = "망취소 실패(GS 없음) - POS에서 망취소 요망"; break; case -132: sMsg = "망취소 실패(서버 거절) - POS에서 망취소 요망"; break; case -133: sMsg = "망취소 실패(통신오류) - POS에서 망취소 요망"; break; case -134: sMsg = "망취소 대상 아님"; break; case -140: sMsg = "IC리더기 카드 읽기 오류 (거래매체 유형 미지정 오류)"; break; case -141: sMsg = "IC리더기 카드 읽기 오류 (거래매체 유형 예외 오류)"; break; case -142: sMsg = "IC리더기 카드 읽기 오류 (IC거래 구분 오류)"; break; case -143: sMsg = "IC리더기 거래중 카드 제거 오류"; break; case -144: sMsg = "IC리더기 거래가 거절된 카드 오류"; break; case -145: sMsg = "IC리더기 기타 오류"; break; case -146: sMsg = "IC리더기 거래 요청 전 카드 삽입 오류"; break; case -147: sMsg = "IC리더기 상호인증 미완료 후 거래 시도 오류"; break; case -148: sMsg = "IC리더기 무결성 미성공 후 거래 시도 오류"; break; case -149: sMsg = "IC리더기 에러 코드 발생 오류"; break; case -150: sMsg = "IC리더기 Fallback 진행 오류"; break; case -151: sMsg = "IC리더기 거래 중 오류 (비정상 응답)"; break; case -161: sMsg = "IC 거래 진행 중"; break; case -162: sMsg = "SIGNPAD 거래 진행 중"; break; case -2150: sMsg = "지원 불가 카드입니다."; break; default: sMsg = "알수없는 메세지"; break; } //sMsg = string.Format("ErrCd:{0} Desc:{1}", nErrCode, sMsg); } catch { } return sMsg; } #endregion } }