Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d5eae5670 | ||
|
|
094e8b6f7a | ||
|
|
6a04c5d6f2 | ||
|
|
97040318a0 | ||
|
|
6da0adae9d |
1160
src/main/java/itn/com/cmm/util/KgmPayUtil.java
Normal file
1160
src/main/java/itn/com/cmm/util/KgmPayUtil.java
Normal file
File diff suppressed because it is too large
Load Diff
231
src/main/java/itn/com/cmm/util/MjonPayUtil.java
Normal file
231
src/main/java/itn/com/cmm/util/MjonPayUtil.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
515
src/main/java/itn/com/cmm/util/NicePayUtil.java
Normal file
515
src/main/java/itn/com/cmm/util/NicePayUtil.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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 @@ public interface MjonEventService {
|
||||
//이벤트 정보 신규 추가(관리자가 강제로 입력)
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
@ -35,6 +40,18 @@ public class MjonEventServiceImpl extends EgovAbstractServiceImpl implements Mjo
|
||||
@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{
|
||||
return mjonEventDAO.selectEventInfoByNttSj(boardVO);
|
||||
@ -160,4 +177,112 @@ public class MjonEventServiceImpl extends EgovAbstractServiceImpl implements Mjo
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,34 +3,49 @@ package itn.let.mjo.event.web;
|
||||
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 {
|
||||
@ -50,6 +65,12 @@ public class MjonEventPayV2Controller {
|
||||
@Resource(name = "mjonPayService")
|
||||
private MjonPayService mjonPayService;
|
||||
|
||||
@Resource(name = "egovPgMoidGnrService")
|
||||
private EgovIdGnrService idgenPgMoid;
|
||||
|
||||
@Resource(name = "kgmPayUtil")
|
||||
KgmPayUtil kgmPayUtil;
|
||||
|
||||
|
||||
/**
|
||||
* 이벤트 결제하기 화면
|
||||
@ -76,15 +97,6 @@ public class MjonEventPayV2Controller {
|
||||
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;
|
||||
if(StringUtil.isNotEmpty(userId)) {
|
||||
@ -250,4 +262,285 @@ public class MjonEventPayV2Controller {
|
||||
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";
|
||||
}
|
||||
}
|
||||
|
||||
103
src/main/java/itn/let/mjo/pay/service/MjonKgmVO.java
Normal file
103
src/main/java/itn/let/mjo/pay/service/MjonKgmVO.java
Normal file
@ -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 = ""; //암호화 사용 시 암호화된 스트링
|
||||
}
|
||||
@ -236,8 +236,8 @@ public class MjonPayVO extends ComDefaultVO{
|
||||
|
||||
private int remainPoint;
|
||||
|
||||
|
||||
private String payType; // 결제분류
|
||||
private String totChgPay; // 간편결제분류
|
||||
|
||||
|
||||
private String rtnMsg;
|
||||
}
|
||||
|
||||
@ -119,7 +119,9 @@ html,body {overflow:hidden;}
|
||||
</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>
|
||||
|
||||
@ -314,14 +314,14 @@ function pgOpenerPopup(){
|
||||
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 @@ function pgOpenerPopup(){
|
||||
// 전용계좌
|
||||
} else if ($currentTab==2) {
|
||||
// KG 모빌리언스 => BANK(즉시이체)
|
||||
kgmPayBankRequest();
|
||||
firstEventKgmPayBankRequest();
|
||||
// kgmPayMobileRequest()
|
||||
} else {
|
||||
var cnDirect = "";
|
||||
var mstr = "";
|
||||
@ -380,16 +381,140 @@ function pgOpenerPopup(){
|
||||
}
|
||||
|
||||
// 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 @@ function kgmPayCardRequest(cnDirect, mstr) {
|
||||
});
|
||||
}
|
||||
|
||||
//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 @@ function TabTypePay(obj, tabId) {
|
||||
<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 @@ function TabTypePay(obj, tabId) {
|
||||
<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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user