이준호 전자조정시스템 고도화 커밋
- 기록열람 결제 - 송달정보 조회 원복
This commit is contained in:
parent
e0acf86c7f
commit
aba564faa7
@ -4,6 +4,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ import org.springframework.web.servlet.ModelAndView;
|
|||||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.io.JsonStringEncoder;
|
import com.fasterxml.jackson.core.io.JsonStringEncoder;
|
||||||
|
import com.inicis.std.util.SignatureUtil;
|
||||||
|
|
||||||
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||||
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||||
@ -40,8 +42,12 @@ import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService;
|
|||||||
import kcc.kccadr.accdnt.ars.service.AdjstReqStatusVO;
|
import kcc.kccadr.accdnt.ars.service.AdjstReqStatusVO;
|
||||||
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService;
|
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService;
|
||||||
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmVO;
|
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmVO;
|
||||||
|
import kcc.kccadr.adjPgrMgr.dlvinfo.service.DlvinfoService;
|
||||||
|
import kcc.kccadr.adjPgrMgr.dlvinfo.service.DlvinfoVO;
|
||||||
import kcc.kccadr.adjPgrMgr.exmp.app.service.ExmpAppManageService;
|
import kcc.kccadr.adjPgrMgr.exmp.app.service.ExmpAppManageService;
|
||||||
import kcc.kccadr.adjPgrMgr.exmp.cmm.ExmpManageVO;
|
import kcc.kccadr.adjPgrMgr.exmp.cmm.ExmpManageVO;
|
||||||
|
import kcc.kccadr.adjRppl.service.AdjRpplService;
|
||||||
|
import kcc.kccadr.adjRppl.service.AdjRpplVO;
|
||||||
import kcc.kccadr.adjclsmgr.service.AdjClsMgrService;
|
import kcc.kccadr.adjclsmgr.service.AdjClsMgrService;
|
||||||
import kcc.kccadr.adjclsmgr.service.AdjClsMgrVO;
|
import kcc.kccadr.adjclsmgr.service.AdjClsMgrVO;
|
||||||
import kcc.kccadr.advc.service.AdrHstryMgrService;
|
import kcc.kccadr.advc.service.AdrHstryMgrService;
|
||||||
@ -114,6 +120,24 @@ public class AdjstReqStatusController {
|
|||||||
// eGov 공통 메세지
|
// eGov 공통 메세지
|
||||||
@Resource(name = "egovMessageSource")
|
@Resource(name = "egovMessageSource")
|
||||||
EgovMessageSource egovMessageSource;
|
EgovMessageSource egovMessageSource;
|
||||||
|
|
||||||
|
@Resource(name = "dlvinfoService")
|
||||||
|
private DlvinfoService dlvinfoService;
|
||||||
|
|
||||||
|
@Resource(name = "adjRpplService")
|
||||||
|
private AdjRpplService adjRpplService;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.pay.mid']}")
|
||||||
|
private String global_mid;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.pay.signKey']}")
|
||||||
|
private String global_signKey;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.pay.siteDomain']}")
|
||||||
|
private String global_siteDomain;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 조정진행 상태 및 관리 목록 화면
|
* 조정진행 상태 및 관리 목록 화면
|
||||||
*/
|
*/
|
||||||
@ -303,6 +327,29 @@ public class AdjstReqStatusController {
|
|||||||
model.addAttribute("list_mgr" , adrHstryMgrService.selectList(adrHstryMgrVO));
|
model.addAttribute("list_mgr" , adrHstryMgrService.selectList(adrHstryMgrVO));
|
||||||
//이력값 - 끝
|
//이력값 - 끝
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 송달정보조회
|
||||||
|
* select
|
||||||
|
* */
|
||||||
|
DlvinfoVO dlvinfoVO = new DlvinfoVO();
|
||||||
|
dlvinfoVO.setAdrSeq(adjstReqStatusVO.getAdrSeq());
|
||||||
|
|
||||||
|
//로그인한 사용자 이름으로 등록된 송달 리스트 조회
|
||||||
|
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null;
|
||||||
|
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId());
|
||||||
|
String rpplNm = "";
|
||||||
|
if(!"".equals(userId)) {
|
||||||
|
AdjRpplVO adjRpplVO = new AdjRpplVO();
|
||||||
|
adjRpplVO.setAdrSeq(adjstReqStatusVO.getAdrSeq());
|
||||||
|
adjRpplVO.setRpplId(userId);
|
||||||
|
adjRpplVO = adjRpplService.selectAdjRpplInfo(adjRpplVO);
|
||||||
|
rpplNm = egovCryptoUtil.decrypt(adjRpplVO.getRpplNm());
|
||||||
|
dlvinfoVO.setRpplNm(rpplNm);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DlvinfoVO> dlvinfoList = dlvinfoService.selectAdjustDlvryList(dlvinfoVO);
|
||||||
|
|
||||||
|
model.addAttribute("dlvinfoList", dlvinfoList);
|
||||||
|
|
||||||
return "/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail";
|
return "/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail";
|
||||||
}
|
}
|
||||||
@ -520,6 +567,40 @@ public class AdjstReqStatusController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model.addAttribute("list", list);
|
model.addAttribute("list", list);
|
||||||
|
|
||||||
|
|
||||||
|
// ======================결제 시작===================
|
||||||
|
String mid = global_mid; // 상점아이디
|
||||||
|
String signKey = global_signKey; // 웹 결제 signkey
|
||||||
|
|
||||||
|
String mKey = SignatureUtil.hash(signKey, "SHA-256");
|
||||||
|
|
||||||
|
String timestamp = SignatureUtil.getTimestamp(); // util에 의해서 자동생성
|
||||||
|
String orderNumber = mid+"_"+SignatureUtil.getTimestamp(); // 가맹점 주문번호(가맹점에서 직접 설정)
|
||||||
|
String price = "10"; // 상품가격(특수기호 제외, 가맹점에서 직접 설정)
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, String> signParam = new HashMap<String, String>();
|
||||||
|
|
||||||
|
signParam.put("oid", orderNumber);
|
||||||
|
signParam.put("price", price);
|
||||||
|
signParam.put("timestamp", timestamp);
|
||||||
|
|
||||||
|
String signature = SignatureUtil.makeSignature(signParam);
|
||||||
|
|
||||||
|
/* 기타 */
|
||||||
|
String siteDomain = global_siteDomain; //가맹점 도메인 입력
|
||||||
|
|
||||||
|
model.addAttribute("mid", mid);
|
||||||
|
model.addAttribute("signKey", signKey);
|
||||||
|
model.addAttribute("mKey", mKey);
|
||||||
|
model.addAttribute("timestamp", timestamp);
|
||||||
|
model.addAttribute("orderNumber", orderNumber);
|
||||||
|
model.addAttribute("price", price);
|
||||||
|
model.addAttribute("signature", signature);
|
||||||
|
model.addAttribute("siteDomain", siteDomain);
|
||||||
|
|
||||||
|
// ======================결제 끝===================
|
||||||
|
|
||||||
return "/web/kccadr/accdnt/ars/tab/docIssReqList";
|
return "/web/kccadr/accdnt/ars/tab/docIssReqList";
|
||||||
}
|
}
|
||||||
|
|||||||
33
src/main/java/kcc/kccadr/adjst/service/PayService.java
Normal file
33
src/main/java/kcc/kccadr/adjst/service/PayService.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package kcc.kccadr.adjst.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
|
||||||
|
import kcc.kccadr.cmm.RestResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 결제를 위한 서비스
|
||||||
|
* @author 이준호
|
||||||
|
* @since 2022.11.3
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* << 개정이력(Modification Information) >>
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2022.11.3 이준호 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public interface PayService {
|
||||||
|
|
||||||
|
// 결제 결과 insert(map - 결제모듈 결과, tableNm - 사용테이블, tablePk1 - 사용테이블 pk1, tablePk2 - 사용테이블 pk2)
|
||||||
|
public int insertPayLog(Map<String,String> map, String tableNm, String tablePk1, String tablePk2, String userId) throws Exception;
|
||||||
|
|
||||||
|
}
|
||||||
270
src/main/java/kcc/kccadr/adjst/service/PayVO.java
Normal file
270
src/main/java/kcc/kccadr/adjst/service/PayVO.java
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
package kcc.kccadr.adjst.service;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
import kcc.com.cmm.ComDefaultVO;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
|
public class PayVO extends ComDefaultVO implements Serializable {
|
||||||
|
|
||||||
|
private String paySeq; //결재일련번호
|
||||||
|
private String asctnTable; //연관테이블
|
||||||
|
private String asctnTablePk1; //연관테이블 pk1
|
||||||
|
private String asctnTablePk2; //연관테이블 pk2
|
||||||
|
private String resultcode = "" ; //결과코드:0000(성공), 이외 오류
|
||||||
|
private String resultmsg = "" ; //결과메세지
|
||||||
|
private String tid = "" ; //거래번호
|
||||||
|
private String moid = "" ; //주문번호
|
||||||
|
private String totprice = "" ; //결제금액
|
||||||
|
private String goodname = "" ; //상품명
|
||||||
|
private String paymethod = "" ; //지불수단
|
||||||
|
private String appldate = "" ; //승인일자-YYYYMMDD
|
||||||
|
private String appltime = "" ; //승인시간-hh24miss
|
||||||
|
private String eventcode = "" ; //이벤트 코드, 카드 할부 및 행사 적용 코드0
|
||||||
|
private String buyername = "" ; //구매자명
|
||||||
|
private String buyertel = "" ; //구매자 휴대폰번호
|
||||||
|
private String buyeremail = "" ; //구매자 이메일주소
|
||||||
|
private String custemail = "" ; //최종 이메일주소
|
||||||
|
private String applnum = "" ; //승인번호
|
||||||
|
private String cardNum = "" ; //신용카드번호
|
||||||
|
private String cardInterest = "" ; //상점부담 무이자 할부여부-1:상점부담 무이자
|
||||||
|
private String cardQuota = "" ; //카드 할부기간
|
||||||
|
private String cardCode = "" ; //카드사 코드
|
||||||
|
private String cardCorpflag = "" ; //카드구분-0:개인카드, 1:법인카드, 9:구분불가
|
||||||
|
private String cardCheckflag = "" ; //카드종류-0:신용카드, 1:체크카드, 2:기프트카드
|
||||||
|
private String cardPrtccode = "" ; //부분취소 가능여부-1:가능, 0:불가능
|
||||||
|
private String cardBankcode = "" ; //카드발급사(은행) 코드
|
||||||
|
private String cardSrccode = "" ; //간편(앱)결제구분
|
||||||
|
private String cardPoint = "" ; //카드포인트 사용여부-빈값:카드 포인트 사용안함, 1:카드 포인트 사용
|
||||||
|
private String cardUsepoint = "" ; //포인트 사용금액
|
||||||
|
private String currency = "" ; //통화코드
|
||||||
|
private String orgprice = "" ; //달러 환전금액
|
||||||
|
private String frstRegistPnttm = "" ; //등록일시
|
||||||
|
private String frstRegisterId = "" ; //등록자
|
||||||
|
private String lastUpdtPnttm = "" ; //수정일시
|
||||||
|
private String lastUpdusrId = "" ; //수정자
|
||||||
|
|
||||||
|
|
||||||
|
public String getPaySeq() {
|
||||||
|
return paySeq;
|
||||||
|
}
|
||||||
|
public void setPaySeq(String paySeq) {
|
||||||
|
this.paySeq = paySeq;
|
||||||
|
}
|
||||||
|
public String getAsctnTable() {
|
||||||
|
return asctnTable;
|
||||||
|
}
|
||||||
|
public void setAsctnTable(String asctnTable) {
|
||||||
|
this.asctnTable = asctnTable;
|
||||||
|
}
|
||||||
|
public String getAsctnTablePk1() {
|
||||||
|
return asctnTablePk1;
|
||||||
|
}
|
||||||
|
public void setAsctnTablePk1(String asctnTablePk1) {
|
||||||
|
this.asctnTablePk1 = asctnTablePk1;
|
||||||
|
}
|
||||||
|
public String getAsctnTablePk2() {
|
||||||
|
return asctnTablePk2;
|
||||||
|
}
|
||||||
|
public void setAsctnTablePk2(String asctnTablePk2) {
|
||||||
|
this.asctnTablePk2 = asctnTablePk2;
|
||||||
|
}
|
||||||
|
public String getResultcode() {
|
||||||
|
return resultcode;
|
||||||
|
}
|
||||||
|
public void setResultcode(String resultcode) {
|
||||||
|
this.resultcode = resultcode;
|
||||||
|
}
|
||||||
|
public String getResultmsg() {
|
||||||
|
return resultmsg;
|
||||||
|
}
|
||||||
|
public void setResultmsg(String resultmsg) {
|
||||||
|
this.resultmsg = resultmsg;
|
||||||
|
}
|
||||||
|
public String getTid() {
|
||||||
|
return tid;
|
||||||
|
}
|
||||||
|
public void setTid(String tid) {
|
||||||
|
this.tid = tid;
|
||||||
|
}
|
||||||
|
public String getMoid() {
|
||||||
|
return moid;
|
||||||
|
}
|
||||||
|
public void setMoid(String moid) {
|
||||||
|
this.moid = moid;
|
||||||
|
}
|
||||||
|
public String getTotprice() {
|
||||||
|
return totprice;
|
||||||
|
}
|
||||||
|
public void setTotprice(String totprice) {
|
||||||
|
this.totprice = totprice;
|
||||||
|
}
|
||||||
|
public String getGoodname() {
|
||||||
|
return goodname;
|
||||||
|
}
|
||||||
|
public void setGoodname(String goodname) {
|
||||||
|
this.goodname = goodname;
|
||||||
|
}
|
||||||
|
public String getPaymethod() {
|
||||||
|
return paymethod;
|
||||||
|
}
|
||||||
|
public void setPaymethod(String paymethod) {
|
||||||
|
this.paymethod = paymethod;
|
||||||
|
}
|
||||||
|
public String getAppldate() {
|
||||||
|
return appldate;
|
||||||
|
}
|
||||||
|
public void setAppldate(String appldate) {
|
||||||
|
this.appldate = appldate;
|
||||||
|
}
|
||||||
|
public String getAppltime() {
|
||||||
|
return appltime;
|
||||||
|
}
|
||||||
|
public void setAppltime(String appltime) {
|
||||||
|
this.appltime = appltime;
|
||||||
|
}
|
||||||
|
public String getEventcode() {
|
||||||
|
return eventcode;
|
||||||
|
}
|
||||||
|
public void setEventcode(String eventcode) {
|
||||||
|
this.eventcode = eventcode;
|
||||||
|
}
|
||||||
|
public String getBuyername() {
|
||||||
|
return buyername;
|
||||||
|
}
|
||||||
|
public void setBuyername(String buyername) {
|
||||||
|
this.buyername = buyername;
|
||||||
|
}
|
||||||
|
public String getBuyertel() {
|
||||||
|
return buyertel;
|
||||||
|
}
|
||||||
|
public void setBuyertel(String buyertel) {
|
||||||
|
this.buyertel = buyertel;
|
||||||
|
}
|
||||||
|
public String getBuyeremail() {
|
||||||
|
return buyeremail;
|
||||||
|
}
|
||||||
|
public void setBuyeremail(String buyeremail) {
|
||||||
|
this.buyeremail = buyeremail;
|
||||||
|
}
|
||||||
|
public String getCustemail() {
|
||||||
|
return custemail;
|
||||||
|
}
|
||||||
|
public void setCustemail(String custemail) {
|
||||||
|
this.custemail = custemail;
|
||||||
|
}
|
||||||
|
public String getApplnum() {
|
||||||
|
return applnum;
|
||||||
|
}
|
||||||
|
public void setApplnum(String applnum) {
|
||||||
|
this.applnum = applnum;
|
||||||
|
}
|
||||||
|
public String getCardNum() {
|
||||||
|
return cardNum;
|
||||||
|
}
|
||||||
|
public void setCardNum(String cardNum) {
|
||||||
|
this.cardNum = cardNum;
|
||||||
|
}
|
||||||
|
public String getCardInterest() {
|
||||||
|
return cardInterest;
|
||||||
|
}
|
||||||
|
public void setCardInterest(String cardInterest) {
|
||||||
|
this.cardInterest = cardInterest;
|
||||||
|
}
|
||||||
|
public String getCardQuota() {
|
||||||
|
return cardQuota;
|
||||||
|
}
|
||||||
|
public void setCardQuota(String cardQuota) {
|
||||||
|
this.cardQuota = cardQuota;
|
||||||
|
}
|
||||||
|
public String getCardCode() {
|
||||||
|
return cardCode;
|
||||||
|
}
|
||||||
|
public void setCardCode(String cardCode) {
|
||||||
|
this.cardCode = cardCode;
|
||||||
|
}
|
||||||
|
public String getCardCorpflag() {
|
||||||
|
return cardCorpflag;
|
||||||
|
}
|
||||||
|
public void setCardCorpflag(String cardCorpflag) {
|
||||||
|
this.cardCorpflag = cardCorpflag;
|
||||||
|
}
|
||||||
|
public String getCardCheckflag() {
|
||||||
|
return cardCheckflag;
|
||||||
|
}
|
||||||
|
public void setCardCheckflag(String cardCheckflag) {
|
||||||
|
this.cardCheckflag = cardCheckflag;
|
||||||
|
}
|
||||||
|
public String getCardPrtccode() {
|
||||||
|
return cardPrtccode;
|
||||||
|
}
|
||||||
|
public void setCardPrtccode(String cardPrtccode) {
|
||||||
|
this.cardPrtccode = cardPrtccode;
|
||||||
|
}
|
||||||
|
public String getCardBankcode() {
|
||||||
|
return cardBankcode;
|
||||||
|
}
|
||||||
|
public void setCardBankcode(String cardBankcode) {
|
||||||
|
this.cardBankcode = cardBankcode;
|
||||||
|
}
|
||||||
|
public String getCardSrccode() {
|
||||||
|
return cardSrccode;
|
||||||
|
}
|
||||||
|
public void setCardSrccode(String cardSrccode) {
|
||||||
|
this.cardSrccode = cardSrccode;
|
||||||
|
}
|
||||||
|
public String getCardPoint() {
|
||||||
|
return cardPoint;
|
||||||
|
}
|
||||||
|
public void setCardPoint(String cardPoint) {
|
||||||
|
this.cardPoint = cardPoint;
|
||||||
|
}
|
||||||
|
public String getCardUsepoint() {
|
||||||
|
return cardUsepoint;
|
||||||
|
}
|
||||||
|
public void setCardUsepoint(String cardUsepoint) {
|
||||||
|
this.cardUsepoint = cardUsepoint;
|
||||||
|
}
|
||||||
|
public String getCurrency() {
|
||||||
|
return currency;
|
||||||
|
}
|
||||||
|
public void setCurrency(String currency) {
|
||||||
|
this.currency = currency;
|
||||||
|
}
|
||||||
|
public String getOrgprice() {
|
||||||
|
return orgprice;
|
||||||
|
}
|
||||||
|
public void setOrgprice(String orgprice) {
|
||||||
|
this.orgprice = orgprice;
|
||||||
|
}
|
||||||
|
public String getFrstRegistPnttm() {
|
||||||
|
return frstRegistPnttm;
|
||||||
|
}
|
||||||
|
public void setFrstRegistPnttm(String frstRegistPnttm) {
|
||||||
|
this.frstRegistPnttm = frstRegistPnttm;
|
||||||
|
}
|
||||||
|
public String getFrstRegisterId() {
|
||||||
|
return frstRegisterId;
|
||||||
|
}
|
||||||
|
public void setFrstRegisterId(String frstRegisterId) {
|
||||||
|
this.frstRegisterId = frstRegisterId;
|
||||||
|
}
|
||||||
|
public String getLastUpdtPnttm() {
|
||||||
|
return lastUpdtPnttm;
|
||||||
|
}
|
||||||
|
public void setLastUpdtPnttm(String lastUpdtPnttm) {
|
||||||
|
this.lastUpdtPnttm = lastUpdtPnttm;
|
||||||
|
}
|
||||||
|
public String getLastUpdusrId() {
|
||||||
|
return lastUpdusrId;
|
||||||
|
}
|
||||||
|
public void setLastUpdusrId(String lastUpdusrId) {
|
||||||
|
this.lastUpdusrId = lastUpdusrId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
15
src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java
Normal file
15
src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package kcc.kccadr.adjst.service.impl;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||||
|
import kcc.kccadr.adjst.service.PayVO;
|
||||||
|
|
||||||
|
@Repository("PayDAO")
|
||||||
|
public class PayDAO extends EgovAbstractDAO {
|
||||||
|
|
||||||
|
public int insertPayLog(PayVO payVO) throws Exception {
|
||||||
|
return (int) update("payDAO.insertPayLog", payVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
package kcc.kccadr.adjst.service.impl;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
|
import com.fasterxml.jackson.databind.MapperFeature;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||||
|
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||||
|
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||||
|
import kcc.com.cmm.LoginVO;
|
||||||
|
import kcc.com.utl.fcc.service.EgovStringUtil;
|
||||||
|
import kcc.kccadr.adjst.service.PayService;
|
||||||
|
import kcc.kccadr.adjst.service.PayVO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 결제를 위한 서비스
|
||||||
|
* @author 이준호
|
||||||
|
* @since 2022.11.3
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* << 개정이력(Modification Information) >>
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2022.11.3 이준호 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Service("PayService")
|
||||||
|
public class PayServiceImpl extends EgovAbstractServiceImpl implements PayService {
|
||||||
|
|
||||||
|
|
||||||
|
Logger log = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
|
// 조정사건이력관리 DAO
|
||||||
|
@Resource(name = "PayDAO")
|
||||||
|
private PayDAO payDAO;
|
||||||
|
|
||||||
|
// eGov 고유ID Generation
|
||||||
|
@Resource(name="payGnrService")
|
||||||
|
private EgovIdGnrService idgenService;
|
||||||
|
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(PayServiceImpl.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int insertPayLog(Map<String,String> map, String tableNm, String tablePk1, String tablePk2, String userId) throws Exception {
|
||||||
|
|
||||||
|
PayVO payVO = new PayVO();
|
||||||
|
|
||||||
|
String paySeq = idgenService.getNextStringId();
|
||||||
|
|
||||||
|
//map -> vo 매칭
|
||||||
|
ObjectMapper objMapper = new ObjectMapper();
|
||||||
|
// 매핑 시 대상이 없는 값 무시
|
||||||
|
objMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
// 매핑 시 대소문자 구분없이 매칭
|
||||||
|
objMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
|
||||||
|
payVO = objMapper.convertValue(map, PayVO.class);
|
||||||
|
|
||||||
|
payVO.setPaySeq(paySeq);
|
||||||
|
payVO.setAsctnTable(tableNm);
|
||||||
|
payVO.setAsctnTablePk1(tablePk1);
|
||||||
|
payVO.setAsctnTablePk2(tablePk2);
|
||||||
|
payVO.setFrstRegisterId(userId);
|
||||||
|
payVO.setLastUpdusrId(userId);
|
||||||
|
|
||||||
|
return payDAO.insertPayLog(payVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,10 +1,26 @@
|
|||||||
package kcc.kccadr.adjst.web;
|
package kcc.kccadr.adjst.web;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
import com.inicis.std.util.SignatureUtil;
|
||||||
|
|
||||||
|
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||||
|
import kcc.com.cmm.LoginVO;
|
||||||
|
import kcc.com.utl.fcc.service.EgovStringUtil;
|
||||||
|
import kcc.kccadr.adjst.service.PayService;
|
||||||
|
import kcc.kccadr.kccadrCom.web.PayUtill;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 대국민(사용자)
|
* 대국민(사용자)
|
||||||
* 조정신청에 관한 controller 클래스를 정의한다.
|
* 조정신청에 관한 controller 클래스를 정의한다.
|
||||||
@ -24,6 +40,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
public class InipayWebController {
|
public class InipayWebController {
|
||||||
|
|
||||||
|
@Resource(name="PayUtill")
|
||||||
|
private PayUtill payUtill;
|
||||||
|
|
||||||
|
@Resource(name="PayService")
|
||||||
|
private PayService payService;
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(InipayWebController.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(InipayWebController.class);
|
||||||
|
|
||||||
@ -43,7 +65,7 @@ public class InipayWebController {
|
|||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|
||||||
return "/web/kccadr/inipay/INIStdPayRequest";
|
return "/web/kccadr/inipay/INIStdPayRequest";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/web/kccadr/inipay/INIStdPayBill.do")
|
@RequestMapping("/web/kccadr/inipay/INIStdPayBill.do")
|
||||||
public String INIStdPayBill(
|
public String INIStdPayBill(
|
||||||
@ -77,4 +99,116 @@ public class InipayWebController {
|
|||||||
return "/web/kccadr/inipay/popup";
|
return "/web/kccadr/inipay/popup";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 기록 열람 신청 및 발급
|
||||||
|
* 신용카드 결제 요청 URL
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@RequestMapping("/web/kccadr/inipay/INIstdpayPcReq.do")
|
||||||
|
public String INIstdpayPcReq(ModelMap model
|
||||||
|
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
String mid = "INIpayTest"; // 상점아이디
|
||||||
|
String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS"; // 웹 결제 signkey
|
||||||
|
|
||||||
|
String mKey = SignatureUtil.hash(signKey, "SHA-256");
|
||||||
|
|
||||||
|
String timestamp = SignatureUtil.getTimestamp(); // util에 의해서 자동생성
|
||||||
|
String orderNumber = mid+"_"+SignatureUtil.getTimestamp(); // 가맹점 주문번호(가맹점에서 직접 설정)
|
||||||
|
String price = "10"; // 상품가격(특수기호 제외, 가맹점에서 직접 설정)
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, String> signParam = new HashMap<String, String>();
|
||||||
|
|
||||||
|
signParam.put("oid", orderNumber);
|
||||||
|
signParam.put("price", price);
|
||||||
|
signParam.put("timestamp", timestamp);
|
||||||
|
|
||||||
|
String signature = SignatureUtil.makeSignature(signParam);
|
||||||
|
|
||||||
|
/* 기타 */
|
||||||
|
String siteDomain = "http://127.0.0.1:8089/web/kccadr/inipay"; //가맹점 도메인 입력
|
||||||
|
|
||||||
|
model.addAttribute("mid", mid);
|
||||||
|
model.addAttribute("signKey", signKey);
|
||||||
|
model.addAttribute("mKey", mKey);
|
||||||
|
model.addAttribute("timestamp", timestamp);
|
||||||
|
model.addAttribute("orderNumber", orderNumber);
|
||||||
|
model.addAttribute("price", price);
|
||||||
|
model.addAttribute("signature", signature);
|
||||||
|
model.addAttribute("siteDomain", siteDomain);
|
||||||
|
|
||||||
|
return "/web/kccadr/inipay/INIstdpay_pc_req";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 기록 열람 신청 및 발급
|
||||||
|
* 신용카드 결제 리턴 URL
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@RequestMapping("/web/kccadr/inipay/INIstdpayPcReturn.do")
|
||||||
|
public String INIstdpayPcReturn(HttpServletRequest request, ModelMap model
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
HttpSession test = request.getSession();
|
||||||
|
|
||||||
|
LoginVO loginVO = (LoginVO) test.getAttribute("LoginVO");
|
||||||
|
|
||||||
|
if(loginVO == null) {
|
||||||
|
return "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* 1. try catch 끝난 후 adr_pay 테이블 db insert
|
||||||
|
* 2. 망취소 여부 변수(boolean)
|
||||||
|
* true(정상결제)
|
||||||
|
* false(정상결제 후 망취소)
|
||||||
|
* pram request, model
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
Map<String,String> map = payUtill.payProcessing(request, model);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 결제 결과
|
||||||
|
* 파라미터 :
|
||||||
|
* (
|
||||||
|
* map - 결제모듈 결과,
|
||||||
|
* tableNm - 사용테이블,
|
||||||
|
* tablePk1 - 사용테이블 pk1,
|
||||||
|
* tablePk2 - 사용테이블 pk2
|
||||||
|
* )
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
|
||||||
|
payService.insertPayLog(
|
||||||
|
map,
|
||||||
|
"adr_record_reading",
|
||||||
|
"record_reading_seq",
|
||||||
|
"adr_seq",
|
||||||
|
loginVO.getUniqId()
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return "/web/kccadr/inipay/INIstdpay_pc_return";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 기록 열람 신청 및 발급
|
||||||
|
* 신용카드 결제 닫기 URL
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@RequestMapping("/web/kccadr/inipay/INIstdpayClose.do")
|
||||||
|
public String INIstdpayClose(
|
||||||
|
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
return "/web/kccadr/inipay/close";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
233
src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java
Normal file
233
src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
package kcc.kccadr.kccadrCom.web;
|
||||||
|
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
|
||||||
|
import com.inicis.std.util.HttpUtil;
|
||||||
|
import com.inicis.std.util.ParseUtil;
|
||||||
|
import com.inicis.std.util.SignatureUtil;
|
||||||
|
|
||||||
|
@Component("PayUtill")
|
||||||
|
public class PayUtill {
|
||||||
|
|
||||||
|
public Map payProcessing(HttpServletRequest request, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
Boolean netCancleTorF = false;
|
||||||
|
|
||||||
|
Map<String, String> resultMap = new HashMap<String, String>();
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
//#############################
|
||||||
|
// 인증결과 파라미터 일괄 수신
|
||||||
|
//#############################
|
||||||
|
request.setCharacterEncoding("UTF-8");
|
||||||
|
|
||||||
|
Map<String,String> paramMap = new Hashtable<String,String>();
|
||||||
|
|
||||||
|
Enumeration elems = request.getParameterNames();
|
||||||
|
|
||||||
|
String temp = "";
|
||||||
|
|
||||||
|
while(elems.hasMoreElements())
|
||||||
|
{
|
||||||
|
temp = (String) elems.nextElement();
|
||||||
|
paramMap.put(temp, request.getParameter(temp));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("paramMap : "+ paramMap.toString());
|
||||||
|
|
||||||
|
|
||||||
|
if("0000".equals(paramMap.get("resultCode"))){
|
||||||
|
|
||||||
|
System.out.println("####인증성공/승인요청####");
|
||||||
|
|
||||||
|
//############################################
|
||||||
|
// 1.전문 필드 값 설정(***가맹점 개발수정***)
|
||||||
|
//############################################
|
||||||
|
|
||||||
|
String mid = paramMap.get("mid");
|
||||||
|
String timestamp= SignatureUtil.getTimestamp();
|
||||||
|
String charset = "UTF-8";
|
||||||
|
String format = "JSON";
|
||||||
|
String authToken= paramMap.get("authToken");
|
||||||
|
String authUrl = paramMap.get("authUrl");
|
||||||
|
String netCancel= paramMap.get("netCancelUrl");
|
||||||
|
String merchantData = paramMap.get("merchantData");
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 2.signature 생성
|
||||||
|
//#####################
|
||||||
|
Map<String, String> signParam = new HashMap<String, String>();
|
||||||
|
|
||||||
|
signParam.put("authToken", authToken); // 필수
|
||||||
|
signParam.put("timestamp", timestamp); // 필수
|
||||||
|
|
||||||
|
// signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash)
|
||||||
|
String signature = SignatureUtil.makeSignature(signParam);
|
||||||
|
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 3.API 요청 전문 생성
|
||||||
|
//#####################
|
||||||
|
Map<String, String> authMap = new Hashtable<String, String>();
|
||||||
|
|
||||||
|
authMap.put("mid" ,mid); // 필수
|
||||||
|
authMap.put("authToken" ,authToken); // 필수
|
||||||
|
authMap.put("signature" ,signature); // 필수
|
||||||
|
authMap.put("timestamp" ,timestamp); // 필수
|
||||||
|
authMap.put("charset" ,charset); // default=UTF-8
|
||||||
|
authMap.put("format" ,format); // default=XML
|
||||||
|
|
||||||
|
|
||||||
|
HttpUtil httpUtil = new HttpUtil();
|
||||||
|
|
||||||
|
try{
|
||||||
|
//#####################
|
||||||
|
// 4.API 통신 시작
|
||||||
|
//#####################
|
||||||
|
|
||||||
|
String authResultString = "";
|
||||||
|
|
||||||
|
authResultString = httpUtil.processHTTP(authMap, authUrl);
|
||||||
|
|
||||||
|
//############################################################
|
||||||
|
//5.API 통신결과 처리(***가맹점 개발수정***)
|
||||||
|
//############################################################
|
||||||
|
|
||||||
|
String test = authResultString.replace(",", "&").replace(":", "=").replace("\"", "").replace(" ","").replace("\n", "").replace("}", "").replace("{", "");
|
||||||
|
|
||||||
|
|
||||||
|
resultMap = ParseUtil.parseStringToMap(test); //문자열을 MAP형식으로 파싱
|
||||||
|
|
||||||
|
|
||||||
|
// 수신결과를 파싱후 resultCode가 "0000"이면 승인성공 이외 실패
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 이준호 테스트 강제 exception 망취소 - 데이터 확인
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
// if(true) {
|
||||||
|
// throw new Exception();
|
||||||
|
// }
|
||||||
|
|
||||||
|
netCancleTorF = true;
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
//####################################
|
||||||
|
// 실패시 처리(***가맹점 개발수정***)
|
||||||
|
//####################################
|
||||||
|
|
||||||
|
//---- db 저장 실패시 등 예외처리----//
|
||||||
|
System.out.println(ex);
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 망취소 API
|
||||||
|
//#####################
|
||||||
|
String netcancelResultString = httpUtil.processHTTP(authMap, netCancel); // 망취소 요청 API url(고정, 임의 세팅 금지)
|
||||||
|
|
||||||
|
System.out.println("## 망취소 API 결과 ##");
|
||||||
|
|
||||||
|
// 취소 결과 확인
|
||||||
|
System.out.println("<p>"+netcancelResultString.replaceAll("<", "<").replaceAll(">", ">")+"</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
resultMap.put("resultCode", paramMap.get("resultCode"));
|
||||||
|
resultMap.put("resultMsg", paramMap.get("resultMsg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
model.addAttribute("resultMap", resultMap);
|
||||||
|
|
||||||
|
resultMap = keyConvStyleClient(resultMap);
|
||||||
|
|
||||||
|
}catch(Exception e){
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void paySetting(HttpServletRequest request, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------map to VO 세팅------------------
|
||||||
|
public static HashMap keyConvStyleClient(HashMap map) {
|
||||||
|
|
||||||
|
Iterator<String> iterKey = map.keySet().iterator();
|
||||||
|
HashMap newMap = new HashMap();
|
||||||
|
while (iterKey.hasNext()) {
|
||||||
|
String key = iterKey.next();
|
||||||
|
String typeName = map.get(key).getClass().getSimpleName();
|
||||||
|
if (typeName.indexOf("List") >= 0) { // 리스트로 간주.
|
||||||
|
List<Map> newList = new LinkedList<Map>();
|
||||||
|
List subList = (List) map.get(key);
|
||||||
|
for (int i = 0; i < subList.size(); i++) {
|
||||||
|
Map subItem = (Map) subList.get(i);
|
||||||
|
newList.add(keyConvStyleClient(subItem));
|
||||||
|
}
|
||||||
|
newMap.put(convertVariableRevert(key), newList);
|
||||||
|
} else {
|
||||||
|
newMap.put(convertVariableRevert(key), map.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map keyConvStyleClient(Map map) {
|
||||||
|
|
||||||
|
Iterator<String> iterKey = map.keySet().iterator();
|
||||||
|
Map newMap = new HashMap();
|
||||||
|
while (iterKey.hasNext()) {
|
||||||
|
String key = iterKey.next();
|
||||||
|
String typeName = map.get(key).getClass().getSimpleName();
|
||||||
|
if (typeName.indexOf("List") >= 0) { // 리스트로 간주.
|
||||||
|
List<Map> newList = new LinkedList<Map>();
|
||||||
|
List subList = (List) map.get(key);
|
||||||
|
for (int i = 0; i < subList.size(); i++) {
|
||||||
|
Map subItem = (Map) subList.get(i);
|
||||||
|
newList.add(keyConvStyleClient(subItem));
|
||||||
|
}
|
||||||
|
newMap.put(convertVariableRevert(key), newList);
|
||||||
|
} else {
|
||||||
|
newMap.put(convertVariableRevert(key), map.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String convertVariableRevert(String key) {
|
||||||
|
StringBuffer sb = new StringBuffer(); // 새로 생성
|
||||||
|
for (int i = 0; i < key.length(); i++) {
|
||||||
|
String str = String.valueOf(key.charAt(i));
|
||||||
|
if (str.equals("_")) {
|
||||||
|
sb.append(String.valueOf(key.charAt(i + 1)).toUpperCase());
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
sb.append(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
// ----------------map to VO 세팅 끝------------------
|
||||||
|
|
||||||
|
}
|
||||||
@ -177,4 +177,18 @@ Globals.ozFontPath=/home/oz80/fontTestDir/
|
|||||||
#Globals.ozFontPath=/home/oz80/fontTestDir/
|
#Globals.ozFontPath=/home/oz80/fontTestDir/
|
||||||
|
|
||||||
#\uc624\uc988\ub9ac\ud3ec\ud2b8 \ud3f0\ud2b8 \uc885\ub958
|
#\uc624\uc988\ub9ac\ud3ec\ud2b8 \ud3f0\ud2b8 \uc885\ub958
|
||||||
Globals.ozFont=NanumSquareR.ttf
|
Globals.ozFont=NanumSquareR.ttf
|
||||||
|
|
||||||
|
#\ub300\uc6a9\ub7c9 innorix filePath
|
||||||
|
Globals.Innorix.FilePath=D:\\usr\\local\\tomcat\\file\\sht\\
|
||||||
|
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
Globals.pay.mid=INIpayTest
|
||||||
|
Globals.pay.signKey=SU5JTElURV9UUklQTEVERVNfS0VZU1RS
|
||||||
|
Globals.pay.siteDomain=http://119.193.215.98:8087/web/kccadr/inipay
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#Globals.pay.mid=crosorkr01
|
||||||
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
@ -177,4 +177,18 @@ Globals.ozFontPath=/home/oz80/fontTestDir/
|
|||||||
#Globals.ozFontPath=/home/oz80/fontTestDir/
|
#Globals.ozFontPath=/home/oz80/fontTestDir/
|
||||||
|
|
||||||
#\uc624\uc988\ub9ac\ud3ec\ud2b8 \ud3f0\ud2b8 \uc885\ub958
|
#\uc624\uc988\ub9ac\ud3ec\ud2b8 \ud3f0\ud2b8 \uc885\ub958
|
||||||
Globals.ozFont=NanumSquareR.ttf
|
Globals.ozFont=NanumSquareR.ttf
|
||||||
|
|
||||||
|
#\ub300\uc6a9\ub7c9 innorix filePath
|
||||||
|
Globals.Innorix.FilePath=D:\\usr\\local\\tomcat\\file\\sht\\
|
||||||
|
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
Globals.pay.mid=INIpayTest
|
||||||
|
Globals.pay.signKey=SU5JTElURV9UUklQTEVERVNfS0VZU1RS
|
||||||
|
Globals.pay.siteDomain=http://119.193.215.98:8087/web/kccadr/inipay
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#Globals.pay.mid=crosorkr01
|
||||||
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
@ -181,3 +181,14 @@ Globals.ozFont=NanumSquareR.ttf
|
|||||||
|
|
||||||
#\ub300\uc6a9\ub7c9 innorix filePath
|
#\ub300\uc6a9\ub7c9 innorix filePath
|
||||||
Globals.Innorix.FilePath=D:\\usr\\local\\tomcat\\file\\sht\\
|
Globals.Innorix.FilePath=D:\\usr\\local\\tomcat\\file\\sht\\
|
||||||
|
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
Globals.pay.mid=INIpayTest
|
||||||
|
Globals.pay.signKey=SU5JTElURV9UUklQTEVERVNfS0VZU1RS
|
||||||
|
Globals.pay.siteDomain=http://119.193.215.98:8087/web/kccadr/inipay
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#Globals.pay.mid=crosorkr01
|
||||||
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
@ -178,4 +178,15 @@ Globals.ozFontPath=/home/oz80/fontTestDir/
|
|||||||
Globals.ozFont=NanumSquareR.ttf
|
Globals.ozFont=NanumSquareR.ttf
|
||||||
|
|
||||||
#\ub300\uc6a9\ub7c9 innorix filePath
|
#\ub300\uc6a9\ub7c9 innorix filePath
|
||||||
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
|
Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/
|
||||||
|
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
Globals.pay.mid=INIpayTest
|
||||||
|
Globals.pay.signKey=SU5JTElURV9UUklQTEVERVNfS0VZU1RS
|
||||||
|
Globals.pay.siteDomain=http://119.193.215.98:8087/web/kccadr/inipay
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
#inipay \uacb0\uc81c
|
||||||
|
#Globals.pay.mid=crosorkr01
|
||||||
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
@ -2881,5 +2881,23 @@
|
|||||||
<property name="fillChar" value="0" />
|
<property name="fillChar" value="0" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<!-- 결재로그 ID Generation Config-->
|
||||||
|
<bean name="payGnrService"
|
||||||
|
class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl"
|
||||||
|
destroy-method="destroy">
|
||||||
|
<property name="dataSource" ref="dataSource" />
|
||||||
|
<property name="strategy" ref="payStrategy" />
|
||||||
|
<property name="blockSize" value="10"/>
|
||||||
|
<property name="table" value="IDS"/>
|
||||||
|
<property name="tableName" value="PAYLOG_ID"/>
|
||||||
|
</bean>
|
||||||
|
<!-- 결재로그 ID Generation Strategy Config -->
|
||||||
|
<bean name="payStrategy"
|
||||||
|
class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
|
||||||
|
<property name="prefix" value="PAYLOG_" />
|
||||||
|
<property name="cipers" value="13" />
|
||||||
|
<property name="fillChar" value="0" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
<security:http pattern="/js/**" security="none"/>
|
<security:http pattern="/js/**" security="none"/>
|
||||||
<security:http pattern="/resource/**" security="none"/>
|
<security:http pattern="/resource/**" security="none"/>
|
||||||
<security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/>
|
<security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/>
|
||||||
|
<security:http pattern="/web/kccadr/inipay/**" security="none"/>
|
||||||
|
|
||||||
<egov-security:config id="securityConfig"
|
<egov-security:config id="securityConfig"
|
||||||
loginUrl="/uat/uia/actionMain.do"
|
loginUrl="/uat/uia/actionMain.do"
|
||||||
|
|||||||
@ -5,4 +5,5 @@
|
|||||||
<sqlMapConfig>
|
<sqlMapConfig>
|
||||||
<sqlMap resource="egovframework/sqlmap/kccadr/Xxx_SQL_Mysql.xml"/><!-- XXX -->
|
<sqlMap resource="egovframework/sqlmap/kccadr/Xxx_SQL_Mysql.xml"/><!-- XXX -->
|
||||||
<sqlMap resource="egovframework/sqlmap/kccadr/adjst/AdjstReq_SQL_Mysql.xml"/><!-- 대국민 조정신청 -->
|
<sqlMap resource="egovframework/sqlmap/kccadr/adjst/AdjstReq_SQL_Mysql.xml"/><!-- 대국민 조정신청 -->
|
||||||
|
<sqlMap resource="egovframework/sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml"/><!-- 결제로그 -->
|
||||||
</sqlMapConfig>
|
</sqlMapConfig>
|
||||||
|
|||||||
@ -0,0 +1,217 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
|
||||||
|
<!-- 결제로그 -->
|
||||||
|
<sqlMap namespace="Pay">
|
||||||
|
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
|
||||||
|
<typeAlias alias="PayVO" type="kcc.kccadr.adjst.service.PayVO"/>
|
||||||
|
|
||||||
|
<update id="payDAO.insertPayLog" parameterClass="PayVO">
|
||||||
|
|
||||||
|
INSERT
|
||||||
|
INTO adr_pay
|
||||||
|
(
|
||||||
|
pay_seq,
|
||||||
|
<isNotEmpty property="asctnTable">
|
||||||
|
asctn_table,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="asctnTablePk1">
|
||||||
|
asctn_table_pk1,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="asctnTablePk2">
|
||||||
|
asctn_table_pk2,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="resultcode">
|
||||||
|
resultcode,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="resultmsg">
|
||||||
|
resultmsg,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="tid">
|
||||||
|
tid,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="moid">
|
||||||
|
moid,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="totprice">
|
||||||
|
totprice,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="goodname">
|
||||||
|
goodname,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="paymethod">
|
||||||
|
paymethod,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="appldate">
|
||||||
|
appldate,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="appltime">
|
||||||
|
appltime,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="eventcode">
|
||||||
|
eventcode,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyername">
|
||||||
|
buyername,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyertel">
|
||||||
|
buyertel,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyeremail">
|
||||||
|
buyeremail,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="custemail">
|
||||||
|
custemail,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="applnum">
|
||||||
|
applnum,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardNum">
|
||||||
|
card_num,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardInterest">
|
||||||
|
card_interest,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardQuota">
|
||||||
|
card_quota,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCode">
|
||||||
|
card_code,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCorpflag">
|
||||||
|
card_corpflag,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCheckflag">
|
||||||
|
card_checkflag,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardPrtccode">
|
||||||
|
card_prtccode,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardBankcode">
|
||||||
|
card_bankcode,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardSrccode">
|
||||||
|
card_srccode,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardPoint">
|
||||||
|
card_point,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardUsepoint">
|
||||||
|
card_usepoint,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="currency">
|
||||||
|
currency,
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="orgprice">
|
||||||
|
orgprice,
|
||||||
|
</isNotEmpty>
|
||||||
|
frst_regist_pnttm,
|
||||||
|
frst_register_id,
|
||||||
|
last_updt_pnttm,
|
||||||
|
last_updusr_id
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
#paySeq#
|
||||||
|
<isNotEmpty property="asctnTable">
|
||||||
|
, #asctnTable#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="asctnTablePk1">
|
||||||
|
, #asctnTablePk1#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="asctnTablePk2">
|
||||||
|
, #asctnTablePk2#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="resultcode">
|
||||||
|
, #resultcode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="resultmsg">
|
||||||
|
, #resultmsg#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="tid">
|
||||||
|
, #tid#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="moid">
|
||||||
|
, #moid#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="totprice">
|
||||||
|
, #totprice#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="goodname">
|
||||||
|
, #goodname#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="paymethod">
|
||||||
|
, #paymethod#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="appldate">
|
||||||
|
, #appldate#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="appltime">
|
||||||
|
, #appltime#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="eventcode">
|
||||||
|
, #eventcode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyername">
|
||||||
|
, #buyername#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyertel">
|
||||||
|
, #buyertel#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="buyeremail">
|
||||||
|
, #buyeremail#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="custemail">
|
||||||
|
, #custemail#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="applnum">
|
||||||
|
, #applnum#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardNum">
|
||||||
|
, #cardNum#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardInterest">
|
||||||
|
, #cardInterest#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardQuota">
|
||||||
|
, #cardQuota#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCode">
|
||||||
|
, #cardCode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCorpflag">
|
||||||
|
, #cardCorpflag#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardCheckflag">
|
||||||
|
, #cardCheckflag#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardPrtccode">
|
||||||
|
, #cardPrtccode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardBankcode">
|
||||||
|
, #cardBankcode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardSrccode">
|
||||||
|
, #cardSrccode#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardPoint">
|
||||||
|
, #cardPoint#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="cardUsepoint">
|
||||||
|
, #cardUsepoint#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="currency">
|
||||||
|
, #currency#
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="orgprice">
|
||||||
|
, #orgprice#
|
||||||
|
</isNotEmpty>
|
||||||
|
, now()
|
||||||
|
, #frstRegisterId#
|
||||||
|
, now()
|
||||||
|
, #lastUpdusrId#
|
||||||
|
)
|
||||||
|
|
||||||
|
</update>
|
||||||
|
|
||||||
|
|
||||||
|
</sqlMap>
|
||||||
@ -121,6 +121,7 @@
|
|||||||
<pattern>/web/kccadr/adjst/adjstReqRegistTutorial.do</pattern>
|
<pattern>/web/kccadr/adjst/adjstReqRegistTutorial.do</pattern>
|
||||||
<pattern>/web/kccadr/accdnt/ai/docIssReqRegistPop.do</pattern>
|
<pattern>/web/kccadr/accdnt/ai/docIssReqRegistPop.do</pattern>
|
||||||
|
|
||||||
|
<pattern>/web/kccadr/inipay/*</pattern> <!-- 결재 모듈 테스트 -->
|
||||||
</decorator>
|
</decorator>
|
||||||
|
|
||||||
<!-- 관리자 게시글 작성, 템플릿 미리보기(헤더풋터 없음) -->
|
<!-- 관리자 게시글 작성, 템플릿 미리보기(헤더풋터 없음) -->
|
||||||
|
|||||||
@ -29,6 +29,15 @@
|
|||||||
<script src="/kccadrPb/usr/datepicker/legacy.js"></script>
|
<script src="/kccadrPb/usr/datepicker/legacy.js"></script>
|
||||||
<script src="/kccadrPb/usr/datepicker/ko_KR.js"></script>
|
<script src="/kccadrPb/usr/datepicker/ko_KR.js"></script>
|
||||||
|
|
||||||
|
<!--테스트 JS--><script language="javascript" type="text/javascript" src="https://stgstdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
|
||||||
|
<!--운영 JS> <script language="javascript" type="text/javascript" src="https://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script> -->
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function paybtn() {
|
||||||
|
INIStdPay.pay('SendPayForm_id');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script type="text/javaScript" language="javascript">
|
<script type="text/javaScript" language="javascript">
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
@ -88,6 +97,26 @@
|
|||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<form name="" id="SendPayForm_id" method="post" class="mt-5">
|
||||||
|
<input type="hidden" name="version" value="1.0">
|
||||||
|
<input type="text" name="gopaymethod" value="Card">
|
||||||
|
<input type="text" name="mid" value="<c:out value='${mid}'/>">
|
||||||
|
<input type="text" name="oid" value="<c:out value='${orderNumber}'/>">
|
||||||
|
<input type="text" name="price" value="<c:out value='${price}'/>">
|
||||||
|
<input type="text" name="timestamp" value="<c:out value='${timestamp}'/>">
|
||||||
|
<input type="hidden" name="signature" value="<c:out value='${signature}'/>">
|
||||||
|
<input type="hidden" name="mKey" value="<c:out value='${mKey}'/>">
|
||||||
|
<input type="hidden" name="currency" value="WON">
|
||||||
|
<input type="text" name="goodname" value="테스트상품">
|
||||||
|
<input type="text" name="buyername" value="테스터">
|
||||||
|
<input type="text" name="buyertel" value="01012345678">
|
||||||
|
<input type="text" name="buyeremail" value="test@test.com">
|
||||||
|
<input type="hidden" name="returnUrl" value="http://119.193.215.98:8087/web/kccadr/inipay/INIstdpayPcReturn.do">
|
||||||
|
<input type="hidden" name="closeUrl" value="http://119.193.215.98:8087/web/kccadr/inipay/INIstdpayClose.do">
|
||||||
|
<input type="text" name="acceptmethod" value="HPP(1):below1000:va_receipt:SKIN(#6666FF)">
|
||||||
|
</form>
|
||||||
|
|
||||||
<form:form id="listForm" name="listForm" commandName="adrRecordReadingVO" onsubmit="return false;" method="post">
|
<form:form id="listForm" name="listForm" commandName="adrRecordReadingVO" onsubmit="return false;" method="post">
|
||||||
<input type="hidden" name="pageIndex" value="<c:out value='${adrRecordReadingVO.pageIndex}' default='1' />"/>
|
<input type="hidden" name="pageIndex" value="<c:out value='${adrRecordReadingVO.pageIndex}' default='1' />"/>
|
||||||
<input type="hidden" name="searchSortCnd" value="<c:out value="${adrRecordReadingVO.searchSortCnd}" />" />
|
<input type="hidden" name="searchSortCnd" value="<c:out value="${adrRecordReadingVO.searchSortCnd}" />" />
|
||||||
@ -194,7 +223,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${list.prcsnStatCd eq '10'}">
|
<c:when test="${list.prcsnStatCd eq '10'}">
|
||||||
<button type="button" class="btnType10">수수료결제</button>
|
<button type="button" class="btnType10" onclick="paybtn()">수수료결제</button>
|
||||||
<button type="button" class="btnType10" onclick="fncDeleteReq('<c:out value="${list.recordReadingSeq}" />');">삭제</button>
|
<button type="button" class="btnType10" onclick="fncDeleteReq('<c:out value="${list.recordReadingSeq}" />');">삭제</button>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${list.prcsnStatCd eq '20'}">
|
<c:when test="${list.prcsnStatCd eq '20'}">
|
||||||
|
|||||||
@ -0,0 +1,162 @@
|
|||||||
|
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%-- <%
|
||||||
|
|
||||||
|
String mid = "INIpayTest"; // 상점아이디
|
||||||
|
String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS"; // 웹 결제 signkey
|
||||||
|
|
||||||
|
String mKey = SignatureUtil.hash(signKey, "SHA-256");
|
||||||
|
|
||||||
|
String timestamp = SignatureUtil.getTimestamp(); // util에 의해서 자동생성
|
||||||
|
String orderNumber = mid+"_"+SignatureUtil.getTimestamp(); // 가맹점 주문번호(가맹점에서 직접 설정)
|
||||||
|
String price = "1000"; // 상품가격(특수기호 제외, 가맹점에서 직접 설정)
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, String> signParam = new HashMap<String, String>();
|
||||||
|
|
||||||
|
signParam.put("oid", orderNumber);
|
||||||
|
signParam.put("price", price);
|
||||||
|
signParam.put("timestamp", timestamp);
|
||||||
|
|
||||||
|
String signature = SignatureUtil.makeSignature(signParam);
|
||||||
|
|
||||||
|
/* 기타 */
|
||||||
|
String siteDomain = "http://127.0.0.1:8089/web/kccadr/inipay"; //가맹점 도메인 입력
|
||||||
|
%> --%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<title>KG이니시스 결제샘플</title>
|
||||||
|
<link rel="stylesheet" href="/css/inicis/style.css">
|
||||||
|
<link rel="stylesheet" href="/css/inicis/bootstrap.min.css">
|
||||||
|
|
||||||
|
<!--테스트 JS--><script language="javascript" type="text/javascript" src="https://stgstdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
|
||||||
|
<!--운영 JS> <script language="javascript" type="text/javascript" src="https://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script> -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
function paybtn() {
|
||||||
|
INIStdPay.pay('SendPayForm_id');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wrap">
|
||||||
|
|
||||||
|
<!-- 본문 -->
|
||||||
|
<main class="col-8 cont" id="bill-01">
|
||||||
|
<!-- 페이지타이틀 -->
|
||||||
|
<section class="mb-5">
|
||||||
|
<div class="tit">
|
||||||
|
<h2>일반결제</h2>
|
||||||
|
<p>KG이니시스 결제창을 호출하여 다양한 지불수단으로 안전한 결제를 제공하는 서비스</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- //페이지타이틀 -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 카드CONTENTS -->
|
||||||
|
<section class="menu_cont mb-5">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card_tit">
|
||||||
|
<h3>PC 일반결제</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 유의사항 -->
|
||||||
|
<div class="card_desc">
|
||||||
|
<h4>※ 유의사항</h4>
|
||||||
|
<ul>
|
||||||
|
<li>테스트MID 결제시 실 승인되며, 당일 자정(24:00) 이전에 자동으로 취소처리 됩니다.</li>
|
||||||
|
<li>가상계좌 채번 후 입금할 경우 자동환불되지 않사오니, 가맹점관리자 내 "입금통보테스트" 메뉴를 이용부탁드립니다.<br>(실 입금하신 경우 별도로 환불요청해주셔야 합니다.)</li>
|
||||||
|
<li>국민카드 정책상 테스트 결제가 불가하여 오류가 발생될 수 있습니다. 국민, 카카오뱅크 외 다른 카드로 테스트결제 부탁드립니다.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //유의사항 -->
|
||||||
|
|
||||||
|
|
||||||
|
<form name="" id="SendPayForm_id" method="post" class="mt-5">
|
||||||
|
<div class="row g-3 justify-content-between" style="--bs-gutter-x:0rem;">
|
||||||
|
|
||||||
|
<!--label class="col-10 col-sm-2 gap-2 input param" style="border:none;">version</label>
|
||||||
|
<label class="col-10 col-sm-9 input"-->
|
||||||
|
<input type="hidden" name="version" value="1.0">
|
||||||
|
<!--/label-->
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">gopaymethod</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<!-- <input type="text" name="gopaymethod" value="Card:Directbank:vbank"> -->
|
||||||
|
<input type="text" name="gopaymethod" value="Card">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">mid</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="mid" value="<c:out value='${mid}'/>">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">oid</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="oid" value="<c:out value='${orderNumber}'/>">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">price</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="price" value="<c:out value='${price}'/>">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">timestamp</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="timestamp" value="<c:out value='${timestamp}'/>">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
<input type="hidden" name="signature" value="<c:out value='${signature}'/>">
|
||||||
|
<input type="hidden" name="mKey" value="<c:out value='${mKey}'/>">
|
||||||
|
<input type="hidden" name="currency" value="WON">
|
||||||
|
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">goodname</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="goodname" value="테스트상품">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">buyername</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="buyername" value="테스터">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">buyertel</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="buyertel" value="01012345678">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">buyeremail</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="buyeremail" value="test@test.com">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<%-- <input type="hidden" name="returnUrl" value="<%=siteDomain%>/INIstdpay_pc_return.jsp"> --%>
|
||||||
|
<input type="hidden" name="returnUrl" value="http://119.193.215.98:8087/web/kccadr/inipay/INIstdpayPcReturn.do">
|
||||||
|
<%-- <input type="hidden" name="closeUrl" value="<%=siteDomain%>/INIstdpayClose.do"> --%>
|
||||||
|
<input type="hidden" name="closeUrl" value="http://119.193.215.98:8087/web/kccadr/inipay/INIstdpayClose.do">
|
||||||
|
<%-- <input type="hidden" name="closeUrl" value="<%=siteDomain%>/close.jsp"> --%>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">acceptmethod</label>
|
||||||
|
<label class="col-10 col-sm-9 input">
|
||||||
|
<input type="text" name="acceptmethod" value="HPP(1):below1000:va_receipt:SKIN(#6666FF)">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<button onclick="paybtn()" class="btn_solid_pri col-6 mx-auto btn_lg" style="margin-top:50px">결제 요청</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,237 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%-- <%@ page import="com.inicis.std.util.ParseUtil"%>
|
||||||
|
<%@ page import="com.inicis.std.util.SignatureUtil"%>
|
||||||
|
<%@ page import="com.inicis.std.util.HttpUtil"%>
|
||||||
|
<%@ page import="java.util.*"%> --%>
|
||||||
|
<%-- <%
|
||||||
|
|
||||||
|
Map<String, String> resultMap = new HashMap<String, String>();
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
//#############################
|
||||||
|
// 인증결과 파라미터 일괄 수신
|
||||||
|
//#############################
|
||||||
|
request.setCharacterEncoding("UTF-8");
|
||||||
|
|
||||||
|
Map<String,String> paramMap = new Hashtable<String,String>();
|
||||||
|
|
||||||
|
Enumeration elems = request.getParameterNames();
|
||||||
|
|
||||||
|
String temp = "";
|
||||||
|
|
||||||
|
while(elems.hasMoreElements())
|
||||||
|
{
|
||||||
|
temp = (String) elems.nextElement();
|
||||||
|
paramMap.put(temp, request.getParameter(temp));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("paramMap : "+ paramMap.toString());
|
||||||
|
|
||||||
|
|
||||||
|
if("0000".equals(paramMap.get("resultCode"))){
|
||||||
|
|
||||||
|
System.out.println("####인증성공/승인요청####");
|
||||||
|
|
||||||
|
//############################################
|
||||||
|
// 1.전문 필드 값 설정(***가맹점 개발수정***)
|
||||||
|
//############################################
|
||||||
|
|
||||||
|
String mid = paramMap.get("mid");
|
||||||
|
String timestamp= SignatureUtil.getTimestamp();
|
||||||
|
String charset = "UTF-8";
|
||||||
|
String format = "JSON";
|
||||||
|
String authToken= paramMap.get("authToken");
|
||||||
|
String authUrl = paramMap.get("authUrl");
|
||||||
|
String netCancel= paramMap.get("netCancelUrl");
|
||||||
|
String merchantData = paramMap.get("merchantData");
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 2.signature 생성
|
||||||
|
//#####################
|
||||||
|
Map<String, String> signParam = new HashMap<String, String>();
|
||||||
|
|
||||||
|
signParam.put("authToken", authToken); // 필수
|
||||||
|
signParam.put("timestamp", timestamp); // 필수
|
||||||
|
|
||||||
|
// signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash)
|
||||||
|
String signature = SignatureUtil.makeSignature(signParam);
|
||||||
|
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 3.API 요청 전문 생성
|
||||||
|
//#####################
|
||||||
|
Map<String, String> authMap = new Hashtable<String, String>();
|
||||||
|
|
||||||
|
authMap.put("mid" ,mid); // 필수
|
||||||
|
authMap.put("authToken" ,authToken); // 필수
|
||||||
|
authMap.put("signature" ,signature); // 필수
|
||||||
|
authMap.put("timestamp" ,timestamp); // 필수
|
||||||
|
authMap.put("charset" ,charset); // default=UTF-8
|
||||||
|
authMap.put("format" ,format); // default=XML
|
||||||
|
|
||||||
|
|
||||||
|
HttpUtil httpUtil = new HttpUtil();
|
||||||
|
|
||||||
|
try{
|
||||||
|
//#####################
|
||||||
|
// 4.API 통신 시작
|
||||||
|
//#####################
|
||||||
|
|
||||||
|
String authResultString = "";
|
||||||
|
|
||||||
|
authResultString = httpUtil.processHTTP(authMap, authUrl);
|
||||||
|
|
||||||
|
//############################################################
|
||||||
|
//5.API 통신결과 처리(***가맹점 개발수정***)
|
||||||
|
//############################################################
|
||||||
|
|
||||||
|
String test = authResultString.replace(",", "&").replace(":", "=").replace("\"", "").replace(" ","").replace("\n", "").replace("}", "").replace("{", "");
|
||||||
|
|
||||||
|
|
||||||
|
resultMap = ParseUtil.parseStringToMap(test); //문자열을 MAP형식으로 파싱
|
||||||
|
|
||||||
|
|
||||||
|
// 수신결과를 파싱후 resultCode가 "0000"이면 승인성공 이외 실패
|
||||||
|
|
||||||
|
//throw new Exception("강제 Exception");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
//####################################
|
||||||
|
// 실패시 처리(***가맹점 개발수정***)
|
||||||
|
//####################################
|
||||||
|
|
||||||
|
//---- db 저장 실패시 등 예외처리----//
|
||||||
|
System.out.println(ex);
|
||||||
|
|
||||||
|
//#####################
|
||||||
|
// 망취소 API
|
||||||
|
//#####################
|
||||||
|
String netcancelResultString = httpUtil.processHTTP(authMap, netCancel); // 망취소 요청 API url(고정, 임의 세팅 금지)
|
||||||
|
|
||||||
|
out.println("## 망취소 API 결과 ##");
|
||||||
|
|
||||||
|
// 취소 결과 확인
|
||||||
|
out.println("<p>"+netcancelResultString.replaceAll("<", "<").replaceAll(">", ">")+"</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
resultMap.put("resultCode", paramMap.get("resultCode"));
|
||||||
|
resultMap.put("resultMsg", paramMap.get("resultMsg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(Exception e){
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
}
|
||||||
|
%> --%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<title>KG이니시스 결제샘플</title>
|
||||||
|
<link rel="stylesheet" href="css/style.css">
|
||||||
|
<link rel="stylesheet" href="css/bootstrap.min.css">
|
||||||
|
|
||||||
|
<script language="javascript" type="text/javascript" src="https://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function paybtn() {
|
||||||
|
INIStdPay.pay('SendPayForm_id');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wrap">
|
||||||
|
|
||||||
|
<!-- 본문 -->
|
||||||
|
<main class="col-8 cont" id="bill-01">
|
||||||
|
<!-- 페이지타이틀 -->
|
||||||
|
<section class="mb-5">
|
||||||
|
<div class="tit">
|
||||||
|
<h2>일반결제</h2>
|
||||||
|
<p>KG이니시스 결제창을 호출하여 다양한 지불수단으로 안전한 결제를 제공하는 서비스</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- //페이지타이틀 -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 카드CONTENTS -->
|
||||||
|
<section class="menu_cont mb-5">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card_tit">
|
||||||
|
<h3>PC 일반결제</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 유의사항 -->
|
||||||
|
<div class="card_desc">
|
||||||
|
<h4>※ 유의사항</h4>
|
||||||
|
<ul>
|
||||||
|
<li>테스트MID 결제시 실 승인되며, 당일 자정(24:00) 이전에 자동으로 취소처리 됩니다.</li>
|
||||||
|
<li>가상계좌 채번 후 입금할 경우 자동환불되지 않사오니, 가맹점관리자 내 "입금통보테스트" 메뉴를 이용부탁드립니다.<br>(실 입금하신 경우 별도로 환불요청해주셔야 합니다.)</li>
|
||||||
|
<li>국민카드 정책상 테스트 결제가 불가하여 오류가 발생될 수 있습니다. 국민, 카카오뱅크 외 다른 카드로 테스트결제 부탁드립니다.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //유의사항 -->
|
||||||
|
|
||||||
|
|
||||||
|
<form name="" id="result" method="post" class="mt-5">
|
||||||
|
<div class="row g-3 justify-content-between" style="--bs-gutter-x:0rem;">
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 gap-2 input param" style="border:none;">resultCode</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("resultCode")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">resultMsg</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("resultMsg")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">tid</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("tid")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">MOID</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("MOID")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">TotPrice</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("TotPrice")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">goodName</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("goodName")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">applDate</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("applDate")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="col-10 col-sm-2 input param" style="border:none;">applTime</label>
|
||||||
|
<label class="col-10 col-sm-9 reinput">
|
||||||
|
<c:out value='${resultMap.get("applTime")}'/>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<button onclick="location.href='INIstdpayPcReq.do'" class="btn_solid_pri col-6 mx-auto btn_lg" style="margin-top:50px">돌아가기</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
12544
src/main/webapp/css/inicis/bootstrap.min.css
vendored
Normal file
12544
src/main/webapp/css/inicis/bootstrap.min.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
190
src/main/webapp/css/inicis/style.css
Normal file
190
src/main/webapp/css/inicis/style.css
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
@charset "utf-8";
|
||||||
|
|
||||||
|
/* =====================================
|
||||||
|
RESET
|
||||||
|
===================================== */
|
||||||
|
* { outline:0 !important; }
|
||||||
|
html,body,h1,h2,h3,h4,h5,h6,div,p,blockquote,pre,code,address,ul,ol,li,menu,nav,section,article,aside,
|
||||||
|
dl,dt,dd,table,thead,tbody,tfoot,label,caption,th,td,form,fieldset,legend,hr,input,button,textarea,object,figure,figcaption,select { margin:0; padding:0; font-family:'pretendard','pretendard-subset',sans-serif; line-height: 120%; font-weight: 300; color: var(--secondary); word-break: keep-all; }
|
||||||
|
html, body { width:100%; }
|
||||||
|
html { -webkit-touch-callout:none; -webkit-user-select:none; -webkit-tap-highlight-color:rgba(0, 0, 0, 0); }
|
||||||
|
body { width:100%; background:#fff; min-width:280px; -webkit-text-size-adjust:none; word-wrap:break-word; word-break:break-all; }
|
||||||
|
body,input,select,textarea,button { border:none; -webkit-border-radius: 0; font-weight: 300;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none; }
|
||||||
|
ul,ol,li { list-style:none; }
|
||||||
|
table { width:100%; border-spacing:0; border-collapse:collapse; -webkit-user-select:text; }
|
||||||
|
img,fieldset { border:0; }
|
||||||
|
address,cite,code,em { font-style:normal; font-weight:normal; }
|
||||||
|
label,img,input,select,textarea,button { vertical-align:middle; }
|
||||||
|
main,header,section,nav,footer,aside,article,figure { display:block; }
|
||||||
|
a { text-decoration:none; color: #fff; cursor: pointer; }
|
||||||
|
b {font-weight: 700;}
|
||||||
|
button { cursor: pointer; background:none; }
|
||||||
|
/* Scroll bar hidden */
|
||||||
|
body { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ }
|
||||||
|
body::-webkit-scrollbar { display: none; /* Chrome, Safari, Opera*/ }
|
||||||
|
::selection, ::-webkit-selection {background-color: #fceac1;}
|
||||||
|
|
||||||
|
|
||||||
|
label span{padding-left: 10px;font-size:14px;font-weight:500;}
|
||||||
|
label.param{border:none; font-weight:600;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* =====================================
|
||||||
|
Color
|
||||||
|
===================================== */
|
||||||
|
:root {
|
||||||
|
--primary : #ffba1a;
|
||||||
|
--secondary : #141523;
|
||||||
|
|
||||||
|
--white :#fff;
|
||||||
|
--gray001 : #f6f6f6;
|
||||||
|
--gray01 : #f1f1f1;
|
||||||
|
--gray02 : #a8a8a8;
|
||||||
|
--gray03 : #5B5B5B;
|
||||||
|
|
||||||
|
--wt50 : #ffffff80;
|
||||||
|
--bk50 : #00000080;
|
||||||
|
|
||||||
|
--red01 : #FFDBDB;
|
||||||
|
--red02 : #FF3434;
|
||||||
|
|
||||||
|
--orange01 : #FFE6D1;
|
||||||
|
--orange02: #E44600;
|
||||||
|
|
||||||
|
--yellow01 : #fff1d1;
|
||||||
|
--yellow02 : #ff9900;
|
||||||
|
|
||||||
|
--ygreen01 : #EEFCE7;
|
||||||
|
--ygreen02 : #2C680F;
|
||||||
|
|
||||||
|
--lgreen02 : #6ebb1a;
|
||||||
|
|
||||||
|
--green01 : #ebf5f5;
|
||||||
|
--green02 : #0f6866;
|
||||||
|
|
||||||
|
--skyblue01 : #ECF7FC;
|
||||||
|
--skyblue02 : #007AB9;
|
||||||
|
|
||||||
|
--blue01 : #e9f1ff;
|
||||||
|
--blue02 : #06296e;
|
||||||
|
|
||||||
|
--navy01 :#E8EAFF;
|
||||||
|
--navy02 :#0A116B;
|
||||||
|
|
||||||
|
--purple01 : #EBDFFF;
|
||||||
|
--purple02 : #44227A;
|
||||||
|
|
||||||
|
--violet01 :#F1E0EE;
|
||||||
|
--violet02 : #742F5A;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--max-width :1240px;
|
||||||
|
--lnb-width :240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap { width: 100%; background-color: var(--gray01); }
|
||||||
|
.inner { width: 100%; max-width: var(--max-width); margin: auto; }
|
||||||
|
|
||||||
|
.text_r { color: var(--red02); }
|
||||||
|
.text_y { color: var(--yellow02); }
|
||||||
|
.text_b { color: var(--skyblue02); }
|
||||||
|
.text_g { color: var(--lgreen02); }
|
||||||
|
|
||||||
|
.btn_lg {height: 60px; font-size: 18px; font-weight: 700;}
|
||||||
|
|
||||||
|
|
||||||
|
/* =====================================
|
||||||
|
Components
|
||||||
|
===================================== */
|
||||||
|
/* 버튼 */
|
||||||
|
.btn_line_01 { border: 1px solid var(--white); color: var(--white); padding: 10px 50px; border-radius: 4px; font-size: 16px; display: inline-block; text-align: center;}
|
||||||
|
.btn_line_02 { border: 1px solid var(--secondary); color: var(--secondary); padding: 10px 50px; border-radius: 4px; font-size: 16px; display: inline-block;text-align: center;}
|
||||||
|
.btn_solid_pri { border: 1px solid var(--primary); color: var(--secondary); padding: 10px; border-radius: 4px; font-size: 16px; background-color: var(--primary); font-weight: 500; display: inline-block; text-align: center;}
|
||||||
|
.btn_solid_sec { border: 1px solid var(--secondary); color: var(--white); padding: 10px; border-radius: 4px; font-size: 16px; background-color: var(--secondary); font-weight: 500; display: inline-block; text-align: center;}
|
||||||
|
.btn_solid_red { border: 1px solid var(--red02); color: var(--red02); padding: 10px; border-radius: 4px; font-size: 16px; background-color: var(--red01); font-weight: 500; display: inline-block; text-align: center;}
|
||||||
|
.btn_solid_yel { border: 1px solid var(--yellow02); color: var(--yellow02); padding: 10px; border-radius: 4px; font-size: 16px; background-color: var(--yellow01); font-weight: 500; display: inline-block; text-align: center;}
|
||||||
|
|
||||||
|
.reinput {position: relative; padding: 20px; border-radius: 4px; height: 60px; display: flex; min-width: 200px; ;}
|
||||||
|
|
||||||
|
.input {position: relative; border:1px solid var(--gray02); padding: 20px; border-radius: 4px; height: 60px; display: flex; min-width: 200px; ;}
|
||||||
|
.input img {margin-right: 20px;}
|
||||||
|
.input input {width: 100%;}
|
||||||
|
.input select {width: 100%; margin-top: -20px; height: 60px; background: url(../img/acc_bot.png) center right no-repeat; background-size: 20px; }
|
||||||
|
.input textarea {width: 100%;}
|
||||||
|
.input.col {width: 49%;}
|
||||||
|
|
||||||
|
|
||||||
|
/* =====================================
|
||||||
|
Main
|
||||||
|
===================================== */
|
||||||
|
|
||||||
|
.main .section:first-child {max-width:100vw}
|
||||||
|
.main .section {margin: auto; display: flex; align-items: center; position: relative; min-width: 280px; left: 0;}
|
||||||
|
.main .section .sec_cont {align-items: center; align-content: center; margin-top: -120px; padding-left: 100px;}
|
||||||
|
.main .section .sec_cont h2 {font-size: 60px;font-weight: 700;}
|
||||||
|
.main .section .sec_cont span {font-size: 20px; line-height: 1.5em; display: block; margin: 30px 0;}
|
||||||
|
.main .section .sec_cont a { border: 1px solid var(--secondary); font-size: 16px; width: 200px; height: 40px; border-radius:4px ; -webkit-border-radius:4px ; -moz-border-radius:4px ; -ms-border-radius:4px ; -o-border-radius:4px ; }
|
||||||
|
.main .section .sec_img {position: absolute; top: 50%; right: 0; transform:translate(0%, -50%); width: 80vw; text-align: center; z-index: -1;}
|
||||||
|
.main .section .sec_img img {max-width: 1000px; min-width: 280px; width: 100%;}
|
||||||
|
|
||||||
|
.main .page_scroll {z-index: 2;}
|
||||||
|
|
||||||
|
|
||||||
|
#fullpage {height: 100%; position: relative; touch-action: none; transition: all 700ms ease 0s;}
|
||||||
|
.main .section {display: table; table-layout: fixed; width: 100%; position: relative; box-sizing: border-box; height: 100vh;}
|
||||||
|
|
||||||
|
|
||||||
|
/* =====================================
|
||||||
|
Content
|
||||||
|
===================================== */
|
||||||
|
.tit { margin-bottom: 40px; padding-top: 0px; }
|
||||||
|
.tit h2 { font-size: 36px; font-weight: 700; padding-bottom: 10px;}
|
||||||
|
.tit p { font-size: 20px; font-weight: 500; }
|
||||||
|
|
||||||
|
main .card { width: 100%; background: var(--white); border-radius: 20px; box-shadow: 0 2px 6px rgba(0,0,0,0.05); padding: 80px; padding-top: 0; box-sizing: border-box; -webkit-user-select:text;}
|
||||||
|
main .card .card_tit h3 { font-size: 28px; font-weight: 700; padding-top: 60px; -webkit-user-select:none;}
|
||||||
|
main .card .card_tit p { font-size: 16px; font-weight: 300; padding: 10px 0; line-height: 1.5em; -webkit-user-select:none;}
|
||||||
|
main .card .card_tit .step-tag { background-color: var(--primary); padding:0 10px; color: var(--secondary); font-weight: 700; font-size: 14px; line-height: 30px; display: inline-block; margin-right: 10px; margin-bottom: 4px; border-radius: 4px; vertical-align: middle; }
|
||||||
|
|
||||||
|
main .card .card_sub_tit {padding: 40px 0 20px 0; margin-top: 30px; border-top: 2px solid var(--gray01);}
|
||||||
|
main .card .card_sub_tit h3 { font-size: 20px; font-weight: 700; }
|
||||||
|
main .card .card_sub_tit p { font-size: 16px; font-weight: 300; padding: 10px 0; line-height: 1.5em; }
|
||||||
|
|
||||||
|
.popup .card_sub_tit h3 { font-size: 20px; font-weight: 700; }
|
||||||
|
.popup .card_sub_tit p { font-size: 16px; font-weight: 300; padding: 10px 0; line-height: 1.5em; }
|
||||||
|
|
||||||
|
|
||||||
|
main.cont { margin: auto;padding: 30px; padding-top:100px}
|
||||||
|
|
||||||
|
main.cont section .card_desc { border: 6px solid var(--gray01); border-radius: 10px; padding: 40px 10px 20px 40px; box-sizing: border-box; margin: 30px 0; }
|
||||||
|
main.cont section .card_desc h4 { font-weight: 700; margin-bottom: 4px; -webkit-user-select:none; }
|
||||||
|
main.cont section .card_desc ul { margin-top: 20px; margin-bottom: 20px; }
|
||||||
|
main.cont section .card_desc ul li { list-style-type: disc; margin-left: 20px; line-height:180%; font-size:14px;}
|
||||||
|
main.cont section .card_desc ol { margin-top: 20px; margin-bottom: 20px; }
|
||||||
|
main.cont section .card_desc ol li { list-style-type: decimal; margin-left: 40px; }
|
||||||
|
main.cont section .card_desc ol li { list-style-type: decimal; margin-left: 40px; }
|
||||||
|
|
||||||
|
/* TAB */
|
||||||
|
.card_tab li { flex: 1; text-align: center; border-bottom:4px solid var(--gray01); padding: 10px; box-sizing: border-box; font-weight: 700; color: var(--gray02); cursor: pointer; -webkit-user-select:none; }
|
||||||
|
.card_tab li.sel { border-bottom:4px solid var(--primary); font-weight: 700; color: var(--secondary); }
|
||||||
|
.code_table [class*=table_cont] { width: 100%; max-height: 500px;}
|
||||||
|
.code_table [class*=table_cont] tbody { display:inline-table; width: 100%; }
|
||||||
|
.code_table [class*=table_cont] tr { height: 92px; vertical-align: middle; border-bottom: 1px solid var(--gray02); }
|
||||||
|
.code_table [class*=table_cont] th { font-weight: 700; padding: 10px; padding-left: 20px; position: relative; }
|
||||||
|
.code_table [class*=table_cont] td { padding: 10px; padding-left: 20px;}
|
||||||
|
.code_table [class*=table_cont] td .table_desc { font-size: 14px; font-weight: 700; }
|
||||||
|
.code_table [class*=table_cont] th em { padding-left: 4px; }
|
||||||
|
|
||||||
|
/* 테이블 디자인 */
|
||||||
|
.code_table .table_01 table {height: 60px}
|
||||||
|
.code_table .table_01 table tr {height: 60px;}
|
||||||
|
.code_table .table_01 table tr th {background-color: var(--gray01);border-bottom: 1px solid var(--gray01);}
|
||||||
|
.code_table .table_01 table td {word-break: break-all; border-left: 1px solid var(--gray01);border-bottom: 1px solid var(--gray01);}
|
||||||
|
.code_table .table_01 table th:first-child {border-left: 0; text-align: center;}
|
||||||
|
.code_table .table_01 table td:first-child {border-left: 0; text-align: center;}
|
||||||
Loading…
Reference in New Issue
Block a user