using System; using System.Collections; using System.Text; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Data; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 선불카드 판매 - 중국 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Service { class SalePreCard : IPaymentUs { protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 protected StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) protected PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 protected IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 public SalePreCard() { m_cPosStatus = (PosStatus)StateObject.POS; m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); } #region SearchPayment 결제 조회 /// /// 결제 조회 /// /// /// /// public string SearchPayment(string[] aParam, ref string[] aRet) { string sRet = UserCom.RST_ERR; try { string sInqFlag = aParam[0]; // 처리구분 (거래구분 0(0:전체, 1:카드번호), 1(0:승인, 1:취소)) string sCardNo = aParam[1]; // 카드번호 string sTranType = ItemConst.PRIPAIDCARD_SALE_TYPE.SELECT; // 거래구분 (0:조회, 1:승인, 2:취소) bool bViewMode = (aParam[2] == "1" ? true : false); // 조회중 표시 여부 sRet = ExecuteHostIrt(sTranType, sInqFlag, sCardNo, bViewMode, ref aRet); if (sRet != UserCom.RST_OK) return sRet; } 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 GetPayment 결제 정보 획득 /// /// 결제 정보 획득 /// /// /// public object GetPayment(string[] aParam) { return null; // m_cPayItem; } #endregion #region SetPayment 결제 등록 /// /// 결제 등록 /// /// /// public string SetPayment(string[] aParam) { string sRet = UserCom.RST_ERR; string[] aRet = null; try { string sInqFlag = aParam[0]; // 처리구분 (거래구분 0(0:전체, 1:카드번호), 1(0:승인, 1:취소)) string sCardNo = aParam[1]; // 카드번호 string sTranType = ItemConst.PRIPAIDCARD_SALE_TYPE.APPROVE; // 거래구분 (0:조회, 1:승인, 2:취소) bool bViewMode = (aParam[2] == "1" ? true : false); // 조회중 표시 여부 sRet = ExecuteHostIrt(sTranType, sInqFlag, sCardNo, bViewMode, ref aRet); if (sRet != UserCom.RST_OK) return sRet; } 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 결제 취소 /// /// 결제 취소 /// /// public string CancelPayment(string[] aParam) { string sRet = UserCom.RST_ERR; string[] aRet = null; try { string sInqFlag = aParam[0]; // 처리구분 (거래구분 0(0:전체, 1:카드번호), 1(0:승인, 1:취소)) string sCardNo = aParam[1]; // 카드번호 string sTranType = ItemConst.PRIPAIDCARD_SALE_TYPE.APPROVE_CAN; // 거래구분 (0:조회, 1:승인, 2:취소) bool bViewMode = (aParam[2] == "1" ? true : false); // 조회중 표시 여부 sRet = ExecuteHostIrt(sTranType, sInqFlag, sCardNo, bViewMode, ref aRet); if (sRet != UserCom.RST_OK) return sRet; } 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 결제 반품 /// /// 결제 반품 /// /// public string RefundPayment(string[] aParam) { string sRet = UserCom.RST_ERR; string[] aRet = null; try { string sInqFlag = aParam[0]; // 처리구분 (거래구분 0(0:전체, 1:카드번호), 1(0:승인, 1:취소)) string sCardNo = aParam[1]; // 카드번호 string sTranType = ItemConst.PRIPAIDCARD_SALE_TYPE.APPROVE_CAN; // 거래구분 (0:조회, 1:승인, 2:취소) bool bViewMode = (aParam[2] == "1" ? true : false); // 조회중 표시 여부 sRet = ExecuteHostIrt(sTranType, sInqFlag, sCardNo, bViewMode, ref aRet); if (sRet != UserCom.RST_OK) return sRet; } 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 SetMenualPayment public string SetMenualPayment(string[] aParam) { throw new NotImplementedException(); } #endregion #region Host 조회 실행 /// /// Host 조회 실행 /// public string ExecuteHostIrt(string sTranType, string sInqFlag, string sCardNo, bool bViewMode, ref string[] aRet) { int iRecvTimeOut = 10000; string sRet = UserCom.RST_ERR; try { Hashtable htSendData = new Hashtable(); Hashtable htRecvData = new Hashtable(); if (sTranType == ItemConst.PRIPAIDCARD_SALE_TYPE.SELECT) { // 목록 조회 htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.PREPAIDCARD_SEL_INQ); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.STOR_CD, m_cPosStatus.Base.StoreNo); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.INQ_FLAG, sInqFlag); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.INQ_GIFT_NO, sCardNo); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.VAULES, ""); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.RES_CD, ""); htSendData.Add(Column.POS_SEL_PREPAIDCARD.DATA.RES_MSG, ""); sRet = m_cDataCommon.ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.PayInqPort, iRecvTimeOut, htSendData, ref htRecvData, bViewMode); if (sRet != UserCom.RST_OK) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0005)); sRet = UserCom.RST_ERR; return sRet; } if (htRecvData[Column.POS_SEL_PREPAIDCARD.DATA.RES_CD].ToString() != "00") { //WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0294) + "\n (" + htRecvData[Column.POS_SEL_PREPAIDCARD.DATA.RES_CD].ToString() + ")" + "\n\r" + htRecvData[Column.POS_SEL_PREPAIDCARD.DATA.RES_MSG]); if (sInqFlag == "1") WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0603)); sRet = UserCom.RST_ERR; return sRet; } else { // 데이터 aRet = htRecvData[Column.POS_SEL_PREPAIDCARD.DATA.VAULES].ToString().Split(new string[] { "#~" }, StringSplitOptions.None); } } else { // 승인/취소 htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.PREPAIDCARD_APPR_INQ); htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.STOR_CD, m_cPosStatus.Base.StoreNo); htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.INQ_FLAG, sInqFlag); htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.INQ_GIFT_NO, sCardNo); htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.RES_CD, ""); htSendData.Add(Column.POS_APPR_PREPAIDCARD.DATA.RES_MSG, ""); sRet = m_cDataCommon.ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.PayInqPort, iRecvTimeOut, htSendData, ref htRecvData, bViewMode); if (sRet != UserCom.RST_OK) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0005)); sRet = UserCom.RST_ERR; return sRet; } if (htRecvData[Column.POS_APPR_PREPAIDCARD.DATA.RES_CD].ToString() != "00" && bViewMode == true) { if (sInqFlag == "0") { // 승인요청 실패 WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0598) + "\n (" + htRecvData[Column.POS_APPR_PREPAIDCARD.DATA.RES_CD].ToString() + ")" + "\n\r" + htRecvData[Column.POS_APPR_PREPAIDCARD.DATA.RES_MSG]); } else { // 취소요청 실패 WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0600) + "\n (" + htRecvData[Column.POS_APPR_PREPAIDCARD.DATA.RES_CD].ToString() + ")" + "\n\r" + htRecvData[Column.POS_APPR_PREPAIDCARD.DATA.RES_MSG]); } sRet = UserCom.RST_ERR; return sRet; } } sRet = UserCom.RST_OK; return sRet; } 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 } }