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
}
}