wyh 2025-03-31
이벤트 결제 로직 수정
@6d5eae5670f1387ddc5464a391147f64d8c2b4c3
 
src/main/java/itn/com/cmm/util/KgmPayUtil.java (added)
+++ src/main/java/itn/com/cmm/util/KgmPayUtil.java
@@ -0,0 +1,1160 @@
+package itn.com.cmm.util;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.LoginVO;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.mjo.mjocommon.MjonCommon;
+import itn.let.mjo.msgdata.service.MjonMsgDataService;
+import itn.let.mjo.pay.service.MjonKgmVO;
+import itn.let.mjo.pay.service.MjonPayService;
+import itn.let.mjo.pay.service.MjonPayVO;
+import itn.let.sym.site.service.EgovSiteManagerService;
+import itn.let.sym.site.service.JoinSettingVO;
+import itn.let.uss.umt.service.EgovUserManageService;
+import itn.let.uss.umt.service.MberManageVO;
+import itn.let.uss.umt.service.UserManageVO;
+import itn.let.utl.user.service.MjonNoticeSendUtil;
+import mup.mcash.module.common.McashCipher.McashCipher;
+
+@Component("kgmPayUtil")
+public class KgmPayUtil {
+	
+	/** KG 모빌리언스 설정 */
+	// CARD
+	@Value("#{globalSettings['Globals.pay.kgm.card.cnSvcid']}")
+	private String globalCnSvcid;
+	@Value("#{globalSettings['Globals.pay.kgm.card.payMode']}")
+	private String globalCnPayMode;
+
+	// BANK
+	@Value("#{globalSettings['Globals.pay.kgm.bank.raSvcid']}")
+	private String globalRaSvcid;
+	@Value("#{globalSettings['Globals.pay.kgm.bank.payMode']}")
+	private String globalRaPayMode;
+	
+	// MOBILE
+	@Value("#{globalSettings['Globals.pay.kgm.mobile.mcSvcid']}")
+	private String globalMcSvcid;
+	@Value("#{globalSettings['Globals.pay.kgm.mobile.payMode']}")
+	private String globalMcPayMode;
+	
+	@Resource(name = "egovPgMoidGnrService")
+    private EgovIdGnrService idgenPgMoid;
+	
+	@Resource(name = "egovMjonCashIdGnrService")
+    private EgovIdGnrService idgenMjonCashId;
+	
+	@Resource(name = "egovMjonPointIdGnrService")
+    private EgovIdGnrService idgenMjonPointId;
+	
+	@Resource(name="MjonCommon")
+	private MjonCommon mjonCommon;
+	
+	@Resource(name = "mjonPayService")
+    private MjonPayService mjonPayService;
+	
+	@Resource(name = "userManageService")
+	private EgovUserManageService userManageService;
+	
+	@Resource(name = "MjonMsgDataService")
+    private MjonMsgDataService mjonMsgDataService;
+	
+	/** 사이트 설정 */ 
+	@Resource(name = "egovSiteManagerService")
+	private EgovSiteManagerService egovSiteManagerService;
+	
+	/** 알림전송 Util */
+	@Resource(name = "mjonNoticeSendUtil")
+	private MjonNoticeSendUtil mjonNoticeSendUtil;
+	
+	@Resource(name = "mjonPayUtil")
+	MjonPayUtil mjonPayUtil;
+	
+	public MjonKgmVO kgmCardEncode(HttpServletRequest request, String okUrl, String notiurl) {
+		
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+		// Get Server Info
+		String kgmServerName = request.getServerName();
+		String kgmPath = "";
+		kgmPath = getKgServerPath(request);
+		
+		// Unique한 거래번호를 위한 값 추출 (밀리세컨드까지 조회)
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
+		String appr_dtm = dateFormat.format(new Date());
+		
+		/*****************************************************************************************/
+		String CASH_GB		= "CN";		//[   2byte 고정] 결제수단구분. "RA" 고정값. 수정불가!
+
+		/*****************************************************************************************
+		- 필수 입력 항목
+		*****************************************************************************************/
+		String VER 			= "ALL_NEW";										//ALL_NEW : 버전설정 고정
+		String CN_SVCID		= globalCnSvcid.trim();										//서비스아이디
+		String PAY_MODE		= globalCnPayMode.trim();										//[   2byte 고정] 연동시 테스트/실결제 구분 (00: 테스트결제-비과금, 10: 실거래결제-과금)
+		String Prdtprice	= request.getParameter("Prdtprice");;				//결제요청금액.
+		String Prdtnm		= "캐시충전";											//상품명 ( 50byte 이내 )
+		String Siteurl		= kgmServerName;									//가맹점도메인
+		String Tradeid		= CN_SVCID + "_" + appr_dtm + "_" + numberGen(6,1);	//가맹점거래번호 //결제 요청 시 마다 unique한 값을 세팅해야 함.
+		String Okurl 		= kgmPath + okUrl;		//성공화면처리URL : 결제완료통보페이지 full Url (예:http://www.mcash.co.kr/okurl.jsp )
+		String Notiurl		= kgmPath + notiurl;		//결제처리URL : 결제 완료 후, 가맹점측 과금 등 처리할 가맹점측 URL
+
+		/*****************************************************************************************
+		- 선택 입력 항목
+		*****************************************************************************************/
+		String Userid = userId;						//가맹점결제자ID
+		String Failurl			= "";	//[ 128byte 이하] 결제 실패 시 사용자에게 보여질 가맹점 측 실패 페이지. 결제처리에 대한 실패처리 안내를 가맹점에서 제어해야 할 경우만 사용.
+
+		
+		/*****************************************************************************************
+		- 암호화 처리 (암호화 사용 시)
+		Cryptstring 항목은 금액변조에 대한 확인용으로 반드시 아래와 같이 문자열을 생성하여야 합니다.
+
+		주) 암호화 스트링은 가맹점에서 전달하는 거래번호로 부터 추출되어 사용되므로
+		암호화에 이용한 거래번호가  변조되어 전달될 경우 복호화 실패로 결제 진행이 불가합니다.
+		*****************************************************************************************/
+		String Cryptyn		= "Y";	//Y: 암호화 사용, N: 암호화 미사용
+		String Cryptstring	= "";	//암호화 사용 시 암호화된 스트링
+
+		if ("Y".equals(Cryptyn)) {
+			Cryptstring	= Prdtprice + Okurl;	//금액변조확인 (결제요청금액 + Okurl)
+			Okurl		= McashCipher.encodeString(Okurl, Tradeid);
+			Failurl		= McashCipher.encodeString(Failurl, Tradeid);
+			Notiurl		= McashCipher.encodeString(Notiurl, Tradeid);
+			Prdtprice	= McashCipher.encodeString(Prdtprice, Tradeid);
+			Cryptstring	= McashCipher.encodeString(Cryptstring, Tradeid);
+		}
+			
+		MjonKgmVO mjonKgmVO = new MjonKgmVO();
+		// 필수
+		mjonKgmVO.setCash_gb(CASH_GB);
+		mjonKgmVO.setRa_svcid(CN_SVCID);
+		mjonKgmVO.setPay_mode(PAY_MODE);
+		mjonKgmVO.setPrdtnm(Prdtnm);
+		mjonKgmVO.setSiteurl(Siteurl);
+		mjonKgmVO.setTradeid(Tradeid);
+		
+		mjonKgmVO.setPrdtprice(Prdtprice);
+		mjonKgmVO.setUserid(Userid);
+		mjonKgmVO.setOkurl(Okurl);
+		mjonKgmVO.setNotiurl(Notiurl);
+		mjonKgmVO.setCryptstring(Cryptstring);
+		
+		return mjonKgmVO;
+	}
+	
+	public MjonPayVO kgmCardNotiUrl(HttpServletResponse response, HttpServletRequest request) {
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+    	
+		/*****************************************************************************************/
+		MjonPayVO mjonPayVO = new MjonPayVO();
+    	String rtnMsg = "";
+    	String CASH_GB		= request.getParameter("CASH_GB");		// 결제수단(CN)
+    	String Svcid		= request.getParameter("Svcid");		// 서비스ID
+    	String Mobilid		= request.getParameter("Mobilid");		// 모빌리언스 거래번호
+    	String Signdate		= request.getParameter("Signdate");		// 결제일자
+    	String Tradeid		= request.getParameter("Tradeid");		// 상점거래번호
+    	String Mrchid		= request.getParameter("Mrchid");		// 상점ID
+    	String Prdtnm		= request.getParameter("Prdtnm");		// 상품명
+    	String Prdtprice	= request.getParameter("Prdtprice");	// 상품가격
+    	String Userid		= request.getParameter("Userid");		// 사용자ID
+    	String Resultcd		= request.getParameter("Resultcd");		// 결과코드
+    	String Resultmsg	= request.getParameter("Resultmsg");	// 결과메세지
+    	String Payeremail	= request.getParameter("Payeremail");	/* 결제자 이메일 */
+    	
+    	String Cardcode		= request.getParameter("Cardcode");		/* 결제 카드코드 */
+    	String Cardname		= request.getParameter("Cardname");		/* 결제 카드사명 */
+    	String chkValue		= request.getParameter("chkValue");		/* 결과값 검증 hash데이터 */
+    	String spayMethod	= request.getParameter("Paymethod");	/* 지불방법 (간편결제 시에만 응답) */	
+    	String MSTR			= request.getParameter("MSTR");			//[2000byte 이하] 가맹점 전달 콜백변수
+    	
+    	
+    	System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS NotiUrl - CARD Tradeid : " + Tradeid);
+		System.out.println("KG MOBILIANS NotiUrl - CARD MSTR : " + MSTR);
+		System.out.println("KG MOBILIANS NotiUrl - CARD SpayMethod : " + spayMethod);
+		
+		String cpChkValue = "";
+		cpChkValue = "Mobilid="+ Mobilid +
+								"&Mrchid=null"+
+								"&Svcid="+ Svcid +
+								"&Tradeid="+ Tradeid +
+								"&Signdate="+ Signdate +
+								"&Prdtprice="+ Prdtprice;
+		String encChkValue = McashCipher.encodeString(cpChkValue, Tradeid);
+		System.out.println("KG MOBILIANS NotiUrl - CARD chkValue : " + chkValue);
+		System.out.println("KG MOBILIANS NotiUrl - CARD encChkValue : " + encChkValue);
+		System.out.println("KG MOBILIANS NotiUrl - CARD getIsKgmServerIp : " + getIsKgmServerIp(request));	// Kgm Ip Check
+		
+		try {
+			// Step 1. Tid로 존재여부 체크
+			int tidCnt = mjonPayService.selectPayCountByTid(Tradeid);
+			if (tidCnt > 0) {
+    			// 저장된 데이터 있을경우
+				rtnMsg = "SUCCESS";	    	
+    			
+				System.out.println("#############################################################");
+				System.out.println("KG MOBILIANS NotiUrl - BANK Tradeid : " + Tradeid);
+				System.out.println("KG MOBILIANS NotiUrl - BANK returnMsg2 : " + rtnMsg);    					    			
+			} else if (tidCnt == 0) {
+				// Check1. KG모빌리언스 호출아이피 체크
+				if (!getIsKgmServerIp(request)) {
+					System.out.println("#############################################################");
+					System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리");
+					
+					Resultcd = "9998";
+					Resultmsg = "NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리. KG모빌리언스 정상결제  여부 확인후, 고객님께 안내후 결제취소해주세요.";
+					
+			    	try {
+			    		// 법인폰 알람여부 체크
+			    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+			    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+			    		// SMS 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+			    			// 스미싱의심 SMS 알림전송
+			    			mjonNoticeSendUtil.smishingSmsNoticeSend("NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리", Userid, "");    		
+			    		}    		
+			    		
+			    		// SLACK 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+				    		// Slack 메시지 발송(단순본문)
+				    		String msg = "[문자온] " + Userid + "님 결제건 알림 => NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리했습니다. KG모빌리언스 에는 정상결제 됐을수 있습니다. https://cp.mcash.co.kr/mcht 에서 정상결제 확인후, 고객님께 안내후, 결제취소해주세요.";
+				    		mjonCommon.sendSimpleSlackMsg(msg);    		
+			    		}
+			    	} catch (Exception e) {
+						System.out.println("#############################################################");
+						System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리  => SMS, 슬랙 알림 오류");			    		
+			    	}
+				}
+				// 저장 Start 
+				// 사용자 정보
+		    	String mberNm = "";
+		    	String moblphonNo = "";
+		    	String mberEmailAdres = "";
+		    	MberManageVO mberManageVO = new MberManageVO();
+		    	mberManageVO.setMberId(Userid);
+		    	MberManageVO userInfo = userManageService.selectUserInfo(mberManageVO);
+		    	if (userInfo != null) {
+		    		mberNm = userInfo.getMberNm();
+		    		moblphonNo = userInfo.getMoblphonNo();
+		    		mberEmailAdres = userInfo.getMberEmailAdres();    		
+		    	}
+				
+		    	mjonPayVO.setResultCd(Resultcd);
+		    	mjonPayVO.setResultMsg(Resultmsg);
+		    	mjonPayVO.setAutoBillKey("");
+		    	mjonPayVO.setCashGb(CASH_GB);
+		    	mjonPayVO.setAutoYn("");
+		    	mjonPayVO.setCommId("");
+		    	mjonPayVO.setMobileId(Mobilid);
+		    	mjonPayVO.setMrchId(Mrchid);
+		    	mjonPayVO.setPno("");
+		    	mjonPayVO.setPrdtNm(Prdtnm);
+		    	mjonPayVO.setPrdtPrice(Prdtprice);
+		    	mjonPayVO.setSignDate(Signdate);
+		    	mjonPayVO.setSvcId(Svcid);
+		    	mjonPayVO.setTradeId(Tradeid);
+		    	mjonPayVO.setUserId(Userid);
+		    	mjonPayVO.setUserKey("");
+		    	mjonPayVO.setMcEzKey("");
+				
+		    	// 추가정보(mj_pg)
+		    	String pgStatus = "";
+		    	if("0000".equals(Resultcd)) {
+		    		pgStatus = "1";		// 1:결제완료
+		    	}else {
+		    		pgStatus = "4";		// 4.결제오류
+		    	}
+		    	mjonPayVO.setPgStatus(pgStatus);		// 결제 상태 - 0:입금대기, 1:결제완료, 4.결제오류, 9:취소완료
+		    	mjonPayVO.setRcptType("9");				// 현금영수증 유형-0:미발행, 1:소득공제, 2:지출증빙, 9:세금계산서[PG에 없는 값]
+		    	mjonPayVO.setResultCode(Resultcd); 
+		    	mjonPayVO.setResultMsg(Resultmsg); 
+		    	mjonPayVO.setAmt(Prdtprice);			// 결제금액
+		    	mjonPayVO.setPayMethod("BANK");			// 결제방법
+		    	mjonPayVO.setSpayMethod("");			// 간편결제 결제방법
+				mjonPayVO.setSpayDiv("");				// 간편결제분류
+				
+				mjonPayVO.setPgCode("KGM");				//
+				mjonPayVO.setGoodsName(Prdtnm);			//
+				mjonPayVO.setPhone("");					// 모바일
+				mjonPayVO.setMobile("");				// 모바일
+				mjonPayVO.setPayerEmail(Payeremail);
+				mjonPayVO.setTid(Tradeid);				// Tid
+				mjonPayVO.setMid(Svcid);				// Mid = Svcid
+				
+				// 회원정보
+		    	mjonPayVO.setBuyerName(mberNm);
+		    	mjonPayVO.setBuyerTel(moblphonNo);
+		    	mjonPayVO.setBuyerEmail(mberEmailAdres);
+		    	mjonPayVO.setEmail(mberEmailAdres);			// 이메일(회원정보)
+		    	
+		    	// 추가
+				
+		    	
+				// 상점 주문번호 결제 완료  후 생성
+		    	mjonPayVO.setMoid(idgenPgMoid.getNextStringId()); 
+		    	
+		    	//세금 값 넣기
+				mjonPayVO = this.setKgmTexV2VO(mjonPayVO);
+		    	
+				//cash 값 넣기
+				mjonPayVO = this.setKgmCashVO(mjonPayVO);
+				
+				//point 값 넣기
+				mjonPayVO = this.setKgmPointVO(mjonPayVO);
+		    	
+		    	rtnMsg = "SUCCESS";
+			}
+		}catch(Exception e) {
+			rtnMsg = "FAIL";
+			
+			System.out.println("#############################################################");
+			System.out.println("KG MOBILIANS NotiUrl - BANK Tradeid : " + Tradeid);
+			System.out.println("KG MOBILIANS NotiUrl - BANK returnMsg : " + rtnMsg);
+			System.out.println("KG MOBILIANS NotiUrl - BANK e.getMessage() : " + e.getMessage());
+   		}	
+		
+		mjonPayVO.setRtnMsg(rtnMsg);
+		
+		return mjonPayVO;
+	}
+	
+	public MjonKgmVO kgmBankEncode(HttpServletRequest request, String okUrl, String notiurl) {
+		
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+		// Get Server Info
+		String kgmServerName = request.getServerName();
+		String kgmPath = "";
+		kgmPath = getKgServerPath(request);
+		
+		// Unique한 거래번호를 위한 값 추출 (밀리세컨드까지 조회)
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
+		String appr_dtm = dateFormat.format(new Date());
+		
+		/*****************************************************************************************/
+		String CASH_GB		= "RA";		//[   2byte 고정] 결제수단구분. "RA" 고정값. 수정불가!
+
+		/*****************************************************************************************
+		- 필수 입력 항목
+		*****************************************************************************************/
+		String RA_SVCID		= globalRaSvcid.trim();										//서비스아이디
+		String PAY_MODE		= globalRaPayMode.trim();										//[   2byte 고정] 연동시 테스트/실결제 구분 (00: 테스트결제-비과금, 10: 실거래결제-과금)
+		String Prdtprice	= request.getParameter("Prdtprice");;				//결제요청금액.
+		String Prdtnm		= "캐시충전";											//상품명 ( 50byte 이내 )
+		String Siteurl		= kgmServerName;									//가맹점도메인
+		String Tradeid		= RA_SVCID + "_" + appr_dtm + "_" + numberGen(6,1);	//가맹점거래번호 //결제 요청 시 마다 unique한 값을 세팅해야 함.
+		String Okurl 		= kgmPath + okUrl;		//성공화면처리URL : 결제완료통보페이지 full Url (예:http://www.mcash.co.kr/okurl.jsp )
+		String Notiurl		= kgmPath + notiurl;		//결제처리URL : 결제 완료 후, 가맹점측 과금 등 처리할 가맹점측 URL
+
+		/*****************************************************************************************
+		- 선택 입력 항목
+		*****************************************************************************************/
+		String Userid = userId;						//가맹점결제자ID
+		String Failurl			= "";	//[ 128byte 이하] 결제 실패 시 사용자에게 보여질 가맹점 측 실패 페이지. 결제처리에 대한 실패처리 안내를 가맹점에서 제어해야 할 경우만 사용.
+
+		
+		/*****************************************************************************************
+		- 암호화 처리 (암호화 사용 시)
+		Cryptstring 항목은 금액변조에 대한 확인용으로 반드시 아래와 같이 문자열을 생성하여야 합니다.
+
+		주) 암호화 스트링은 가맹점에서 전달하는 거래번호로 부터 추출되어 사용되므로
+		암호화에 이용한 거래번호가  변조되어 전달될 경우 복호화 실패로 결제 진행이 불가합니다.
+		*****************************************************************************************/
+		String Cryptyn		= "Y";	//Y: 암호화 사용, N: 암호화 미사용
+		String Cryptstring	= "";	//암호화 사용 시 암호화된 스트링
+
+		if ("Y".equals(Cryptyn)) {
+			Cryptstring	= Prdtprice + Okurl;	//금액변조확인 (결제요청금액 + Okurl)
+			Okurl		= McashCipher.encodeString(Okurl, Tradeid);
+			Failurl		= McashCipher.encodeString(Failurl, Tradeid);
+			Notiurl		= McashCipher.encodeString(Notiurl, Tradeid);
+			Prdtprice	= McashCipher.encodeString(Prdtprice, Tradeid);
+			Cryptstring	= McashCipher.encodeString(Cryptstring, Tradeid);
+		}
+			
+		MjonKgmVO mjonKgmVO = new MjonKgmVO();
+		// 필수
+		mjonKgmVO.setCash_gb(CASH_GB);
+		mjonKgmVO.setRa_svcid(RA_SVCID);
+		mjonKgmVO.setPay_mode(PAY_MODE);
+		mjonKgmVO.setPrdtnm(Prdtnm);
+		mjonKgmVO.setSiteurl(Siteurl);
+		mjonKgmVO.setTradeid(Tradeid);
+		
+		mjonKgmVO.setPrdtprice(Prdtprice);
+		mjonKgmVO.setUserid(Userid);
+		mjonKgmVO.setOkurl(Okurl);
+		mjonKgmVO.setNotiurl(Notiurl);
+		mjonKgmVO.setCryptstring(Cryptstring);
+		
+		return mjonKgmVO;
+	}
+	
+	public MjonPayVO kgmBankNotiUrl(HttpServletResponse response, HttpServletRequest request) {
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+    	
+		/*****************************************************************************************/
+		MjonPayVO mjonPayVO = new MjonPayVO();
+    	String rtnMsg = "";
+    	String CASH_GB		= "RA";		//[   2byte 고정] 결제수단구분. "RA" 고정값. 수정불가!
+    	String Svcid		= request.getParameter("Svcid");		//[  12byte 고정] 서비스ID
+    	String Mobilid		= request.getParameter("Mobilid");		//[  15byte 이하] 모빌리언스 거래번호
+    	String Signdate		= request.getParameter("Signdate");		//[  14byte 이하] 결제일자
+    	String Tradeid		= request.getParameter("Tradeid");		//[  40byte 이하] 상점거래번호
+    	String Mrchid		= request.getParameter("Mrchid");		// 상점ID
+    	String Prdtnm		= request.getParameter("Prdtnm");		//[  50byte 이하] 상품명
+    	String Prdtprice	= request.getParameter("Prdtprice");	//[  10byte 이하] 상품가격
+    	String Userid		= request.getParameter("Userid");		//[  20byte 이하] 사용자ID
+    	String Resultcd		= request.getParameter("Resultcd");		//[   4byte 고정] 결과코드
+    	String Resultmsg	= request.getParameter("Resultmsg");	//[ 100byte 이하] 결과메세지
+    	String Payeremail	= request.getParameter("Payeremail");	/* 결제자 이메일 */
+    	
+    	String Banknm		= request.getParameter("Banknm");	/* 은행명 */
+    	
+    	System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS NotiUrl - BANK Tradeid : " + Tradeid);
+		System.out.println("KG MOBILIANS NotiUrl - BANK Banknm : " + Banknm);
+		System.out.println("KG MOBILIANS NotiUrl - BANK getIsKgmServerIp : " + getIsKgmServerIp(request));	// Kgm Ip Check
+		
+		try {
+			// Step 1. Tid로 존재여부 체크
+			int tidCnt = mjonPayService.selectPayCountByTid(Tradeid);
+			if (tidCnt > 0) {
+    			// 저장된 데이터 있을경우
+				rtnMsg = "SUCCESS";	    	
+    			
+				System.out.println("#############################################################");
+				System.out.println("KG MOBILIANS NotiUrl - BANK Tradeid : " + Tradeid);
+				System.out.println("KG MOBILIANS NotiUrl - BANK returnMsg2 : " + rtnMsg);    					    			
+			} else if (tidCnt == 0) {
+				// Check1. KG모빌리언스 호출아이피 체크
+				if (!getIsKgmServerIp(request)) {
+					System.out.println("#############################################################");
+					System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리");
+					
+					Resultcd = "9998";
+					Resultmsg = "NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리. KG모빌리언스 정상결제  여부 확인후, 고객님께 안내후 결제취소해주세요.";
+					
+			    	try {
+			    		// 법인폰 알람여부 체크
+			    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+			    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+			    		// SMS 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+			    			// 스미싱의심 SMS 알림전송
+			    			mjonNoticeSendUtil.smishingSmsNoticeSend("NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리", Userid, "");    		
+			    		}    		
+			    		
+			    		// SLACK 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+				    		// Slack 메시지 발송(단순본문)
+				    		String msg = "[문자온] " + Userid + "님 결제건 알림 => NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리했습니다. KG모빌리언스 에는 정상결제 됐을수 있습니다. https://cp.mcash.co.kr/mcht 에서 정상결제 확인후, 고객님께 안내후, 결제취소해주세요.";
+				    		mjonCommon.sendSimpleSlackMsg(msg);    		
+			    		}
+			    	} catch (Exception e) {
+						System.out.println("#############################################################");
+						System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리  => SMS, 슬랙 알림 오류");			    		
+			    	}
+				}
+				// 저장 Start 
+				// 사용자 정보
+		    	String mberNm = "";
+		    	String moblphonNo = "";
+		    	String mberEmailAdres = "";
+		    	MberManageVO mberManageVO = new MberManageVO();
+		    	mberManageVO.setMberId(Userid);
+		    	MberManageVO userInfo = userManageService.selectUserInfo(mberManageVO);
+		    	if (userInfo != null) {
+		    		mberNm = userInfo.getMberNm();
+		    		moblphonNo = userInfo.getMoblphonNo();
+		    		mberEmailAdres = userInfo.getMberEmailAdres();    		
+		    	}
+				
+		    	mjonPayVO.setResultCd(Resultcd);
+		    	mjonPayVO.setResultMsg(Resultmsg);
+		    	mjonPayVO.setAutoBillKey("");
+		    	mjonPayVO.setCashGb(CASH_GB);
+		    	mjonPayVO.setAutoYn("");
+		    	mjonPayVO.setCommId("");
+		    	mjonPayVO.setMobileId(Mobilid);
+		    	mjonPayVO.setMrchId(Mrchid);
+		    	mjonPayVO.setPno("");
+		    	mjonPayVO.setPrdtNm(Prdtnm);
+		    	mjonPayVO.setPrdtPrice(Prdtprice);
+		    	mjonPayVO.setSignDate(Signdate);
+		    	mjonPayVO.setSvcId(Svcid);
+		    	mjonPayVO.setTradeId(Tradeid);
+		    	mjonPayVO.setUserId(Userid);
+		    	mjonPayVO.setUserKey("");
+		    	mjonPayVO.setMcEzKey("");
+				
+		    	// 추가정보(mj_pg)
+		    	String pgStatus = "";
+		    	if("0000".equals(Resultcd)) {
+		    		pgStatus = "1";		// 1:결제완료
+		    	}else {
+		    		pgStatus = "4";		// 4.결제오류
+		    	}
+		    	mjonPayVO.setPgStatus(pgStatus);		// 결제 상태 - 0:입금대기, 1:결제완료, 4.결제오류, 9:취소완료
+		    	mjonPayVO.setRcptType("9");				// 현금영수증 유형-0:미발행, 1:소득공제, 2:지출증빙, 9:세금계산서[PG에 없는 값]
+		    	mjonPayVO.setResultCode(Resultcd); 
+		    	mjonPayVO.setResultMsg(Resultmsg); 
+		    	mjonPayVO.setAmt(Prdtprice);			// 결제금액
+		    	mjonPayVO.setPayMethod("BANK");			// 결제방법
+		    	mjonPayVO.setSpayMethod("");			// 간편결제 결제방법
+				mjonPayVO.setSpayDiv("");				// 간편결제분류
+				
+				mjonPayVO.setPgCode("KGM");				//
+				mjonPayVO.setGoodsName(Prdtnm);			//
+				mjonPayVO.setPhone("");					// 모바일
+				mjonPayVO.setMobile("");				// 모바일
+				mjonPayVO.setPayerEmail(Payeremail);
+				mjonPayVO.setTid(Tradeid);				// Tid
+				mjonPayVO.setMid(Svcid);				// Mid = Svcid
+				
+				// 회원정보
+		    	mjonPayVO.setBuyerName(mberNm);
+		    	mjonPayVO.setBuyerTel(moblphonNo);
+		    	mjonPayVO.setBuyerEmail(mberEmailAdres);
+		    	mjonPayVO.setEmail(mberEmailAdres);			// 이메일(회원정보)
+		    	
+		    	// 추가
+		    	mjonPayVO.setBankName(Banknm);				// 은행명
+				
+		    	
+				// 상점 주문번호 결제 완료  후 생성
+		    	mjonPayVO.setMoid(idgenPgMoid.getNextStringId()); 
+		    	
+		    	//세금 값 넣기
+				mjonPayVO = this.setKgmTexV2VO(mjonPayVO);
+		    	
+				//cash 값 넣기
+				mjonPayVO = this.setKgmCashVO(mjonPayVO);
+				
+				//point 값 넣기
+				mjonPayVO = this.setKgmPointVO(mjonPayVO);
+		    	
+		    	rtnMsg = "SUCCESS";
+			}
+		}catch(Exception e) {
+			rtnMsg = "FAIL";
+			
+			System.out.println("#############################################################");
+			System.out.println("KG MOBILIANS NotiUrl - BANK Tradeid : " + Tradeid);
+			System.out.println("KG MOBILIANS NotiUrl - BANK returnMsg : " + rtnMsg);
+			System.out.println("KG MOBILIANS NotiUrl - BANK e.getMessage() : " + e.getMessage());
+   		}	
+		
+		mjonPayVO.setRtnMsg(rtnMsg);
+		
+		return mjonPayVO;
+	}
+	
+	
+	public MjonKgmVO kgmMobileEncode(HttpServletRequest request
+			, String okUrl
+			, String notiurl) {
+		
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+		// Get Server Info
+		String kgmServerName = request.getServerName();
+		String kgmPath = "";
+		kgmPath = getKgServerPath(request);
+		
+		// Unique한 거래번호를 위한 값 추출 (밀리세컨드까지 조회)
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
+		String appr_dtm = dateFormat.format(new Date());
+		
+		/*****************************************************************************************/
+		String CASH_GB		= "MC";		//[   2byte 고정] 결제수단구분. "RA" 고정값. 수정불가!
+
+		/*****************************************************************************************
+		- 필수 입력 항목
+		*****************************************************************************************/
+		String MC_SVCID		= globalMcSvcid.trim();					//[  12byte 고정] 모빌리언스에서 부여한 서비스ID (12byte 숫자 형식)
+   		String PAY_MODE		= globalMcPayMode.trim();				//[   2byte 고정] 연동시 테스트/실결제 구분 (00: 테스트결제-비과금, 10: 실거래결제-과금)
+		String Prdtprice	= request.getParameter("Prdtprice");	//결제요청금액.
+		String Prdtnm		= "캐시충전";								//상품명 ( 50byte 이내 )
+		String Siteurl		= kgmServerName;						//가맹점도메인
+		String Tradeid		= MC_SVCID + "_" + appr_dtm + "_" + numberGen(6,1);	//[4byte 이상, 40byte 이하] 가맹점거래번호. 결제 요청 시 마다 unique한 값을 세팅해야 함. //해당 샘플에는 테스트를 위해 {가맹점 서비스ID + 요청일시} 형식으로 세팅하였음.
+		String Okurl 		= kgmPath + okUrl;		//성공화면처리URL : 결제완료통보페이지 full Url (예:http://www.mcash.co.kr/okurl.jsp )
+		String Notiurl		= kgmPath + notiurl;		//결제처리URL : 결제 완료 후, 가맹점측 과금 등 처리할 가맹점측 URL
+
+		/*****************************************************************************************
+		- 선택 입력 항목
+		*****************************************************************************************/
+		String Userid = userId;						//가맹점결제자ID
+		String Failurl			= "";	//[ 128byte 이하] 결제 실패 시 사용자에게 보여질 가맹점 측 실패 페이지. 결제처리에 대한 실패처리 안내를 가맹점에서 제어해야 할 경우만 사용.
+
+		
+		/*****************************************************************************************
+		- 암호화 처리 (암호화 사용 시)
+		Cryptstring 항목은 금액변조에 대한 확인용으로 반드시 아래와 같이 문자열을 생성하여야 합니다.
+
+		주) 암호화 스트링은 가맹점에서 전달하는 거래번호로 부터 추출되어 사용되므로
+		암호화에 이용한 거래번호가  변조되어 전달될 경우 복호화 실패로 결제 진행이 불가합니다.
+		*****************************************************************************************/
+		String Cryptyn		= "Y";	//Y: 암호화 사용, N: 암호화 미사용
+		String Cryptstring	= "";	//암호화 사용 시 암호화된 스트링
+
+		if ("Y".equals(Cryptyn)) {
+			Cryptstring	= Prdtprice + Okurl;	//금액변조확인 (결제요청금액 + Okurl)
+			Okurl		= McashCipher.encodeString(Okurl, Tradeid);
+			Failurl		= McashCipher.encodeString(Failurl, Tradeid);
+			Notiurl		= McashCipher.encodeString(Notiurl, Tradeid);
+			Prdtprice	= McashCipher.encodeString(Prdtprice, Tradeid);
+			Cryptstring	= McashCipher.encodeString(Cryptstring, Tradeid);
+		}
+			
+		MjonKgmVO mjonKgmVO = new MjonKgmVO();
+		// 필수
+		mjonKgmVO.setCash_gb(CASH_GB);
+		mjonKgmVO.setMc_svcid(MC_SVCID);
+		mjonKgmVO.setPay_mode(PAY_MODE);
+		mjonKgmVO.setPrdtnm(Prdtnm);
+		mjonKgmVO.setSiteurl(Siteurl);
+		mjonKgmVO.setTradeid(Tradeid);
+		
+		mjonKgmVO.setUserid(Userid);
+		mjonKgmVO.setOkurl(Okurl);
+		mjonKgmVO.setNotiurl(Notiurl);
+		mjonKgmVO.setPrdtprice(Prdtprice);
+		mjonKgmVO.setCryptstring(Cryptstring);
+		
+		return mjonKgmVO;
+	}
+	
+	public MjonPayVO kgmMobileNotiUrl(HttpServletResponse response
+			, HttpServletRequest request
+			) throws Exception {
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+    	
+		/*****************************************************************************************/
+		MjonPayVO mjonPayVO = new MjonPayVO();
+		String rtnMsg = "";
+		String CASH_GB		= "MC";					//[   2byte 고정] 결제수단구분. "MC" 고정값. 수정불가!
+    	String Svcid		= request.getParameter("Svcid"); 		/* 서비스아이디 */
+    	String Mobilid		= request.getParameter("Mobilid"); 		/* 모빌리언스 거래번호 */
+    	String Signdate		= request.getParameter("Signdate"); 	/* 결제일자 */
+    	String Tradeid		= request.getParameter("Tradeid"); 		/* 상점거래번호 */
+    	String Mrchid		= request.getParameter("Mrchid");		//[   8byte 고정] 상점ID
+    	String Prdtnm		= request.getParameter("Prdtnm"); 		/* 상품명 */
+    	String Prdtprice	= request.getParameter("Prdtprice");	/* 상품가격 */
+    	String Userid		= request.getParameter("Userid");		/* 사용자아이디*/
+    	String Resultcd		= request.getParameter("Resultcd");		/* 결과코드 */
+    	String Resultmsg	= request.getParameter("Resultmsg");	//[ 100byte 이하] 결과메세지
+    	String Payeremail	= request.getParameter("Payeremail");	/* 결제자 이메일 */
+ 
+    	String MSTR			= request.getParameter("MSTR");			//[2000byte 이하] 가맹점 전달 콜백변수
+    	String Commid		= request.getParameter("Commid");		//[   3byte 고정] 이통사
+    	String chkValue		= request.getParameter("chkValue");		/* 결과값 검증 hash데이터 */
+    	String AutoBillKey	= request.getParameter("AutoBillKey");	//[  15byte 이하] 자동결제 최초등록키
+    	String No			= request.getParameter("No");			//[  11byte 이하] 폰번호
+    	String USERKEY		= request.getParameter("USERKEY");		//[  15byte 이하] 휴대폰정보(이통사, 휴대폰번호, 주민번호) 대체용 USERKEY
+    	String MC_EZ_KEY	= request.getParameter("Ezkey");		//[  20byte 고정] 간소화결제 사용자키
+    	
+    	System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS NotiUrl - MOBILE Tradeid : " + Tradeid);
+		System.out.println("KG MOBILIANS NotiUrl - MOBILE getIsKgmServerIp : " + getIsKgmServerIp(request));	// Kgm Ip Check
+		try {
+			// Step 1. Tid로 존재여부 체크
+			int tidCnt = mjonPayService.selectPayCountByTid(Tradeid);
+			if (tidCnt > 0) {
+				// 저장된 데이터 있을경우
+				rtnMsg = "SUCCESS";	    
+				
+				System.out.println("#############################################################");
+				System.out.println("KG MOBILIANS NotiUrl - MOBILE Tradeid : " + Tradeid);
+				System.out.println("KG MOBILIANS NotiUrl - MOBILE returnMsg2 : " + rtnMsg);    					    			
+			}else if (tidCnt == 0) {
+				// Check1. KG모빌리언스 호출아이피 체크
+				if (!getIsKgmServerIp(request)) {
+					System.out.println("#############################################################");
+					System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리");
+					
+					Resultcd = "9998";
+					Resultmsg = "NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리. KG모빌리언스 정상결제  여부 확인후, 고객님께 안내후 결제취소해주세요.";
+					
+			    	try {
+			    		// 법인폰 알람여부 체크
+			    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+			    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+			    		// SMS 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+			    			// 스미싱의심 SMS 알림전송
+			    			mjonNoticeSendUtil.smishingSmsNoticeSend("NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리", Userid, "");    		
+			    		}    		
+			    		
+			    		// SLACK 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+				    		// Slack 메시지 발송(단순본문)
+				    		String msg = "[문자온] " + Userid + "님 결제건 알림 => NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리했습니다. KG모빌리언스 에는 정상결제 됐을수 있습니다. https://cp.mcash.co.kr/mcht 에서 정상결제 확인후, 고객님께 안내후, 결제취소해주세요.";
+				    		mjonCommon.sendSimpleSlackMsg(msg);    		
+			    		}
+			    	} catch (Exception e) {
+						System.out.println("#############################################################");
+						System.out.println("KG MOBILIANS NotiUrl - MOBILE : NotiUrl 호출 IP가 KG모빌리언스 결제서버군이 아니어서 결제오류 처리  => SMS, 슬랙 알림 오류");			    		
+			    	}
+				}
+				
+				// 저장 Start 
+		    	// 사용자 정보
+		    	String mberNm = "";
+		    	String moblphonNo = "";
+		    	String mberEmailAdres = "";
+		    	MberManageVO mberManageVO = new MberManageVO();
+		    	mberManageVO.setMberId(Userid);
+		    	MberManageVO userInfo = userManageService.selectUserInfo(mberManageVO);
+		    	if (userInfo != null) {
+		    		mberNm = userInfo.getMberNm();
+		    		moblphonNo = userInfo.getMoblphonNo();
+		    		mberEmailAdres = userInfo.getMberEmailAdres();    		
+		    	}
+				
+				mjonPayVO.setResultCd(Resultcd);
+		    	mjonPayVO.setResultMsg(Resultmsg);
+		    	mjonPayVO.setAutoBillKey(AutoBillKey);
+		    	mjonPayVO.setCashGb(CASH_GB);
+		    	mjonPayVO.setAutoYn("");
+		    	mjonPayVO.setCommId(Commid);
+		    	mjonPayVO.setMobileId(Mobilid);
+		    	mjonPayVO.setMrchId(Mrchid);
+		    	mjonPayVO.setPno(No);
+		    	mjonPayVO.setPrdtNm(Prdtnm);
+		    	mjonPayVO.setPrdtPrice(Prdtprice);
+		    	mjonPayVO.setSignDate(Signdate);
+		    	mjonPayVO.setSvcId(Svcid);
+		    	mjonPayVO.setTradeId(Tradeid);
+		    	mjonPayVO.setUserId(Userid);
+		    	mjonPayVO.setUserKey(USERKEY);
+		    	mjonPayVO.setMcEzKey(MC_EZ_KEY);
+		    	
+		    	// 추가정보(mj_pg)
+		    	String pgStatus = "";
+		    	if("0000".equals(Resultcd)) {
+		    		pgStatus = "1";		// 1:결제완료
+		    	}else {
+		    		pgStatus = "4";		// 4.결제오류
+		    	}
+		    	mjonPayVO.setPgStatus(pgStatus);		// 결제 상태 - 0:입금대기, 1:결제완료, 4.결제오류, 9:취소완료
+		    	mjonPayVO.setRcptType("9");				// 현금영수증 유형-0:미발행, 1:소득공제, 2:지출증빙, 9:세금계산서[PG에 없는 값]
+		    	mjonPayVO.setResultCode(Resultcd); 
+		    	mjonPayVO.setResultMsg(Resultmsg); 
+		    	mjonPayVO.setAmt(Prdtprice);			// 결제금액
+				mjonPayVO.setPayMethod("CELLPHONE");	// 결제방법
+				mjonPayVO.setSpayMethod("");			// 간편결제 결제방법
+				mjonPayVO.setSpayDiv("");				// 간편결제분류
+				
+				mjonPayVO.setPgCode("KGM");				//
+				mjonPayVO.setGoodsName(Prdtnm);			//
+				mjonPayVO.setPhone("");					// 모바일
+				mjonPayVO.setMobile("");				// 모바일
+				mjonPayVO.setPayerEmail(Payeremail);
+				mjonPayVO.setTid(Tradeid);				// Tid
+				mjonPayVO.setMid(Svcid);				// Mid = Svcid
+				
+				// 회원정보
+		    	mjonPayVO.setBuyerName(mberNm);
+		    	mjonPayVO.setBuyerTel(moblphonNo);
+		    	mjonPayVO.setBuyerEmail(mberEmailAdres);
+		    	mjonPayVO.setEmail(mberEmailAdres);			// 이메일(회원정보)
+		    	
+		    	// 상점 주문번호 결제 완료  후 생성
+		    	mjonPayVO.setMoid(idgenPgMoid.getNextStringId()); 
+		    	
+		    	//세금 값 넣기
+				mjonPayVO = this.setKgmTexV2VO(mjonPayVO);
+		    	
+				//cash 값 넣기
+				mjonPayVO = this.setKgmCashVO(mjonPayVO);
+				
+				//point 값 넣기
+				mjonPayVO = this.setKgmPointVO(mjonPayVO);
+		    	
+		    	rtnMsg = "SUCCESS";
+			}
+		}catch(Exception e) {
+			rtnMsg = "FAIL";
+			
+			System.out.println("#############################################################");
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE Tradeid : " + Tradeid);
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE returnMsg : " + rtnMsg);    	
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE e.getMessage() : " + e.getMessage());
+   		}
+		
+		mjonPayVO.setRtnMsg(rtnMsg);
+		
+    	return mjonPayVO;
+	}
+	
+	public String slackKgPay(MjonPayVO mjonPayVO) {
+		
+		String userId = mjonPayVO.getUserId();
+		String mberNm = mjonPayVO.getMberNm();
+		String tradeId = mjonPayVO.getTradeId();
+		String rtnMsg = "";
+		try {
+	    	// 휴대폰 15만원결제 => 법인폰 알림
+	    	if (mjonPayVO.getAmt().equals("165000")) {
+	    		// 법인폰 알람여부 체크
+	    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+	    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+	    		// SMS 체크
+	    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+	    			// 스미싱의심 SMS 알림전송
+	    			mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/휴대폰 15만원 결제", userId, mberNm);    		
+	    		}    		
+	    		
+	    		// SLACK 체크
+	    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+		    		// Slack 메시지 발송(단순본문)
+		    		String msg = "[문자온] 스미싱의심/휴대폰 15만원 결제 - " + mberNm +"("+ userId + ")";
+		    		mjonCommon.sendSimpleSlackMsg(msg);    		
+	    		}
+	    		
+	    		// 스미싱 의심회원으로 변경
+	    		UserManageVO userManageVO = new UserManageVO();
+	    		userManageVO.setSmishingYn("Y");
+	    		userManageVO.setMberId(userId);
+	    		userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
+	    	} else {
+	    		
+	    		String sandTxt = "";
+	    		if(mjonPayVO.getPayMethod().equals("CELLPHONE")) {
+	    			sandTxt = "스미싱의심/휴대폰 첫결제";
+	    		}else if(mjonPayVO.getPayMethod().equals("BANK")) {
+	    			sandTxt = "스미싱의심/즉시이체 첫결제";
+	    		}else if(mjonPayVO.getPayMethod().equals("SPAY")) {
+	    			sandTxt = "스미싱의심/간편결제 첫결제";
+	    		}
+	    		
+	    		// 대상 : 휴대폰결제, 즉시이체, 전용계좌
+	    		// Step 1. 스미싱의심 지정 여부
+	    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+	    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+	    		if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) {
+		    		// Step 1. 개인회원 여부 체크
+	    			int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(userId);
+		    		if (isPersnalMemberCnt == 1) {
+		    			// Step 2. 첫결제 여부 체크
+		    			int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(userId);
+		    			if (isFirstPayCnt == 1) {
+				    		// SMS 체크
+				    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+				    			// 스미싱의심 SMS 알림전송
+				    			mjonNoticeSendUtil.smishingSmsNoticeSend(sandTxt, userId, mberNm);    		
+				    		}    								    		
+		    				
+		    				// SLACK 체크
+				    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+					    		// Slack 메시지 발송(단순본문)
+					    		String msg = "[문자온] "+sandTxt+" - " + mberNm +"("+ userId + ")";
+					    		mjonCommon.sendSimpleSlackMsg(msg);    		
+				    		}
+				    		
+				    		// 스미싱 의심회원으로 변경
+				    		UserManageVO userManageVO = new UserManageVO();
+				    		userManageVO.setSmishingYn("Y");
+				    		userManageVO.setMberId(userId);
+				    		userManageService.updateOneUserSmishingYnNotAlert(userManageVO);				    				
+		    			}
+		    		}
+	    		}			    		
+	    	}
+    	}catch (Exception e) {
+			System.out.println("#############################################################");
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE 슬랙알림 & 스미싱의심 처리 Error");
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE Tradeid : " + tradeId);
+			System.out.println("KG MOBILIANS NotiUrl - MOBILE e.getMessage() : " + e.getMessage());		    		
+    	}
+		
+		System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS NotiUrl - MOBILE Tradeid : " + tradeId);
+		System.out.println("KG MOBILIANS NotiUrl - MOBILE returnMsg : " + rtnMsg);
+		return rtnMsg;
+	}
+	
+	
+	// Get Server Path
+   	public static String getKgServerPath(HttpServletRequest request) {
+		String kgmPath = request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort();
+		if (request.getServerPort() == 80) {
+			kgmPath = request.getScheme() + "://" + request.getServerName();
+		}    
+
+		// 테스트서버 정보 변환
+  		if(kgmPath.indexOf("192.168.0.125") > -1){
+  			kgmPath = "https://test.munjaon.co.kr:9998";
+    	}		
+		
+		System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS kgServerPath : " + kgmPath);
+		
+   	    return kgmPath;
+   	}
+   	
+   	/**
+     * 전달된 파라미터에 맞게 난수를 생성한다
+     * @param len : 생성할 난수의 길이
+     * @param dupCd : 중복 허용 여부 (1: 중복허용, 2:중복제거)
+     */
+    public static String numberGen(int len, int dupCd ) {
+        Random rand = new Random();
+        String numStr = ""; //난수가 저장될 변수
+        
+        for(int i=0;i<len;i++) {
+            
+            //0~9 까지 난수 생성
+            String ran = Integer.toString(rand.nextInt(10));
+            
+            if(dupCd==1) {
+                //중복 허용시 numStr에 append
+                numStr += ran;
+            }else if(dupCd==2) {
+                //중복을 허용하지 않을시 중복된 값이 있는지 검사한다
+                if(!numStr.contains(ran)) {
+                    //중복된 값이 없으면 numStr에 append
+                    numStr += ran;
+                }else {
+                    //생성된 난수가 중복되면 루틴을 다시 실행한다
+                    i-=1;
+                }
+            }
+        }
+        return numStr;
+    }
+    
+    // Kgm Ip Check
+   	public static boolean getIsKgmServerIp(HttpServletRequest request) {
+   		boolean rtnVal = false;
+   		
+   		String[] kgmServerIpArray = {
+   				"175.158.12.133"
+   				, "175.158.12.140"
+   				, "175.158.12.1"
+   				, "116.127.121.151"
+   				, "218.50.55.107"
+   				, "116.127.121.132"};
+		
+   		// List 로 변환
+		List<String> strList = new ArrayList<>(Arrays.asList(kgmServerIpArray));
+		
+		// List Contains
+		if(strList.contains(getClientIP(request))) {
+			rtnVal = true;	// 해당아이피 strArray에 존재
+		}
+		
+		return rtnVal;
+   	}
+   	
+   	// Get Ip
+   	public static String getClientIP(HttpServletRequest request) {
+   	    String ip = request.getHeader("X-Forwarded-For") == null ? request.getHeader("X-Forwarded-For") : request.getHeader("X-Forwarded-For").replaceAll("10.12.107.11", "").replaceAll(",", "").trim();
+   	    String ipMethod = "X-Forwarded-For";
+   	    
+   	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+   	        ip = request.getHeader("Proxy-Client-IP");
+   	        ipMethod = "Proxy-Client-IP";
+   	    }
+   	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+   	        ip = request.getHeader("WL-Proxy-Client-IP");
+   	        ipMethod = "WL-Proxy-Client-IP";
+   	    }
+   	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+   	        ip = request.getHeader("HTTP_CLIENT_IP");
+   	        ipMethod = "HTTP_CLIENT_IP";
+   	    }
+   	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+   	        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+   	        ipMethod = "HTTP_X_FORWARDED_FOR";
+   	    }
+   	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+   	        ip = request.getRemoteAddr();
+   	        ipMethod = "getRemoteAddr";
+   	    }
+   	 
+		System.out.println("#############################################################");
+		System.out.println("KG MOBILIANS NotiUrl - getClientIP : " + ipMethod);
+		System.out.println("KG MOBILIANS NotiUrl - getClientIP : " + ip);
+		
+   	    return ip;
+   	}
+   	
+   	/**
+	 * @param mjonPayVO
+	 * @return
+	 * @throws Exception
+	 * tex 값 넣기
+	 */
+	private MjonPayVO setKgmTexV2VO(MjonPayVO mjonPayVO) throws Exception{
+		 
+		//PG Tax테이블  변수 생성
+		mjonPayVO.setRcptType("9"); //PG결제는 세금계산서 '발행유형-[PG결제-현금영수증 유형과 동일] 1:소득공제, 2:지출증빙, 9:세금계산서', (확인필요)
+		
+		mjonPayVO.setRegNo(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setMobile(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setPhone(mjonPayVO.getBuyerTel()); //연락처
+		mjonPayVO.setEmail(mjonPayVO.getBuyerEmail()); //이메일
+		mjonPayVO.setRepName(mjonPayVO.getBuyerName());  //'대표자명',
+		mjonPayVO.setConfirmYn("Y"); //'완료여부',
+		
+		return mjonPayVO;
+	}
+	
+	/**
+	 * @param mjonPayVO
+	 * @return
+	 * @throws Exception
+	 * cash table 값 넣기
+	 * 2022.04.12 JSP => mjonPayVO.getMoid() => userId 사용 제거 (휴대폰결제에서만 사용)
+	 */
+	private MjonPayVO setKgmCashVO(MjonPayVO mjonPayVO) throws Exception{
+		String amt = mjonPayVO.getAmt();
+		// 부가세별도 충전금액
+		amt = setCashVatNotIncluded(amt);
+		 
+		//캐쉬 테이블 변수 생성
+		mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()) ;
+		mjonPayVO.setPointId(idgenMjonPointId.getNextStringId()) ;
+		mjonPayVO.setCash(Float.parseFloat(amt)); //'사용 캐쉬-양수:지급, 음수:소모',
+		mjonPayVO.setOrderId(mjonPayVO.getMoid());  //'주문번호-주문번호가 없으면 관리자 임의 지급',
+		mjonPayVO.setUserId(mjonPayVO.getUserId());
+		mjonPayVO.setFrstRegisterId(mjonPayVO.getUserId());
+		String s_paymethod = mjonPayVO.getPayMethod();
+		String spaydiv = mjonPayVO.getSpayDiv();
+		
+		if(s_paymethod.equals("CARD")){
+			s_paymethod = "신용카드" ; // 신용카드(정상 결과코드:3001)       	
+		}else if(s_paymethod.equals("SPAY")){
+			s_paymethod = "간편결제" ; // 간편결제
+			if(spaydiv.equals("NAV")){
+				s_paymethod = "간편결제(네이버페이)" ;
+			}
+			else if(spaydiv.equals("KKO")){
+				s_paymethod = "간편결제(카카오페이)" ;
+			}
+			else if(spaydiv.equals("TOS")){
+				s_paymethod = "간편결제(토스페이)" ;
+			}
+			else if(spaydiv.equals("PYC")){
+				s_paymethod = "간편결제(페이코)" ;
+			}
+		}else if(s_paymethod.equals("BANK")){
+			s_paymethod = "계좌이체" ; // 계좌이체(정상 결과코드:4000)	
+		}else if(s_paymethod.equals("CELLPHONE")){
+			s_paymethod = "휴대폰" ; // 휴대폰(정상 결과코드:A000)	 
+		}else if(s_paymethod.equals("VBANK")){
+			s_paymethod = "가상계좌" ; // 가상계좌(정상 결과코드:4100)
+		}else if(s_paymethod.equals("SSG_BANK")){
+			s_paymethod = "SSG은행계좌" ; // SSG은행계좌(정상 결과코드:0000)
+		}else if(s_paymethod.equals("CMS_BANK")){
+			s_paymethod = "계좌간편결제" ; // 계좌간편결제(정상 결과코드:0000)
+		}else {
+			s_paymethod = "";
+		}
+		
+		String memo = s_paymethod + " " + amt + "원 충전" ;
+		mjonPayVO.setMemo(memo); //캐쉬메모
+		
+		return mjonPayVO;
+	}
+	
+	/**
+	 * @param mjonPayVO
+	 * @return
+	 * @throws Exception
+	 * point table 값 넣기
+	 */
+	private MjonPayVO setKgmPointVO(MjonPayVO mjonPayVO) throws Exception{
+			
+			String s_paymethod = mjonPayVO.getPayMethod();
+			String spaydiv = mjonPayVO.getSpayDiv();
+			
+			if(s_paymethod.equals("CARD")){
+				s_paymethod = "신용카드" ; // 신용카드(정상 결과코드:3001)       	
+			}else if(s_paymethod.equals("SPAY")){
+				s_paymethod = "간편결제" ; // 간편결제	
+				if(spaydiv.equals("NAV")){
+					s_paymethod = "간편결제(네이버페이)" ;
+				}
+				else if(spaydiv.equals("KKO")){
+					s_paymethod = "간편결제(카카오페이)" ;
+				}
+				else if(spaydiv.equals("TOS")){
+					s_paymethod = "간편결제(토스페이)" ;
+				}
+				else if(spaydiv.equals("PYC")){
+					s_paymethod = "간편결제(페이코)" ;
+				}				
+			}else if(s_paymethod.equals("BANK")){
+				s_paymethod = "계좌이체" ; // 계좌이체(정상 결과코드:4000)	
+			}else if(s_paymethod.equals("CELLPHONE")){
+				s_paymethod = "휴대폰" ; // 휴대폰(정상 결과코드:A000)	 
+			}else if(s_paymethod.equals("VBANK")){
+				s_paymethod = "가상계좌" ; // 가상계좌(정상 결과코드:4100)
+			}else if(s_paymethod.equals("SSG_BANK")){
+				s_paymethod = "SSG은행계좌" ; // SSG은행계좌(정상 결과코드:0000)
+			}else if(s_paymethod.equals("CMS_BANK")){
+				s_paymethod = "계좌간편결제" ; // 계좌간편결제(정상 결과코드:0000)
+			}else {
+				s_paymethod = "";
+			}			
+			
+			String s_amt = mjonPayVO.getAmt();
+			// 부가세별도 충전금액
+			s_amt = setCashVatNotIncluded(s_amt);
+			
+			//포인트 테이블 변수설정
+			JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();			
+			//int point = Math.round( (Float.parseFloat(s_amt)*2/100) ) ;
+			float p_i_re_point = 0; 
+			if (sysJoinSetVO != null) {
+				p_i_re_point = sysJoinSetVO.getPointPer();
+			}
+			int point = Math.round((Float.parseFloat(s_amt)*p_i_re_point/100)) ;
+			
+			mjonPayVO.setPoint(point);
+			
+			String pointMemo = s_paymethod; //포인트 메모
+			pointMemo = pointMemo + " " + point + " 충전" ;
+
+			mjonPayVO.setPointMemo(pointMemo);
+		
+		return mjonPayVO;
+	}
+	
+	// 부가세별도 충전금액
+	private String setCashVatNotIncluded(String val) {
+		String rtnVal = "";
+		
+		// 공급대가 = 공급가액(공급대가/11*10) + 부가세(공급대가/11)
+		// 11000 = (11000/11*10 ) + 11000/11
+		// 공급가액 계산로직
+		rtnVal = Math.round(Float.parseFloat(val) / 11 * 10) + "";
+		
+		return rtnVal;
+	}
+}
 
src/main/java/itn/com/cmm/util/MjonPayUtil.java (added)
+++ src/main/java/itn/com/cmm/util/MjonPayUtil.java
@@ -0,0 +1,231 @@
+package itn.com.cmm.util;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Component;
+
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.LoginVO;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.mjo.event.service.MjonEventVO;
+import itn.let.mjo.event.service.impl.MjonEventDAO;
+import itn.let.mjo.pay.service.MjonPayVO;
+import itn.let.mjo.pay.service.impl.MjonPayDAO;
+import itn.let.mjo.tax.service.TaxVO;
+import itn.let.mjo.tax.service.impl.TaxDAO;
+import itn.let.sym.grd.service.MberGrdService;
+import itn.let.sym.grd.service.MberGrdVO;
+import itn.let.uat.uia.service.impl.MberManageDAO;
+import itn.let.uss.umt.service.MberManageVO;
+
+@Component("mjonPayUtil")
+public class MjonPayUtil {
+	
+	@Resource(name="MjonEventDAO")
+	private MjonEventDAO mjonEventDAO;
+	
+	@Resource(name="mberManageDAO")
+	private MberManageDAO mberManageDAO;
+	
+	@Resource(name="mjonPayDAO")
+	private MjonPayDAO mjonPayDAO;
+
+	@Resource(name="taxDAO")
+	private TaxDAO taxDAO;
+	
+	/* 등급제 */
+	@Resource(name = "mberGrdService")
+	MberGrdService mberGrdService;
+	
+	/**
+	 * @param mjonPayVO
+	 * @throws Exception
+	 */
+	public void insertPayUtil(MjonPayVO mjonPayVO) throws Exception {
+		
+		
+		if("anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) {
+			
+        }else {
+        	// 기존 mjonPayVO의 userId 값에 moid 값이 들어가게 되어서 세션에서 아이디를 받아와서 다시 입력하도록 수정함 20220330 우영두
+        	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+        	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+        	String buyerName = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getName());
+        	String email = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getEmail());
+        	String mobile = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getMoblphonNo());
+        	mjonPayVO.setUserId(userId);
+        	mjonPayVO.setFrstRegisterId(userId);
+        	mjonPayVO.setBuyerName(buyerName);
+        	mjonPayVO.setEmail(email);
+        	mjonPayVO.setPhone(mobile);
+        	mjonPayVO.setMobile(mobile);
+        }
+		
+		
+		
+		//PG, PGTXT, CASH , 포인트 insert / 회원정보 캐시,포인트 update
+		mjonPayDAO.insertMjPg(mjonPayVO); 
+		
+		//세금계산서,현금영수증 자동발행 체크 / 자동발행 'N'이며 10만원 이상 결제시 현금영수증 의무발행
+		MberManageVO mberManageVO = mberManageDAO.selectMber(mjonPayVO.getUserId()); //멤버ID에서 유니크ID로 수정 필요
+		
+		// 세금계산서 자동발행이고,카드결제가 아닐경우에만 자동발행
+		if(("B".equals(mberManageVO.getTaxbillAuto()) || "C".equals(mberManageVO.getTaxbillAuto())) && !"CARD".equals(mjonPayVO.getPayMethod())) {
+			TaxVO taxVO = new TaxVO();
+			
+			/*발행타입 1:소득공제 현금영수증 2:지출증빙 현금영수증 9:세금계산서*/
+			String rcptType;
+			String regNo="";
+			
+			if("B".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 기업 자동발행
+				rcptType = "9";
+				taxVO.setTaxTrgt("B");
+				
+				regNo = mberManageVO.getTaxBizNo(); //사업자등록번호
+				
+				taxVO.setCompanyName(mberManageVO.getTaxBzNm());//회사명
+				taxVO.setRepName(mberManageVO.getTaxChrmNm());//대표자명
+				taxVO.setAddr(mberManageVO.getTaxAddr());//세금계산서 주소
+				
+			}else if("C".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 개인 자동발행
+				rcptType = "9";
+				taxVO.setTaxTrgt("C");
+				regNo = mberManageVO.getTaxCIhidNum(); // 세금계산서 개인 주민등록번호
+				taxVO.setRepName(mberManageVO.getTaxCNm()); //세금계산서 개인 성명
+				taxVO.setAddr(mberManageVO.getTaxCAddr()); //세금계산서 개인 주소
+				
+			} else { //현금영수증 자동발행
+				rcptType = mberManageVO.getCashbillType();
+			}
+			taxVO.setMoid(mjonPayVO.getMoid()); //주문ID
+			taxVO.setRcptType(rcptType);//발행타입
+			/*발행번호 개인세금계산서:주민등록번호 / 기업세금계산서:사업자번호 / 소득공제현금영수증:휴대폰번호 / 지출증빙현금영수증:사업자번호*/
+			taxVO.setRegNo(regNo);
+			taxVO.setEmail(mberManageVO.getTaxMngEmail());//담당자이메일
+			taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());//담당자 휴대폰번호
+			taxVO.setConfirmYn("N"); //완료여부
+			taxVO.setFrstRegisterId(mberManageVO.getMberId());
+
+			// JSPark 2022.07.01 => 휴대폰결제는 MJ_TAX 테이블에 인서트 안함
+			if(!"CELLPHONE".equals(mjonPayVO.getPayMethod())) {
+				taxDAO.insertCashBill(taxVO);
+			}
+		}
+		//세금계산서 자동발행 설정이 아니면서, 결제금액이 10만원 이상인 경우 현금영수증 의무발행 데이터 등록 필요
+		if("N".equals(mberManageVO.getTaxbillAuto()) && Integer.parseInt(mjonPayVO.getAmt()) >= 100000 && !"CARD".equals(mjonPayVO.getPayMethod())) {
+			//결제금액이 10만원 넘는 경우 : 현금영수증 의무발행 요청 등록
+			TaxVO taxVO = new TaxVO();
+			
+			taxVO.setRcptType("3");//발행타입 : 3, 의무발행
+			taxVO.setMoid(mjonPayVO.getMoid());
+			taxVO.setRegNo("0100001234");	//의무발행번호
+			taxVO.setEmail(mberManageVO.getTaxMngEmail());//담당자이메일
+			taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());//담당자 휴대폰번호
+			taxVO.setConfirmYn("N"); //완료여부
+			taxVO.setFrstRegisterId(mberManageVO.getMberId());
+
+			// JSPark 2022.07.01 => 휴대폰결제는 MJ_TAX 테이블에 인서트 안함
+			if(!"CELLPHONE".equals(mjonPayVO.getPayMethod())) {
+				taxDAO.insertCashBill(taxVO);
+			}
+		}
+		
+		//CASH 테이블
+		mjonPayDAO.insertCash(mjonPayVO);  
+
+		//회원정보 CASH 업데이트
+		mjonPayDAO.updateMemberCash(mjonPayVO);
+		
+		// 회원별 등급 적용
+		MberGrdVO mberGrdVO = new MberGrdVO();
+		mberGrdVO.setMberId(mjonPayVO.getUserId());
+    	mberGrdVO.setAmt(mjonPayVO.getAmt());
+    	mberGrdVO.setMoid(mjonPayVO.getMoid());
+   		mberGrdService.mberGrdSaveByUser(mberGrdVO);
+	}
+	
+	/**
+	 * 일반 포인트 등록 Utile
+	 * @param mjonPayVO
+	 * @throws Exception
+	 */
+	public void updatePointUtile(MjonPayVO mjonPayVO) throws Exception {
+		mjonPayDAO.insertPoint(mjonPayVO);  //POINT 테이블
+		mjonPayDAO.updateMemberPoint(mjonPayVO); //회원정보 업데이트
+	}
+	
+	
+	/**
+	 * 첫 결제 이벤트 포인트 등록 Utile
+	 * @param mjonPayVO
+	 * @throws Exception
+	 */
+	public void updateFirstEventPointUtile(MjonPayVO mjonPayVO) throws Exception {
+		
+		/**
+		 * 이벤트 페이지에서 넘어온 경우에만 이벤트 결제로 취급
+		 * 이벤트 대상자인 경우 이벤트 회원 정보에 결제 금액 및 이벤트 시작일/종료일, 상태값 변경
+		 * 
+		 * */
+		
+		int payCash = (int) mjonPayVO.getCash();
+		int limitCash = 500000; //이벤트 참여 최대 금액 50만원으로 설정
+		
+		//이벤트 대상자인 경우에는 포인트를 무조건 지급하지 않는다.
+		//차후에 민원이 제가되면 해당 민원인만 관리자가 포인트를 별도 지급하도록 하기로 함.
+		mjonPayVO.setPoint(0);
+		mjonPayVO.setPointMemo("첫 결제 이벤트로 인한 포인트 미지급 0원으로 지급처리함.");
+		mjonPayDAO.insertPoint(mjonPayVO);  //POINT 테이블
+		mjonPayDAO.updateMemberPoint(mjonPayVO); //회원정보 업데이트
+		
+		if(payCash >= limitCash) {
+			//결제금액이 50만원을 넘었기 때문에 50만원만 이벤트 캐시로 충전한다.
+			//포인트는 미지급 한다.
+			payCash = 500000;
+		}
+		
+		//이벤트 회원 테이블 정보 업데이트
+		int resultCnt = updateEventMberInfo(mjonPayVO, payCash);
+		System.out.println(resultCnt);
+		
+	}
+	
+	/**
+	 * 첫 결제 이벤트 회원 테이블 정보 업데이트
+	 * 이벤트 시작일, 종료일, 상태정보, 결제 금액, 잔여금액 등 정보 업데이트
+	 * 
+	 * */
+	public int updateEventMberInfo(MjonPayVO mjonPayVO, int payCash) throws Exception {
+		
+		int resultCnt = 0;
+		try {
+			
+			//이벤트 회원 정보 업데이트
+			MjonEventVO updtEventVO = new MjonEventVO();
+			updtEventVO.setMberId(mjonPayVO.getUserId());
+			updtEventVO.setEventFrstCash(payCash);		//결제 Cash(부가세 뺀 금액)
+			updtEventVO.setEventRemainCash(payCash);	//초기 금액을 결제 Cash(부가세 뺀 금액)로 설정
+			updtEventVO.setEventPgMoid(mjonPayVO.getMoid()); //결제 Moid 번호
+			
+			/**
+			 * 이벤트 시작일 및 종료일 셋팅
+			 * 현재일로 부터 2개월 설정
+			 * DB -> datetime
+			 * 
+			 * */
+			
+			String nowDate = MJUtil.getRealTime();
+			String eventEndDate = MJUtil.getAfterTimerMonth(2);
+			
+			updtEventVO.setEventStartDate(nowDate);//이벤트 시작일자 설정
+			updtEventVO.setEventEndDate(eventEndDate);//이벤트 종료일자 설정
+			updtEventVO.setEventStatus("Y");//이벤트 상태를 진행 중으로 변경
+			
+			resultCnt = mjonEventDAO.updateEventMberStatusInfo(updtEventVO);
+			
+		} catch (Exception e) {
+			System.out.println("+++++++++++++ updateEventMberInfo ServiceImple Error !!! "+e);
+		}
+		return resultCnt;
+	}
+}
 
src/main/java/itn/com/cmm/util/NicePayUtil.java (added)
+++ src/main/java/itn/com/cmm/util/NicePayUtil.java
@@ -0,0 +1,515 @@
+package itn.com.cmm.util;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.MessageDigest;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Hex;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.springframework.stereotype.Component;
+
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.LoginVO;
+import itn.com.cmm.util.MJUtil;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.mjo.event.service.MjonEventVO;
+import itn.let.mjo.event.service.impl.MjonEventDAO;
+import itn.let.mjo.msgdata.service.MjonMsgDataService;
+import itn.let.mjo.pay.service.MjonPayVO;
+import itn.let.mjo.pay.service.impl.MjonPayDAO;
+import itn.let.mjo.tax.service.TaxVO;
+import itn.let.mjo.tax.service.impl.TaxDAO;
+import itn.let.sym.site.service.JoinSettingVO;
+import itn.let.uat.uia.service.impl.MberManageDAO;
+import itn.let.uss.umt.service.MberManageVO;
+
+@Component("nicePayUtil")
+public class NicePayUtil {
+	
+	@Resource(name = "egovMjonCashIdGnrService")
+    private EgovIdGnrService idgenMjonCashId;
+	
+	@Resource(name = "egovMjonPointIdGnrService")
+    private EgovIdGnrService idgenMjonPointId;
+	
+	@Resource(name = "MjonMsgDataService")
+    private MjonMsgDataService mjonMsgDataService;
+	
+	/**
+	 * @param mjonPayVO
+	 * @param request
+	 * @return
+	 * @throws Exception
+	 * //nicepay 정상 결제 여부 확인
+	 */
+	public boolean pgAuth(MjonPayVO mjonPayVO , HttpServletRequest request) throws Exception {
+		
+		//Pg 결제 정상여부 체크
+		boolean paySuccess = false;
+		
+		/*
+		****************************************************************************************
+		* <인증 결과 파라미터>
+		****************************************************************************************
+		*/
+		String authResultCode 	= (String)request.getParameter("AuthResultCode"); 	// 인증결과 : 0000(성공)
+		String authResultMsg 	= (String)request.getParameter("AuthResultMsg"); 	// 인증결과 메시지
+		String nextAppURL 		= (String)request.getParameter("NextAppURL"); 		// 승인 요청 URL
+		String txTid 			= (String)request.getParameter("TxTid"); 			// 거래 ID
+		String authToken 		= (String)request.getParameter("AuthToken"); 		// 인증 TOKEN
+		String payMethod 		= (String)request.getParameter("PayMethod"); 		// 결제수단
+		String mid 				= (String)request.getParameter("MID"); 				// 상점 아이디
+		String moid 			= (String)request.getParameter("Moid"); 			// 상점 주문번호
+		String amt 				= (String)request.getParameter("Amt"); 				// 결제 금액
+		String reqReserved 		= (String)request.getParameter("ReqReserved"); 		// 상점 예약필드
+		String netCancelURL 	= (String)request.getParameter("NetCancelURL"); 	// 망취소 요청 URL
+		/*
+		****************************************************************************************
+		* <승인 결과 파라미터 정의>
+		* 샘플페이지에서는 승인 결과 파라미터 중 일부만 예시되어 있으며, 
+		* 추가적으로 사용하실 파라미터는 연동메뉴얼을 참고하세요.
+		****************************************************************************************
+		*/
+		String ResultCode 	= ""; String ResultMsg 	= ""; String PayMethod 	= "";
+		String GoodsName 	= ""; String Amt 		= ""; String TID 		= "";
+		String cardCode		= ""; 		// 결제카드사코드
+		String cardName		= ""; 		// 결제카드사명
+		String bankCode		= "";		// 결제은행코드
+		String bankName		= "";		// 결제은행명
+		
+		/*
+		****************************************************************************************
+		* <인증 결과 성공시 승인 진행>
+		****************************************************************************************
+		*/
+		
+		String resultJsonStr = "";
+		if(authResultCode.equals("0000")){
+			/*
+			****************************************************************************************
+			* <해쉬암호화> (수정하지 마세요)
+			* SHA-256 해쉬암호화는 거래 위변조를 막기위한 방법입니다. 
+			****************************************************************************************
+			*/
+			DataEncrypt sha256Enc 	= new DataEncrypt();
+			String merchantKey 		= "7wnkxZbHvIA7FoCc6jF8IcXU+Wd3sn5BcMHuWJROe53AjRKnC6CistVdVZwrUKCCdaF+dAx230bwHSQ/E29RWA=="; // 운영상점키
+			//String merchantKey 		= "EYzu8jGGMfqaDEp76gSckuvnaHHu+bC4opsSN6lHv3b2lurNYkVXrZ7Z1AoqQnXI3eLuaUFyoRNC6FkrzVjceg=="; // 테스트 상점키
+			String ediDate			= getyyyyMMddHHmmss();
+			String signData 		= sha256Enc.encrypt(authToken + mid + amt + ediDate + merchantKey);
+			
+			/*
+			****************************************************************************************
+			* <승인 요청>
+			* 승인에 필요한 데이터 생성 후 server to server 통신을 통해 승인 처리 합니다.
+			****************************************************************************************
+			*/
+			StringBuffer requestData = new StringBuffer();
+			requestData.append("TID=").append(txTid).append("&");
+			requestData.append("AuthToken=").append(authToken).append("&");
+			requestData.append("MID=").append(mid).append("&");
+			requestData.append("Amt=").append(amt).append("&");
+			requestData.append("EdiDate=").append(ediDate).append("&");
+			requestData.append("SignData=").append(signData);
+
+			try {
+				resultJsonStr = connectToServer(requestData.toString(), nextAppURL);
+			} catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+			HashMap resultData = new HashMap();
+			
+			if("9999".equals(resultJsonStr)){
+				/*
+				*************************************************************************************
+				* <망취소 요청>
+				* 승인 통신중에 Exception 발생시 망취소 처리를 권고합니다.
+				*************************************************************************************
+				*/
+				StringBuffer netCancelData = new StringBuffer();
+				requestData.append("&").append("NetCancel=").append("1");
+				String cancelResultJsonStr = connectToServer(requestData.toString(), netCancelURL);
+				
+				HashMap cancelResultData = jsonStringToHashMap(cancelResultJsonStr);
+				ResultCode = (String)cancelResultData.get("ResultCode");
+				ResultMsg = (String)cancelResultData.get("ResultMsg");
+			}else{
+				resultData = jsonStringToHashMap(resultJsonStr);
+				ResultCode 	= (String)resultData.get("ResultCode");	// 결과코드 (정상 결과코드:3001)
+				ResultMsg 	= (String)resultData.get("ResultMsg");	// 결과메시지
+				PayMethod 	= (String)resultData.get("PayMethod");	// 결제수단
+				GoodsName   = (String)resultData.get("GoodsName");	// 상품명
+				Amt       	= (String)resultData.get("Amt");		// 결제 금액
+				TID       	= (String)resultData.get("TID");		// 거래번호
+				cardCode	= (String)resultData.get("CardCode"); 	// 결제카드사코드
+				cardName	= (String)resultData.get("CardName"); 	// 결제카드사명
+				bankCode	= (String)resultData.get("BankCode"); 	// 결제은행코드
+				bankName	= (String)resultData.get("BankName"); 	// 결제은행명
+				/*
+				*************************************************************************************
+				* <결제 성공 여부 확인>
+				*************************************************************************************
+				*/
+				if(PayMethod != null){
+					if(PayMethod.equals("CARD")){
+						if(ResultCode.equals("3001")) paySuccess = true; // 신용카드(정상 결과코드:3001)       	
+					}else if(PayMethod.equals("BANK")){
+						if(ResultCode.equals("4000")) paySuccess = true; // 계좌이체(정상 결과코드:4000)	
+					}else if(PayMethod.equals("CELLPHONE")){
+						if(ResultCode.equals("A000")) paySuccess = true; // 휴대폰(정상 결과코드:A000)	
+					}else if(PayMethod.equals("VBANK")){
+						if(ResultCode.equals("4100")) paySuccess = true; // 가상계좌(정상 결과코드:4100)
+					}else if(PayMethod.equals("SSG_BANK")){
+						if(ResultCode.equals("0000")) paySuccess = true; // SSG은행계좌(정상 결과코드:0000)
+					}else if(PayMethod.equals("CMS_BANK")){
+						if(ResultCode.equals("0000")) paySuccess = true; // 계좌간편결제(정상 결과코드:0000)
+					}
+				}
+			}
+		}else{
+			ResultCode 	= authResultCode; 	
+			ResultMsg 	= authResultMsg;
+		}
+		
+		//PG테이블 변수설정  오류시에도 PG테이블에 값 insert 
+		mjonPayVO.setPgStatus("4"); //결제오류
+		mjonPayVO.setResultCode(authResultCode);
+		mjonPayVO.setResultMsg(ResultMsg); //'결과메시지',
+		mjonPayVO.setTid(txTid); // 거래 ID
+		mjonPayVO.setPayMethod(payMethod); // 결제수단
+		mjonPayVO.setMid(mid);  // 상점 아이디
+		mjonPayVO.setAmt(amt); // 결제 금액
+		mjonPayVO.setPgCode("INNOPAY"); //이노페이(강제세팅)
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+//    	userId = mjonPayVO.getMoid() ;  //테스트시 화면에서 전송한 고객사 ID
+//    	mjonPayVO.setMoid(idgenPgMoid.getNextStringId()); // 상점 주문번호 결제 완료  후 생성 
+    	mjonPayVO.setRegNo(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setMobile(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setPhone(mjonPayVO.getBuyerTel()); //연락처
+		mjonPayVO.setEmail(mjonPayVO.getBuyerEmail()); //이메일
+		mjonPayVO.setRepName(mjonPayVO.getBuyerName());  //'대표자명',
+		mjonPayVO.setConfirmYn("N"); //'완료여부',
+		mjonPayVO.setUserId(userId);
+		mjonPayVO.setFrstRegisterId(userId);
+		mjonPayVO.setCardCode(cardCode);	//결제카드사코드
+		mjonPayVO.setCardName(cardName);	//결제카드사명 
+		mjonPayVO.setBankCode(bankCode);	//결제은행코드
+		mjonPayVO.setBankName(bankName);	//결제은행사명
+		
+		if(!paySuccess) {
+			return false;
+		}
+		
+		//PG테이블 변수 설정--------------------------------------------------------------------------------
+		if("0000".equals(authResultCode)) { // 인증결과 : 0000(성공)
+			mjonPayVO.setPgStatus("1"); //'결제 상태 - 0:입금대기, 1:결제완료, 4:결제오류, 9:취소완료'
+			mjonPayVO.setResultCode(authResultCode); //결과코드
+		}
+		
+		return paySuccess ;
+	}
+	
+	//server to server 통신
+	public String connectToServer(String data, String reqUrl) throws Exception{
+		HttpURLConnection conn 		= null;
+		BufferedReader resultReader = null;
+		PrintWriter pw 				= null;
+		URL url 					= null;
+		
+		int statusCode = 0;
+		StringBuffer recvBuffer = new StringBuffer();
+		try{
+			url = new URL(reqUrl);
+			conn = (HttpURLConnection) url.openConnection();
+			conn.setRequestMethod("POST");
+			conn.setConnectTimeout(3000);
+			conn.setReadTimeout(5000);
+			conn.setDoOutput(true);
+			
+			pw = new PrintWriter(conn.getOutputStream());
+			pw.write(data);
+			pw.flush();
+			
+			statusCode = conn.getResponseCode();
+			resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "euc-kr"));
+			for(String temp; (temp = resultReader.readLine()) != null;){
+				recvBuffer.append(temp).append("\n");
+			}
+			
+			if(!(statusCode == HttpURLConnection.HTTP_OK)){
+				throw new Exception();
+			}
+			
+			return recvBuffer.toString().trim();
+		}catch (Exception e){
+			return "9999";
+		}finally{
+			recvBuffer.setLength(0);
+			
+			try{
+				if(resultReader != null){
+					resultReader.close();
+				}
+			}catch(Exception ex){
+				resultReader = null;
+			}
+			
+			try{
+				if(pw != null) {
+					pw.close();
+				}
+			}catch(Exception ex){
+				pw = null;
+			}
+			
+			try{
+				if(conn != null) {
+					conn.disconnect();
+				}
+			}catch(Exception ex){
+				conn = null;
+			}
+		}
+	}
+	
+	//JSON String -> HashMap 변환
+	public static HashMap jsonStringToHashMap(String str) throws Exception{
+		HashMap dataMap = new HashMap();
+		JSONParser parser = new JSONParser();
+		try{
+			Object obj = parser.parse(str);
+			JSONObject jsonObject = (JSONObject)obj;
+
+			Iterator<String> keyStr = jsonObject.keySet().iterator();
+			while(keyStr.hasNext()){
+				String key = keyStr.next();
+				Object value = jsonObject.get(key);
+				
+				dataMap.put(key, value);
+			}
+		}catch(Exception e){
+			
+		}
+		return dataMap;
+	}
+	
+	public final synchronized String getyyyyMMddHHmmss(){
+		SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss");
+		return yyyyMMddHHmmss.format(new Date());
+	}
+	
+	// SHA-256 형식으로 암호화
+	public class DataEncrypt{
+		MessageDigest md;
+		String strSRCData = "";
+		String strENCData = "";
+		String strOUTData = "";
+		
+		public DataEncrypt(){ }
+		public String encrypt(String strData){
+			String passACL = null;
+			MessageDigest md = null;
+			try{
+				md = MessageDigest.getInstance("SHA-256");
+				md.reset();
+				md.update(strData.getBytes());
+				byte[] raw = md.digest();
+				passACL = encodeHex(raw);
+			}catch(Exception e){
+				System.out.print("암호화 에러" + e.toString());
+			}
+			return passACL;
+		}
+		
+		public String encodeHex(byte [] b){
+			char [] c = Hex.encodeHex(b);
+			return new String(c);
+		}
+	}
+	
+	// 세금 값 넣기
+	public MjonPayVO setTexVO(MjonPayVO mjonPayVO) throws Exception{
+		/*
+		 * amt = mjonPayVO.setAmt(amt); // 결제 금액
+		 * userId = mjonPayVO.getMoid() ;  //테스트시 화면에서 전송한 고객사 ID
+		 * mjonPayVO.setPayMethod(payMethod); // 결제수단
+		 */
+		 
+		String s_amt = mjonPayVO.getAmt();
+		// 부가세별도 충전금액
+		s_amt = setCashVatNotIncluded(s_amt);
+		
+		String s_user_id = mjonPayVO.getMoid();
+		 
+		//PG Tax테이블  변수 생성
+		mjonPayVO.setRcptType("9"); //PG결제는 세금계산서 '발행유형-[PG결제-현금영수증 유형과 동일] 1:소득공제, 2:지출증빙, 9:세금계산서', (확인필요)
+		
+		mjonPayVO.setRegNo(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setMobile(mjonPayVO.getBuyerTel());  // '사업자번호/전화번호',
+		mjonPayVO.setPhone(mjonPayVO.getBuyerTel()); //연락처
+		mjonPayVO.setEmail(mjonPayVO.getBuyerEmail()); //이메일
+		mjonPayVO.setRepName(mjonPayVO.getBuyerName());  //'대표자명',
+		mjonPayVO.setConfirmYn("Y"); //'완료여부',
+		
+		//캐쉬 테이블 변수 생성
+		mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()) ;
+		mjonPayVO.setPointId(idgenMjonPointId.getNextStringId()) ;
+		mjonPayVO.setCash(Float.parseFloat(s_amt)); //'사용 캐쉬-양수:지급, 음수:소모',
+		
+		mjonPayVO.setOrderId(mjonPayVO.getMoid());  //'주문번호-주문번호가 없으면 관리자 임의 지급',
+		
+		mjonPayVO.setUserId(s_user_id);
+		mjonPayVO.setFrstRegisterId(s_user_id);
+		
+		return mjonPayVO;
+	}
+	
+	// 부가세별도 충전금액
+	private String setCashVatNotIncluded(String val) {
+		String rtnVal = "";
+		
+		// 공급대가 = 공급가액(공급대가/11*10) + 부가세(공급대가/11)
+		// 11000 = (11000/11*10 ) + 11000/11
+		// 공급가액 계산로직
+		rtnVal = Math.round(Float.parseFloat(val) / 11 * 10) + "";
+		
+		return rtnVal;
+	}
+	
+	//cash 값 넣기
+	/**
+	 * @param mjonPayVO
+	 * @return
+	 * @throws Exception
+	 * cash table 값 넣기
+	 */
+	public MjonPayVO setCashVO(MjonPayVO mjonPayVO) throws Exception{
+		/*
+		 * amt = mjonPayVO.setAmt(amt); // 결제 금액
+		 * userId = mjonPayVO.getMoid() ;  //테스트시 화면에서 전송한 고객사 ID
+		 * mjonPayVO.setPayMethod(payMethod); // 결제수단
+		 */
+		 
+		String s_amt = mjonPayVO.getAmt();
+		// 부가세별도 충전금액
+		s_amt = setCashVatNotIncluded(s_amt);
+			
+		String s_user_id = mjonPayVO.getMoid();
+		 
+			//캐쉬 테이블 변수 생성
+			mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()) ;
+			mjonPayVO.setPointId(idgenMjonPointId.getNextStringId()) ;
+			mjonPayVO.setCash(Float.parseFloat(s_amt)); //'사용 캐쉬-양수:지급, 음수:소모',
+			
+			mjonPayVO.setOrderId(mjonPayVO.getMoid());  //'주문번호-주문번호가 없으면 관리자 임의 지급',
+			
+			mjonPayVO.setUserId(s_user_id);
+			mjonPayVO.setFrstRegisterId(s_user_id);
+			
+			
+			String s_paymethod = mjonPayVO.getPayMethod();
+			
+			if(s_paymethod.equals("CARD")){
+				s_paymethod = "신용카드" ; // 신용카드(정상 결과코드:3001)       	
+			}else if(s_paymethod.equals("BANK")){
+				s_paymethod = "계좌이체" ; // 계좌이체(정상 결과코드:4000)	
+			}else if(s_paymethod.equals("CELLPHONE")){
+				s_paymethod = "휴대폰" ; // 휴대폰(정상 결과코드:A000)	 
+			}else if(s_paymethod.equals("VBANK")){
+				s_paymethod = "가상계좌" ; // 가상계좌(정상 결과코드:4100)
+			}else if(s_paymethod.equals("SSG_BANK")){
+				s_paymethod = "SSG은행계좌" ; // SSG은행계좌(정상 결과코드:0000)
+			}else if(s_paymethod.equals("CMS_BANK")){
+				s_paymethod = "계좌간편결제" ; // 계좌간편결제(정상 결과코드:0000)
+			}else {
+				s_paymethod = "";
+			}
+			
+			String memo = s_paymethod + " " + s_amt + " 충전" ;
+			mjonPayVO.setMemo(memo); //캐쉬메모
+		
+		return mjonPayVO;
+	}
+	
+	//point 값 넣기
+	/**
+	 * @param mjonPayVO
+	 * @return
+	 * @throws Exception
+	 * point table 값 넣기
+	 */
+	public MjonPayVO setPointVO(MjonPayVO mjonPayVO) throws Exception{
+			
+			String s_paymethod = mjonPayVO.getPayMethod();
+			if(s_paymethod.equals("CARD")){
+				s_paymethod = "신용카드" ; // 신용카드(정상 결과코드:3001)       	
+			}else if(s_paymethod.equals("SPAY")){
+				s_paymethod = "간편결제" ; // 간편결제	
+			}else if(s_paymethod.equals("BANK")){
+				s_paymethod = "계좌이체" ; // 계좌이체(정상 결과코드:4000)	
+			}else if(s_paymethod.equals("CELLPHONE")){
+				s_paymethod = "휴대폰" ; // 휴대폰(정상 결과코드:A000)	 
+			}else if(s_paymethod.equals("VBANK")){
+				s_paymethod = "가상계좌" ; // 가상계좌(정상 결과코드:4100)
+			}else if(s_paymethod.equals("SSG_BANK")){
+				s_paymethod = "SSG은행계좌" ; // SSG은행계좌(정상 결과코드:0000)
+			}else if(s_paymethod.equals("CMS_BANK")){
+				s_paymethod = "계좌간편결제" ; // 계좌간편결제(정상 결과코드:0000)
+			}else {
+				s_paymethod = "";
+			}			
+			
+			String s_amt = mjonPayVO.getAmt();
+			// 부가세별도 충전금액
+			s_amt = setCashVatNotIncluded(s_amt);
+			
+			//포인트 테이블 변수설정
+			JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();			
+			//int point = Math.round( (Float.parseFloat(s_amt)*2/100) ) ;
+			float p_i_re_point = 0; 
+			if (sysJoinSetVO != null) {
+				p_i_re_point = sysJoinSetVO.getPointPer();
+			}
+			int point = Math.round((Float.parseFloat(s_amt)*p_i_re_point/100)) ;
+			
+			mjonPayVO.setPoint(point);
+			
+			String pointMemo = s_paymethod; //포인트 메모
+			pointMemo = pointMemo + " " + point + " 충전" ;
+
+			mjonPayVO.setPointMemo(pointMemo);
+		
+		return mjonPayVO;
+	}
+	
+	public MjonPayVO setPayInfo(HttpServletRequest request, MjonPayVO mjonPayVO) throws Exception{
+		
+		if(!this.pgAuth(mjonPayVO , request)) {
+			mjonPayVO.setPaySuccess(false);
+			return mjonPayVO;
+		}
+		
+		//세금 값 넣기
+		mjonPayVO = this.setTexVO(mjonPayVO);
+		//cash 값 넣기
+		mjonPayVO = this.setCashVO(mjonPayVO);
+		//point 값 넣기
+		mjonPayVO = this.setPointVO(mjonPayVO);
+		
+		return mjonPayVO;
+	}
+}
src/main/java/itn/let/mjo/event/service/MjonEventService.java
--- src/main/java/itn/let/mjo/event/service/MjonEventService.java
+++ src/main/java/itn/let/mjo/event/service/MjonEventService.java
@@ -1,6 +1,10 @@
 package itn.let.mjo.event.service;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import itn.let.cop.bbs.service.BoardVO;
+import itn.let.mjo.pay.service.MjonPayVO;
 import itn.let.uss.umt.service.MberManageVO;
 
 public interface MjonEventService {
@@ -35,9 +39,20 @@
 	//이벤트 정보 신규 추가(관리자가 강제로 입력)
 	int insertEventFrstInfoByAdm(MjonEventVO mjonEventVO) throws Exception;
 	
-	
 	//현재 진행중 이벤트 상태 정보 불러오기
 	MjonEventCheckVO selectEventStatus(MjonEventCheckVO p_MjonEventCheckVO) throws Exception;
 
 	MjonEventVO selectEventMsgMberDefaultInfo_advc(String userId) throws Exception;
+	
+	//이벤트 나이스페이 결제 
+	MjonPayVO insertFirstEventNicePay_advc(MjonPayVO mjonPayVO, HttpServletRequest request, String p_payment_comp) throws Exception;
+	
+	//이벤트 kg모빌런스  모바일 결제
+	String insertFirstEventKgPayMobile_advc(MjonPayVO mjonPayVO, HttpServletResponse response, HttpServletRequest request) throws Exception;
+	
+	//이벤트 kg모빌런스  즉시이체 결제
+	String insertFirstEventKgPayBank_advc(MjonPayVO mjonPayVO, HttpServletResponse response, HttpServletRequest request) throws Exception;
+	
+	//이벤트 kg모빌런스  즉시이체 결제
+	String insertFirstEventKgPayCard_advc(MjonPayVO mjonPayVO, HttpServletResponse response, HttpServletRequest request) throws Exception;
 }
src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
--- src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
+++ src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
@@ -1,11 +1,16 @@
 package itn.let.mjo.event.service.impl;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.stereotype.Service;
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import itn.com.cmm.util.KgmPayUtil;
+import itn.com.cmm.util.MjonPayUtil;
+import itn.com.cmm.util.NicePayUtil;
 import itn.let.cop.bbs.service.BoardVO;
 import itn.let.mjo.event.service.MjonEventCheckVO;
 import itn.let.mjo.event.service.MjonEventService;
@@ -34,6 +39,18 @@
 	
 	@Resource(name = "egovMjonPointIdGnrService")
     private EgovIdGnrService idgenMjonPointId;
+	
+	/* 결제 */
+	@Resource(name = "mjonPayUtil")
+	MjonPayUtil mjonPayUtil;
+	
+	/* nicePay */
+	@Resource(name = "nicePayUtil")
+	NicePayUtil nicePayUtil;
+	
+	/* kg */
+	@Resource(name = "kgmPayUtil")
+	KgmPayUtil kgmPayUtil;
 	
 	@Override
 	public BoardVO selectEventInfoByNttSj(BoardVO boardVO) throws Exception{
@@ -160,4 +177,112 @@
 	public MjonEventCheckVO selectEventStatus(MjonEventCheckVO p_MjonEventCheckVO) throws Exception{
 		return mjonEventDAO.selectEventStatus(p_MjonEventCheckVO);
 	}
+
+	@Override
+	public MjonPayVO insertFirstEventNicePay_advc(
+			MjonPayVO mjonPayVO
+			, HttpServletRequest request
+			, String p_payment_comp) throws Exception {
+		
+		System.out.println("START 이벤트 나이스페이결제");
+		//PG인증이 완료되야 테이블 insert
+		//업체에 따라서 인증 방식이 다르다.
+		if ("nice".equals(p_payment_comp)) {//신용카드, 즉시이제 결제 처리
+			if(!nicePayUtil.pgAuth(mjonPayVO , request)){
+				mjonPayVO.setPaySuccess(false);
+				mjonPayDAO.insertMjPg(mjonPayVO); //오류시에도 db insert 
+				return mjonPayVO;
+			}	
+		}else {
+			mjonPayVO.setPaySuccess(false);			 
+			return mjonPayVO;			
+		}
+		
+		//세금 값 넣기
+		mjonPayVO = nicePayUtil.setTexVO(mjonPayVO);
+		
+		//cash 값 넣기
+		mjonPayVO = nicePayUtil.setCashVO(mjonPayVO);
+		
+		//point 값 넣기
+		mjonPayVO = nicePayUtil.setPointVO(mjonPayVO);
+    	
+    	// 결제 및 세금계산서 발행, 등급제 적용
+		mjonPayUtil.insertPayUtil(mjonPayVO);
+		
+		// 포인트 발행
+		mjonPayUtil.updateFirstEventPointUtile(mjonPayVO);
+		
+   		System.out.println("END 카드결제");
+   		
+		mjonPayVO.setPaySuccess(true);
+		return mjonPayVO;
+	}
+	
+	@Override
+	public String insertFirstEventKgPayMobile_advc(
+			MjonPayVO mjonPayVO
+			, HttpServletResponse response
+			, HttpServletRequest request)
+			throws Exception {
+		
+		mjonPayVO = kgmPayUtil.kgmMobileNotiUrl(response, request);
+		
+		String rtnMsg = mjonPayVO.getRtnMsg();
+		String pgStatus = mjonPayVO.getPgStatus();
+		if(rtnMsg.equals("SUCCESS") && pgStatus.equals("1")) {
+			// 결제 및 세금계산서 발행, 등급제 적용
+			mjonPayUtil.insertPayUtil(mjonPayVO);
+			// 포인트 발행
+			mjonPayUtil.updateFirstEventPointUtile(mjonPayVO);
+			// 슬랙 전송
+			kgmPayUtil.slackKgPay(mjonPayVO);
+		}
+		return rtnMsg;
+	}
+
+	@Override
+	public String insertFirstEventKgPayBank_advc(
+			MjonPayVO mjonPayVO
+			, HttpServletResponse response
+			, HttpServletRequest request) throws Exception {
+		
+		mjonPayVO = kgmPayUtil.kgmBankNotiUrl(response, request);
+		
+		String rtnMsg = mjonPayVO.getRtnMsg();
+		String pgStatus = mjonPayVO.getPgStatus();
+		if(rtnMsg.equals("SUCCESS") && pgStatus.equals("1")) {
+			// 결제 및 세금계산서 발행, 등급제 적용
+			mjonPayUtil.insertPayUtil(mjonPayVO);
+			// 포인트 발행
+			mjonPayUtil.updateFirstEventPointUtile(mjonPayVO);
+			// 슬랙 전송
+			kgmPayUtil.slackKgPay(mjonPayVO);
+		}
+		
+		return rtnMsg;
+	}
+
+	@Override
+	public String insertFirstEventKgPayCard_advc(
+			MjonPayVO mjonPayVO
+			, HttpServletResponse response
+			, HttpServletRequest request) throws Exception {
+		
+		
+		mjonPayVO = kgmPayUtil.kgmCardNotiUrl(response, request);
+		
+		String rtnMsg = mjonPayVO.getRtnMsg();
+		String pgStatus = mjonPayVO.getPgStatus();
+		if(rtnMsg.equals("SUCCESS") && pgStatus.equals("1")) {
+			// 결제 및 세금계산서 발행, 등급제 적용
+			mjonPayUtil.insertPayUtil(mjonPayVO);
+			// 포인트 발행
+			mjonPayUtil.updateFirstEventPointUtile(mjonPayVO);
+			// 슬랙 전송
+			kgmPayUtil.slackKgPay(mjonPayVO);
+		}
+		
+		return rtnMsg;
+	}
 }
src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
--- src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
+++ src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
@@ -3,34 +3,49 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.HandlerMapping;
+import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
 import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
 import itn.com.cmm.LoginVO;
+import itn.com.cmm.util.KgmPayUtil;
 import itn.com.cmm.util.StringUtil;
 import itn.com.utl.fcc.service.EgovStringUtil;
 import itn.let.cop.bbs.service.BoardVO;
+import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.event.service.MjonEventService;
 import itn.let.mjo.event.service.MjonEventVO;
 import itn.let.mjo.msgcampain.service.MjonCandidateService;
 import itn.let.mjo.msgcampain.service.MjonCandidateVO;
+import itn.let.mjo.pay.service.MjonKgmVO;
 import itn.let.mjo.pay.service.MjonPayService;
 import itn.let.mjo.pay.service.MjonPayVO;
 import itn.let.mjo.pay.service.MjonVaMsgLogVO;
 import itn.let.mjo.payva.service.VacsVactService;
 import itn.let.mjo.payva.service.VacsVactVO;
+import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uss.umt.service.EgovMberManageService;
 import itn.let.uss.umt.service.MberManageVO;
+import itn.let.uss.umt.service.UserManageVO;
 
 @Controller
 public class MjonEventPayV2Controller {
@@ -49,6 +64,12 @@
 	
 	@Resource(name = "mjonPayService")
     private MjonPayService mjonPayService;
+	
+	@Resource(name = "egovPgMoidGnrService")
+    private EgovIdGnrService idgenPgMoid;
+	
+	@Resource(name = "kgmPayUtil")
+	KgmPayUtil kgmPayUtil;
 	
 	
     /**
@@ -75,15 +96,6 @@
 			//redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다.");
 			return "redirect:/web/user/login/login.do";
 		}
-		
-		// 하드코딩
-		//if(!userId.equals("nobledeco")) {
-		//	if(!userId.equals("nobledeco2")) {
-		//		if(!userId.equals("nopay")) {
-		//			return "redirect:/web/main/mainPage.do";
-		//		}
-		//	}
-		//}
 		
 		//기존 결제 내역이 있는 회원인지 확인
 		int payCnt = 0;
@@ -250,4 +262,285 @@
 		return eventMberInfo;
     }
     
+    // 나이스페이 
+    @RequestMapping(value= {"/web/event/member/pay/firstEventPayActionAjax.do"})
+	public String firstEventPayAction(
+			@ModelAttribute("mjonPayVO") MjonPayVO mjonPayVO
+			, HttpServletRequest request
+			, ModelMap model) throws Exception{
+    	
+    	String pattern = (String) request.getAttribute(
+                HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
+    	
+    	mjonPayVO.setReturnURL(request.getRequestURL().toString().split("pay")[0] + "pay/firstPayResultAjax.do") ;
+    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	//테스트
+    	mjonPayVO.setBuyerName(loginVO.getName());			//구매자 이름
+    	mjonPayVO.setBuyerEmail(loginVO.getEmail());		//구매자 이메일
+    	mjonPayVO.setBuyerTel(loginVO.getMoblphonNo());		//구매자 휴대폰 번호
+    	//moid 생성 위치 변경
+    	mjonPayVO.setMoid(idgenPgMoid.getNextStringId());				
+    	
+    	//결제 페이지
+    	mjonPayVO.setReturnURL("/web/event/member/pay/firstEventPayResultAjax.do");
+    	
+		model.addAttribute("mjonPayVO", mjonPayVO);
+		return "web/cop/nicepay/payRequestMber";
+	}
+    
+    @RequestMapping( value = {"/web/event/member/pay/firstEventPayResultAjax.do"}) 
+	public String firstEventPayResult(HttpServletRequest request, 
+			ModelMap model , @RequestParam Map<String, Object> commandMap, 
+			@ModelAttribute("searchVO") MjonPayVO mjonPayVO) throws Exception {
+		
+    	String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
+		
+		//mjonPayVO.setReturnURL(request.getRequestURL().toString().split("nice")[0] + "payResult.do") ;
+		MjonPayVO returnMjonPayVO = new MjonPayVO();
+		mjonPayVO.setPageType("event");
+		
+		// returnMjonPayVO = mjonPayService.insertPay(mjonPayVO , request, "nice" ); //PG, PGTXT, CASH , 포인트 insert / 회원정보 캐시,포인트 update
+		returnMjonPayVO = mjonEventService.insertFirstEventNicePay_advc(mjonPayVO , request, "nice" ); //PG, PGTXT, CASH , 포인트 insert / 회원정보 캐시,포인트 update
+		
+		model.addAttribute("mjonPayVO", returnMjonPayVO);
+		if(pattern.equals("/web/member/pay/payResultAjax.do")){
+			model.addAttribute("userPage", true);
+		}
+		
+		return "web/cop/nicepay/payResultAjax";
+	}
+    
+    
+    // KG모빌런스
+	/////////////////////////////////////////////////////////////////////////////////////////
+	//
+	//	Mobile Start
+	//
+	/**
+	* KGM 정보 Encode
+	* @param MjonPayVO
+	* @param modelAndView
+	* @return /web/event/member/pay/firstEventKgmMobileEncodeAjax.do
+	* @throws Exception
+	*/
+    @RequestMapping(value = "/web/event/member/pay/firstEventKgmMobileEncodeAjax.do")
+   	public ResponseEntity<StatusResponse>  firstEventKgmMobileEncodeAjax(
+   			MjonPayVO mjonPayVO
+   			, HttpServletRequest request ) throws Exception {
+      
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+   		if(StringUtils.isEmpty(userId)) {
+			return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", ""));
+		}
+   		
+   		MjonKgmVO mjonKgmVO = kgmPayUtil.kgmMobileEncode(request
+   				, "/web/event/member/pay/firstEventOkUrlMobileAjax.do"
+   				, "/web/event/member/pay/firstEventNotiUrlMobileAjax.do");
+   		return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", mjonKgmVO));
+   	}
+    
+    @RequestMapping(value= {"/web/event/member/pay/firstEventOkUrlMobileAjax.do"})
+	public String firstEventOkUrlMobileAjax(			
+			HttpServletRequest request
+			, HttpSession session
+			, HttpServletResponse response			
+			, ModelMap model
+		) throws Exception{
+
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+		
+    	String rstMsg = "";
+    	if("0000".equals(request.getParameter("Resultcd"))) {
+    		rstMsg = "휴대폰결제가 정상적으로 완료되었습니다.";
+    	}
+    	else {
+    		rstMsg = "휴대폰결제가 실패했습니다.";
+    	}
+
+    	model.addAttribute("Resultcd", request.getParameter("Resultcd"));
+    	model.addAttribute("Resultmsg", rstMsg);
+
+    	System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
+		System.out.println("KG MOBILIANS OkUrl - MOBILE ResultCd : " + request.getParameter("Resultcd"));
+		System.out.println("KG MOBILIANS OkUrl - MOBILE ResultMsg : " + rstMsg);    					    			
+		
+    	return "web/cop/kgmV2/mobileOkUrl";
+	}
+    
+    @RequestMapping(value= {"/web/event/member/pay/firstEventNotiUrlMobileAjax.do"})
+	public String firstEventNotiUrlMobileAjax(HttpServletRequest request, HttpServletResponse response
+			, @ModelAttribute("searchVO") MjonPayVO mjonPayVO
+			, ModelMap model) throws Exception{
+    	
+    	ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+    	//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+    	response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+
+    	String rtnMsg = mjonEventService.insertFirstEventKgPayMobile_advc(mjonPayVO, response, request);
+		
+		model.addAttribute("returnMsg", rtnMsg);
+		
+		return "web/cop/kgmV2/mobileNotiUrl";
+    }
+    
+    /////////////////////////////////////////////////////////////////////////////////////////
+    //
+    //	BANK Start
+    //
+    /**
+   	 * KGM 정보 Encode
+   	 * @param MjonPayVO
+   	 * @param modelAndView
+   	 * @return /web/event/member/pay/kgmEncodeAjax.do
+   	 * @throws Exception
+   	 */
+    @RequestMapping(value = "/web/event/member/pay/firstEventKgmBankEncodeAjax.do")
+   	public ResponseEntity<StatusResponse>  firstEventKgmBankEncodeAjax(
+   			MjonPayVO mjonPayVO
+   			, HttpServletRequest request ) throws Exception {
+      
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+   		if(StringUtils.isEmpty(userId)) {
+			return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", ""));
+		}
+   		
+   		MjonKgmVO mjonKgmVO = kgmPayUtil.kgmBankEncode(request
+   				, "/web/event/member/pay/firstEventOkUrlBankAjax.do"
+   				, "/web/event/member/pay/firstEventNotiUrlBankAjax.do");
+   		return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", mjonKgmVO));
+   	}
+    
+    @RequestMapping(value= {"/web/event/member/pay/firstEventOkUrlBankAjax.do"})
+    public String okUrlBankAjax(			
+			HttpServletRequest request
+			, HttpSession session
+			, HttpServletResponse response			
+			, ModelMap model
+		) throws Exception{
+
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+		
+    	String rstMsg = "";
+    	if("0000".equals(request.getParameter("Resultcd"))) {
+    		rstMsg = "즉시이체가 정상적으로 완료되었습니다.";
+    	}
+    	else {
+    		rstMsg = "즉시이체가 실패했습니다.";
+    	}
+
+    	model.addAttribute("Resultcd", request.getParameter("Resultcd"));
+    	model.addAttribute("Resultmsg", rstMsg);
+
+		System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
+		System.out.println("KG MOBILIANS OkUrl - BANK ResultCd : " + request.getParameter("Resultcd"));
+		System.out.println("KG MOBILIANS OkUrl - BANK ResultMsg : " + rstMsg);    					    			
+		
+    	return "web/cop/kgmV2/bankOkUrl";
+    }
+    /**
+     * KGM Bank 결제notiUrl 페이지 
+     * @param searchVO
+     * @param model
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/web/event/member/pay/firstEventNotiUrlBankAjax.do"})
+	public String notiUrlBankAjax(HttpServletRequest request, HttpServletResponse response
+		, @ModelAttribute("searchVO") MjonPayVO mjonPayVO
+		, ModelMap model) throws Exception{
+	
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+		
+		String rtnMsg = mjonEventService.insertFirstEventKgPayBank_advc(mjonPayVO, response, request);
+		
+		model.addAttribute("returnMsg", rtnMsg);
+		
+		return "web/cop/kgmV2/bankNotiUrl";
+	}
+   
+	/////////////////////////////////////////////////////////////////////////////////////////
+	//
+	//	card Start
+	//
+    /**
+   	 * KGM 정보 Encode
+   	 * @param MjonPayVO
+   	 * @param modelAndView
+   	 * @return /web/event/member/pay/firstEventKgmCardEncodeAjax.do
+   	 * @throws Exception
+   	 */
+    @RequestMapping(value = "/web/event/member/pay/firstEventKgmCardEncodeAjax.do")
+   	public ResponseEntity<StatusResponse>  firstEventKgmCardEncodeAjax(
+   			MjonPayVO mjonPayVO
+   			, HttpServletRequest request ) throws Exception {
+      
+		LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+   		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+   		
+   		if(StringUtils.isEmpty(userId)) {
+			return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", ""));
+		}
+   		
+   		MjonKgmVO mjonKgmVO = kgmPayUtil.kgmCardEncode(request
+   				, "/web/event/member/pay/firstEventOkUrlCardAjax.do"
+   				, "/web/event/member/pay/firstEventNotiUrlCardAjax.do");
+   		return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", mjonKgmVO));
+   	}
+    
+    @RequestMapping(value= {"/web/event/member/pay/firstEventOkUrlCardAjax.do"})
+    public String firstEventOkUrlCardAjax(			
+			HttpServletRequest request
+			, HttpSession session
+			, HttpServletResponse response			
+			, ModelMap model
+		) throws Exception{
+
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+		
+    	String rstMsg = "";
+    	if("0000".equals(request.getParameter("Resultcd"))) {
+    		rstMsg = "즉시이체가 정상적으로 완료되었습니다.";
+    	}
+    	else {
+    		rstMsg = "즉시이체가 실패했습니다.";
+    	}
+
+    	model.addAttribute("Resultcd", request.getParameter("Resultcd"));
+    	model.addAttribute("Resultmsg", rstMsg);
+
+		System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
+		System.out.println("KG MOBILIANS OkUrl - CARD ResultCd : " + request.getParameter("Resultcd"));
+		System.out.println("KG MOBILIANS OkUrl - CARD ResultMsg : " + rstMsg);    					    			
+		
+    	return "web/cop/kgmV2/cardOkUrl";
+    }
+    /**
+     * KGM card 결제notiUrl 페이지 
+     * @param searchVO
+     * @param model
+     * @throws Exception
+     */
+    @RequestMapping(value= {"/web/event/member/pay/firstEventNotiUrlCardAjax.do"})
+	public String firstEventNotiUrlCardAjax(HttpServletRequest request, HttpServletResponse response
+		, @ModelAttribute("searchVO") MjonPayVO mjonPayVO
+		, ModelMap model) throws Exception{
+	
+		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
+		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
+		
+		String rtnMsg = mjonEventService.insertFirstEventKgPayBank_advc(mjonPayVO, response, request);
+		
+		model.addAttribute("returnMsg", rtnMsg);
+		
+		return "web/cop/kgmV2/cardNotiUrl";
+	}
 }
 
src/main/java/itn/let/mjo/pay/service/MjonKgmVO.java (added)
+++ src/main/java/itn/let/mjo/pay/service/MjonKgmVO.java
@@ -0,0 +1,103 @@
+package itn.let.mjo.pay.service;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MjonKgmVO{
+	
+	/*****************************************************************************************/
+	String cash_gb		= "";	// 대표결제수단
+	
+	/*****************************************************************************************
+	- 필수 입력 항목
+	*****************************************************************************************/
+	String ver 				= "";		//ALL_NEW : 버전설정 고정
+	String cn_svcid 		= "";		//서비스아이디 : CN
+	String mc_svcid 		= "";		//서비스아이디 : MC
+	String ra_svcid 		= "";		//서비스아이디 : RA
+	
+	String pay_mode 		= "";		//연동시 테스트/실결제 구분 (00: 테스트결제-비과금, 10: 실거래결제-과금)
+	String prdtprice 		= "";		//결제요청금액.
+	String prdtnm 			= "캐시충전";	//상품명 ( 50byte 이내 )
+	String siteurl 			= "";		//가맹점도메인
+	String tradeid 			= "";		//가맹점거래번호 //결제 요청 시 마다 unique한 값을 세팅해야 함.
+	String okurl 			= "";		//성공화면처리URL : 결제완료통보페이지 full Url (예:http://www.mcash.co.kr/okurl.jsp )
+	String notiurl 			= "";		//결제처리URL : 결제 완료 후, 가맹점측 과금 등 처리할 가맹점측 URL
+	
+	/*****************************************************************************************
+	- 디자인 관련 필수항목
+	*****************************************************************************************/
+	String logo_yn			= "N";		//가맹점 로고 사용 여부 (N: 모빌리언스 로고-default, Y: 가맹점 로고 (사전에 모빌리언스에 가맹점 로고 이미지를 등록해야함))
+	String call_type		= "P";		//결제창 호출 방식 (P: 팝업-default, SELF: 페이지전환, I: 아이프레임)
+	
+	/*****************************************************************************************
+	- 디자인 관련 선택항목 (향후 변경될 수 있습니다.)
+	*****************************************************************************************/
+	String iframe_name		= "";		//결제창을 iframe으로 호출 할 경우 iframe 명칭 세팅
+	String infoarea_yn		= "";		//결제창 안내문 표시여부 (Y: 표시-default,  N: 미표시)
+	String footer_yn		= "";		//결제창 하단 안내 표시여부 (Y: 표시-default,  N: 미표시)
+	String height			= "";		//결제창 높이 (px단위: iframe 등 사용시 결제창 높이 조절, 팝업창 등 호출시 "" 로 세팅)
+	String prdt_hidden		= "";		//iframe 사용시 상품명 숨김 여부 (가맹점 디자인 결제창으로 결제 입력 사항만 iframe에서 사용시)
+	String email_hidden		= "";		//결제자 e-mail 입력창 숨김 여부 (N: 표시-default, Y: 미표시)
+	String contract_hidden	= "";		//이용약관 숨김 여부 (Y: 표시-default,  N: 미표시)
+	
+	/*****************************************************************************************
+	- 선택 입력 항목
+	*****************************************************************************************/
+	String userid 			= "";		//가맹점결제자ID
+	String username 		= "";		//결제자명
+	String payeremail		= "";		//결제자email
+	String notiemail		= "";		//알림 e-mail: 결제 완료 후 당사와 가맹점간의 Noti 연동이 실패한 경우 알람 메일을 받을 가맹점 담당자 이메일주소
+	String item				= "";		//아이템코드. 미사용 시 반드시 공백으로 세팅.
+	String prdtcd			= "";		//상품코드. 자동결제인 경우 상품코드별 SMS문구를 별도 세팅할 때 사용하며 사전에 모빌리언스에 등록이 필요함.
+	String closeurl			= "";		//닫기버튼 클릭 시 호출되는 가맹점 측 페이지. CALL_TYPE = ‘I’ 또는 ‘SELF’ 셋팅 시 필수
+	String failurl			= "";		//결제 실패 시 사용자에게 보여질 가맹점 측 실패 페이지
+	String mstr				= "";		//가맹점콜백변수 //가맹점에서 추가적으로 파라미터가 필요한 경우 사용하며 &,%,?,^ 는 사용불가 ( 예 : MSTR="a=1|b=2|c=3" )
+	String deposit			= "";		//일회용컵보증금
+	
+	
+	/*****************************************************************************************
+	- 간편결제 : CN
+	*****************************************************************************************/	
+	String termregno		= "";	//하위가맹점사업자번호
+	String app_scheme		= "";	//APP SCHEME
+	String cn_billtype		= "";	//매출전표 출력 시 과세/비과세 구분
+	String cn_taxfree		= "";	//비과세
+	String cn_tax			= "";	//부과세 - 전체금액의 10%이하로 설정
+	String cn_freeinterest	= "";	//무이자할부정보
+	String cn_point			= "";	//카드사포인트사용여부
+	String cn_install		= "";	//할부개월
+	String cn_fixcardcd		= "";	//카드사 선택노출 '결제창에 노출할 카드사 코드 셋팅
+	String cn_direct		= "";	//카드사 직접호출 ( 예 : KBC:00:N )
+	
+	/*****************************************************************************************
+	- 휴대폰결제 : MC
+	*****************************************************************************************/
+	String mc_authpay		= "";	//하이브리드 방식 사용시  "Y" 로 설정 (휴대폰 SMS인증 후 일반 소켓모듈 결제 연동시 사용) (N: 미사용-default, Y: 사용)
+	String mc_autopay		= "";	//자동결제를 위한 최초 일반결제 시 "Y" 세팅. 결제 완료 후 휴대폰정보 대체용 USERKEY 발급 및 자동결제용 AutoBillKey 발급 (N: 미사용-default, Y: 사용)
+	String mc_partpay		= "";	//부분취소를 위한 일반결제 시 "Y" 세팅. 결제 완료 후 자동결제 USERKEY 발급 (N: 미사용-default, Y: 사용)
+	String mc_no			= "";	//사용자 폰번호 (결제창 호출시 세팅할 폰번호)
+	String mc_fixno			= "";	//사용자 폰번호 수정불가 여부(N: 수정가능-default, Y: 수정불가)
+	String mc_defaultcommid	= "";	//통신사 기본 선택 값. SKT, KTF, LGT 3개의 값 중 원하는 통신사 세팅 시 해당 통신사가 미리 선택되어짐.
+	String mc_fixcommid		= "";	//통신사 고정 선택 값. SKT, KTF, LGT 3개의 값 중 원하는 통신사 세팅 시 해당 통신사만 결제창에 보여짐.
+	String mc_cpcode		= "";	//리셀러하위상점key. 리셀러 업체인 경우에만 세팅.
+	String mc_ez_yn			= "Y";	//간소화결제여부. 간소화결제 사용시  "Y" 로 설정 (N: 미사용-default, Y: 사용)
+	String mc_ez_key		= "";	//간소화결제 사용자키
+	
+	/*****************************************************************************************
+	- 즉시이체 : RA
+	*****************************************************************************************/
+	
+	
+	/*****************************************************************************************
+	- 암호화 처리 (암호화 사용 시)
+	Cryptstring 항목은 금액변조에 대한 확인용으로 반드시 아래와 같이 문자열을 생성하여야 합니다.
+
+	주) 암호화 스트링은 가맹점에서 전달하는 거래번호로 부터 추출되어 사용되므로
+	암호화에 이용한 거래번호가  변조되어 전달될 경우 복호화 실패로 결제 진행이 불가합니다.
+	*****************************************************************************************/
+	String cryptyn			= "Y";	//Y: 암호화 사용, N: 암호화 미사용
+	String cryptstring		= "";	//암호화 사용 시 암호화된 스트링
+}
src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
--- src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
@@ -236,8 +236,8 @@
 
 	private int  remainPoint;
 	
-	
+	private String payType;				// 결제분류
 	private String totChgPay;			// 간편결제분류
 	
-	
+	private String rtnMsg;
 }
src/main/webapp/WEB-INF/jsp/web/cop/nicepay/payRequestMber.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/nicepay/payRequestMber.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/nicepay/payRequestMber.jsp
@@ -119,7 +119,9 @@
 </head>
 <body>
 <!-- <form name="payForm" method="post" action="payResult.jsp"> -->
-<form name="payForm" method="post" action="payResultAjax.do">
+<!-- <form name="payForm" method="post" action="payResultAjax.do"> -->
+<form name="payForm" method="post" action="${mjonPayVO.returnURL}">
+<input type="hidden" id="pageType" value="${mjonPayVO.pageType}">
 <input type="hidden" name="PayMethod" value="${mjonPayVO.payMethod}">
 	<table class="payTable">
 		<!-- <tr>
src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayView.jsp
--- src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayView.jsp
@@ -314,14 +314,14 @@
 	setNextPayMethod();	
 	
 	var payMethod = "";
-	document.pgForm.action = "/web/member/pay/PayActionAjax.do";
+	document.pgForm.action = "/web/event/member/pay/firstEventPayActionAjax.do";
 	
 	if ($currentTab==0) {	
 		payMethod = "CARD";
 	} else if($currentTab==1) {	
 		payMethod = "VBANK";		
 	} else if($currentTab==2) {	
-		payMethod = "BANK";		
+		payMethod = "BANK";
 	} else {	
 		payMethod = "SPAY";
 	} 
@@ -361,7 +361,8 @@
 		// 전용계좌
 	} else if ($currentTab==2) {
 		// KG 모빌리언스 => BANK(즉시이체)
-		kgmPayBankRequest();		
+		firstEventKgmPayBankRequest();
+		// kgmPayMobileRequest()
 	} else {
 		var cnDirect = "";
 		var mstr = "";
@@ -380,16 +381,140 @@
 		}	
 		
 		// KG 모빌리언스 => SPAY(간편결제)
-		kgmPayCardRequest(cnDirect, mstr);		
+		kgmPaySpayRequest(cnDirect, mstr);		
 	}	
 
 }
 
-//KG 모빌리언스 => CARD
-function kgmPayCardRequest(cnDirect, mstr) {
+//KG 모빌리언스 => MOBILE
+function kgmPayMobileRequest() {
 	$.ajax({
         type: "POST",
-        url: "/web/member/pay/kgmCardEncodeAjax.do",
+        url: "/web/event/member/pay/firstEventKgmMobileEncodeAjax.do",
+        data: {"Prdtprice": $("#price").val()},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+        	if (data.status == "OK") {
+        		var vo = data.object
+				var form = document.payMobileForm;
+        		
+				form.CASH_GB.value		= vo.cash_gb;
+				form.Okurl.value		= vo.okurl;
+				form.MC_SVCID.value		= vo.mc_svcid;
+				form.Prdtnm.value		= vo.prdtnm;
+				form.Prdtprice.value	= vo.prdtprice;
+				form.Siteurl.value		= vo.siteurl;
+				form.PAY_MODE.value		= vo.pay_mode;
+				form.Tradeid.value		= vo.tradeid;
+				form.LOGO_YN.value		= vo.logo_yn;
+				form.CALL_TYPE.value	= vo.call_type;
+				form.MC_AUTHPAY.value	= vo.mc_authpay;
+				form.Notiurl.value		= vo.notiurl;
+				form.MC_AUTOPAY.value	= vo.mc_autopay;
+				form.Closeurl.value		= vo.closeurl;
+				form.MC_PARTPAY.value	= vo.mc_partpay;
+				form.Failurl.value		= vo.failurl;
+				form.MC_No.value		= vo.mc_no;
+				form.MC_FIXNO.value		= vo.mc_fixno;
+				form.MC_Cpcode.value	= vo.mc_cpcode;
+				form.Userid.value		= vo.userid;
+				form.Item.value			= vo.item;
+				form.Prdtcd.value		= vo.prdtcd;
+				form.Payeremail.value	= vo.payeremail;
+				form.MC_DEFAULTCOMMID.value	= vo.mc_defaultcommid;
+				form.MC_FIXCOMMID.value		= vo.mc_fixcommid;
+				form.MSTR.value				= vo.mstr;
+				form.Sellernm.value			= vo.sellernm;
+				form.Sellertel.value		= vo.sellertel;
+				form.Notiemail.value		= vo.notiemail;
+				form.IFRAME_NAME.value		= vo.iframe_name;
+				form.INFOAREA_YN.value		= vo.infoarea_yn;
+				form.FOOTER_YN.value		= vo.footer_yn;
+				form.HEIGHT.value			= vo.height;
+				form.PRDT_HIDDEN.value		= vo.prdt_hidden;
+				form.EMAIL_HIDDEN.value		= vo.email_hidden;
+				form.CONTRACT_HIDDEN.value	= vo.contract_hidden;
+				form.Cryptyn.value			= vo.cryptyn;
+				form.Cryptstring.value		= vo.cryptstring;
+				form.MC_EZ_YN.value			= vo.mc_ez_yn;
+				form.MC_EZ_KEY.value		= vo.mc_ez_key;
+				form.MC_PUSH_KEY.value		= vo.mc_push_key;
+				
+				//아래와 같이 ext_inc_comm.js에 선언되어 있는 함수를 호출
+				MCASH_PAYMENT(form);
+			} 
+			else {
+				alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });		
+}
+
+//KG 모빌리언스 => BANK(즉시이체)
+function firstEventKgmPayBankRequest() {
+	$.ajax({
+		type: "POST"
+		, url: "/web/event/member/pay/firstEventKgmBankEncodeAjax.do"
+		, data: {"Prdtprice": $("#price").val()}
+		, dataType:'json'
+		, success: function (data) {
+			if (data.status == "OK") {
+				var vo = data.object
+				var form = document.payBankForm;
+				
+				form.CASH_GB.value			= vo.cash_gb;
+				form.Okurl.value			= vo.okurl;
+				form.RA_SVCID.value			= vo.ra_svcid;
+				form.Prdtnm.value			= vo.prdtnm;
+				form.Prdtprice.value		= vo.prdtprice;
+				form.Siteurl.value			= vo.siteurl;
+				form.PAY_MODE.value			= vo.pay_mode;
+				form.Tradeid.value			= vo.tradeid;
+				form.LOGO_YN.value			= vo.logo_yn;
+				form.CALL_TYPE.value		= vo.call_type;
+				form.Notiurl.value			= vo.notiurl;
+				form.Closeurl.value			= vo.closeurl;
+				form.Failurl.value			= vo.failurl;
+				form.Userid.value			= vo.userid;
+				form.Item.value				= vo.item;
+				form.Prdtcd.value			= vo.prdtcd;
+				form.Payeremail.value		= vo.payeremail;
+				form.MSTR.value				= vo.mstr;
+				form.Notiemail.value		= vo.notiemail;
+				form.IFRAME_NAME.value		= vo.iframe_name;
+				form.INFOAREA_YN.value		= vo.infoarea_yn;
+				form.FOOTER_YN.value		= vo.footer_yn;
+				form.HEIGHT.value			= vo.height;
+				form.PRDT_HIDDEN.value		= vo.prdt_hidden;
+				form.EMAIL_HIDDEN.value		= vo.email_hidden;
+				form.CONTRACT_HIDDEN.value	= vo.contract_hidden;
+				form.Cryptyn.value			= vo.cryptyn;
+				form.Cryptstring.value		= vo.cryptstring;
+				form.Deposit.value			= vo.deposit;
+				form.Billyn.value			= "N";
+				
+				//아래와 같이 ext_inc_comm.js에 선언되어 있는 함수를 호출
+				MCASH_PAYMENT(form);
+			} 
+			else {
+				alert("Msg : " + data.msg);
+			}
+		},
+      error: function (e) { 
+      	alert("ERROR : " + JSON.stringify(e)); 
+      }
+  });		
+}
+
+//KG 모빌리언스 => SPAY(간편결제)
+function kgmPaySpayRequest(cnDirect, mstr) {
+	$.ajax({
+        type: "POST",
+        url: "/web/event/member/pay/firstEventKgmCardEncodeAjax.do",
         data: {"Prdtprice": $("#price").val()},
         dataType:'json',
         async: false,
@@ -440,126 +565,6 @@
     });		
 }
 
-//KG 모빌리언스 => MOBILE
-function kgmPayMobileRequest() {
-	$.ajax({
-        type: "POST",
-        url: "/web/member/pay/kgmMobileEncodeAjax.do",
-        data: {"Prdtprice": $("#price").val()},
-        dataType:'json',
-        async: false,
-        success: function (data) {
-			if (data.isSuccess) { 
-				var form = document.payMobileForm;
-				form.CASH_GB.value = data.CASH_GB;
-				form.Okurl.value = data.Okurl;
-				form.MC_SVCID.value = data.MC_SVCID;
-				form.Prdtnm.value = data.Prdtnm;
-				form.Prdtprice.value = data.Prdtprice;
-				form.Siteurl.value = data.Siteurl;
-				form.PAY_MODE.value = data.PAY_MODE;
-				form.Tradeid.value = data.Tradeid;
-				form.LOGO_YN.value = data.LOGO_YN;
-				form.CALL_TYPE.value = data.CALL_TYPE;
-				form.MC_AUTHPAY.value = data.MC_AUTHPAY;
-				form.Notiurl.value = data.Notiurl;
-				form.MC_AUTOPAY.value = data.MC_AUTOPAY;
-				form.Closeurl.value = data.Closeurl;
-				form.MC_PARTPAY.value = data.MC_PARTPAY;
-				form.Failurl.value = data.Failurl;
-				form.MC_No.value = data.MC_No;
-				form.MC_FIXNO.value = data.MC_FIXNO;
-				form.MC_Cpcode.value = data.MC_Cpcode;
-				form.Userid.value = data.Userid;
-				form.Item.value = data.Item;
-				form.Prdtcd.value = data.Prdtcd;
-				form.Payeremail.value = data.Payeremail;
-				form.MC_DEFAULTCOMMID.value = data.MC_DEFAULTCOMMID;
-				form.MC_FIXCOMMID.value = data.MC_FIXCOMMID;
-				form.MSTR.value = data.MSTR;
-				form.Sellernm.value = data.Sellernm;
-				form.Sellertel.value = data.Sellertel;
-				form.Notiemail.value = data.Notiemail;
-				form.IFRAME_NAME.value = data.IFRAME_NAME;
-				form.INFOAREA_YN.value = data.INFOAREA_YN;
-				form.FOOTER_YN.value = data.FOOTER_YN;
-				form.HEIGHT.value = data.HEIGHT;
-				form.PRDT_HIDDEN.value = data.PRDT_HIDDEN;
-				form.EMAIL_HIDDEN.value = data.EMAIL_HIDDEN;
-				form.CONTRACT_HIDDEN.value = data.CONTRACT_HIDDEN;
-				form.Cryptyn.value = data.Cryptyn;
-				form.Cryptstring.value = data.Cryptstring;
-				form.MC_EZ_YN.value = data.MC_EZ_YN;
-				form.MC_EZ_KEY.value = data.MC_EZ_KEY;
-				form.MC_PUSH_KEY.value = data.MC_PUSH_KEY;
-				
-				//아래와 같이 ext_inc_comm.js에 선언되어 있는 함수를 호출
-				MCASH_PAYMENT(form);
-			} 
-			else {
-				alert("Msg : " + data.msg);
-			}
-		},
-        error: function (e) { 
-        	alert("ERROR : " + JSON.stringify(e)); 
-        }
-    });		
-}
-
-//KG 모빌리언스 => BANK
-function kgmPayBankRequest() {
-	$.ajax({
-        type: "POST",
-        url: "/web/member/pay/kgmBankEncodeAjax.do",
-        data: {"Prdtprice": $("#price").val()},
-        dataType:'json',
-        async: false,
-        success: function (data) {
-			if (data.isSuccess) { 
-				var form = document.payBankForm;
-				form.CASH_GB.value = data.CASH_GB;
-				form.Okurl.value = data.Okurl;
-				form.RA_SVCID.value = data.RA_SVCID;
-				form.Prdtnm.value = data.Prdtnm;
-				form.Prdtprice.value = data.Prdtprice;
-				form.Siteurl.value = data.Siteurl;
-				form.PAY_MODE.value = data.PAY_MODE;
-				form.Tradeid.value = data.Tradeid;
-				form.LOGO_YN.value = data.LOGO_YN;
-				form.CALL_TYPE.value = data.CALL_TYPE;
-				form.Notiurl.value = data.Notiurl;
-				form.Closeurl.value = data.Closeurl;
-				form.Failurl.value = data.Failurl;
-				form.Userid.value = data.Userid;
-				form.Item.value = data.Item;
-				form.Prdtcd.value = data.Prdtcd;
-				form.Payeremail.value = data.Payeremail;
-				form.MSTR.value = data.MSTR;
-				form.Notiemail.value = data.Notiemail;
-				form.IFRAME_NAME.value = data.IFRAME_NAME;
-				form.INFOAREA_YN.value = data.INFOAREA_YN;
-				form.FOOTER_YN.value = data.FOOTER_YN;
-				form.HEIGHT.value = data.HEIGHT;
-				form.PRDT_HIDDEN.value = data.PRDT_HIDDEN;
-				form.EMAIL_HIDDEN.value = data.EMAIL_HIDDEN;
-				form.CONTRACT_HIDDEN.value = data.CONTRACT_HIDDEN;
-				form.Cryptyn.value = data.Cryptyn;
-				form.Cryptstring.value = data.Cryptstring;
-				form.Deposit.value = data.Deposit;
-				form.Billyn.value = "N";
-				
-				//아래와 같이 ext_inc_comm.js에 선언되어 있는 함수를 호출
-				MCASH_PAYMENT(form);
-			} 
-			else {
-				alert("Msg : " + data.msg);
-			}
-		},
-        error: function (e) { 
-        	alert("ERROR : " + JSON.stringify(e)); 
-        }
-    });		
-}
 
 // 사용안함
 function setPrice(obj, price){
@@ -913,17 +918,6 @@
         <div class="inner">
             <!-- send top -->
             <div class="send_top">
-                <!-- tab button -->
-                <!-- <ul class="tabType4">
-                    <li class="tab"><button type="button" onclick="location.href='/web/pay/PayGuide.do'">요금안내/견적내기</button></li>
-                    <li class="tab active"><button type="button">결제하기</button></li>
-                    <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayList.do'">요금 결제내역</button></li>
-                    <li class="tab"><button type="button" onclick="location.href='/web/member/pay/PayUserList.do'">요금 사용내역</button></li>
-					현금영수증 자동발행 주석
-					<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">계산서/현금영수증 발행 등록</button></li>
-					<li class="tab"><button type="button" onclick="location.href='/web/member/pay/BillPub.do'">세금계산서 발행 등록</button></li>
-                </ul> --><!--// tab button -->
-				<!-- 결제관리 - 결제하기 -->
                 <div class="serv_content charg_cont current" id="tab5_2">
                     <div class="heading">
                         <h2>이벤트 결제하기</h2>
@@ -953,7 +947,8 @@
 						<ul class="area_tab type03">
 							<li class="btn_charge1 btn_tab active"><button type="button" onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
 							<li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'2');" id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
-							<li class="btn_charge3 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>즉시이체</button></li>
+							<!-- <li class="btn_charge3 btn_tab"><button type="button" onclick="TabTypePay(this,'3');" id="btnDdedicatedAccount"><i></i>모바일 테스트</button></li> -->
+							<li class="btn_charge4 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>즉시이체</button></li>
 							
 							<li class="btn_charge5 btn_tab simple_pay event_simple"><button type="button" onclick="TabTypePay(this,'5');"><i></i></button></li>
 							<li class="btn_charge6 btn_tab simple_pay event_simple"><button type="button" onclick="TabTypePay(this,'6');"><i></i></button></li>
Add a comment
List