From a8da86685c18852146fd520ce10b59edf7965ec1 Mon Sep 17 00:00:00 2001 From: LJH Date: Wed, 9 Nov 2022 14:50:47 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=A4=80=ED=98=B8=20=EC=A0=84?= =?UTF-8?q?=EC=9E=90=EC=A1=B0=EC=A0=95=EC=8B=9C=EC=8A=A4=ED=85=9C=20?= =?UTF-8?q?=EA=B3=A0=EB=8F=84=ED=99=94=20=EC=BB=A4=EB=B0=8B=20=20-=20?= =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ars/web/AdjstReqStatusController.java | 72 +++++++++- .../kcc/kccadr/adjst/service/PayService.java | 2 + .../java/kcc/kccadr/adjst/service/PayVO.java | 8 ++ .../kcc/kccadr/adjst/service/impl/PayDAO.java | 5 +- .../adjst/service/impl/PayServiceImpl.java | 7 + .../kccadr/adjst/web/InipayWebController.java | 24 +++- .../service/AdrRecordReadingService.java | 4 + .../service/impl/AdrRecordReadingDAO.java | 6 + .../impl/AdrRecordReadingServiceImpl.java | 15 +++ .../kcc/kccadr/kccadrCom/web/PayUtill.java | 5 +- .../sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml | 43 ++++++ .../AdrRecordReading_SQL_Cubrid.xml | 15 ++- .../kccadr/accdnt/ars/tab/docIssReqList.jsp | 26 ++-- .../web/kccadr/inipay/INIstdpay_pc_return.jsp | 127 ------------------ 14 files changed, 210 insertions(+), 149 deletions(-) diff --git a/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusController.java b/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusController.java index ce10db4a..c66a0627 100644 --- a/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusController.java +++ b/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springframework.web.servlet.support.RequestContextUtils; import com.fasterxml.jackson.core.io.JsonStringEncoder; import com.inicis.std.util.SignatureUtil; @@ -50,6 +51,8 @@ import kcc.kccadr.adjRppl.service.AdjRpplService; import kcc.kccadr.adjRppl.service.AdjRpplVO; import kcc.kccadr.adjclsmgr.service.AdjClsMgrService; import kcc.kccadr.adjclsmgr.service.AdjClsMgrVO; +import kcc.kccadr.adjst.service.PayService; +import kcc.kccadr.adjst.service.PayVO; import kcc.kccadr.advc.service.AdrHstryMgrService; import kcc.kccadr.advc.service.AdrHstryMgrVO; import kcc.kccadr.advcRecord.service.AdrRecordReadingService; @@ -126,6 +129,9 @@ public class AdjstReqStatusController { @Resource(name = "adjRpplService") private AdjRpplService adjRpplService; + + @Resource(name="PayService") + private PayService payService; @Value("#{globalSettings['Globals.pay.mid']}") private String global_mid; @@ -520,7 +526,7 @@ public class AdjstReqStatusController { // 대국민 조정사건 기록열람 신청 목록 @RequestMapping(value = "/web/kccadr/accdnt/ai/docIssReqList.do") - public String docIssReqList(@ModelAttribute("adrRecordReadingVO") AdrRecordReadingVO adrRecordReadingVO, ModelMap model) throws Exception { + public String docIssReqList(@ModelAttribute("adrRecordReadingVO") AdrRecordReadingVO adrRecordReadingVO, ModelMap model, HttpServletRequest request) throws Exception { String auth = EgovUserDetailsHelper.isAuthenticated() ? null : EgovUserDetailsHelper.getAuthenticatedUser().toString(); LoginVO loginVO = "anonymousUser".equals(auth) ? new LoginVO() : (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); @@ -591,6 +597,17 @@ public class AdjstReqStatusController { /* 기타 */ String siteDomain = global_siteDomain; //가맹점 도메인 입력 + //서버정보 받아오기 + String scheme = request.getScheme(); + String serverName = request.getServerName(); + String serverPort = String.valueOf(request.getServerPort()); + if(!"".equals(serverPort)) serverPort = ":" + serverPort; + + String requestUrl = scheme + "://" + serverName + serverPort; + + //고객사 임의데이터 ("요청URL" + "§" + "pk") + String merchantData = requestUrl + "/web/kccadr/accdnt/ai/doclssReqProcess.do" + "§"; + model.addAttribute("mid", mid); model.addAttribute("signKey", signKey); model.addAttribute("mKey", mKey); @@ -599,6 +616,7 @@ public class AdjstReqStatusController { model.addAttribute("price", price); model.addAttribute("signature", signature); model.addAttribute("siteDomain", siteDomain); + model.addAttribute("merchantData", merchantData); // ======================결제 끝=================== @@ -682,7 +700,57 @@ public class AdjstReqStatusController { return "redirect:/web/kccadr/accdnt/ai/docIssReqList.do"; } - + + /** + * + */ + @RequestMapping("/web/kccadr/accdnt/ai/doclssReqProcess.do") + public String doclssReqProcess(HttpServletRequest request, RedirectAttributes rttr) throws Exception { + + Map flashMap =RequestContextUtils.getInputFlashMap(request); + + String pk = ""; + + /* + * netCancleTorF + * true = 정상결제 + * false = 정상결제 후 망취소 + * + * */ + + String netCancleTorF = "true"; + + if(flashMap != null) { + + pk = (String)flashMap.get("pk"); + netCancleTorF = (String)flashMap.get("netCancleTorF"); + + } + + + /* + * 1. netCancleTorF를 통해 망취소여부를 체크한다. + * 2. 전닯받은 pk로 adr_pay select 후 resultcode가 0000인지 여부체크 + * 3. 0000이라면 'asctn_table' 컬럼의 테이블의 asctn_table_pk1 또는 pk2를 통해 해당 테이블에 후 처리 + * + * */ + //1. + if(Boolean.valueOf(netCancleTorF)) { + //2. + PayVO payVO = payService.selectPayForPk(pk); + if("0000".equals(payVO.getResultcode())) { + //3. + adrRecordReadingService.updatePrcsnStatCd(payVO); + }else { + //fail + rttr.addFlashAttribute("result", "fail"); + } + + } + + + return "redirect:/web/kccadr/accdnt/ai/docIssReqList.do"; + } /** * 기일통지서 상세 TODO daenge 기일통지서 오즈리포팅 처리 diff --git a/src/main/java/kcc/kccadr/adjst/service/PayService.java b/src/main/java/kcc/kccadr/adjst/service/PayService.java index dd19b657..ec5b9860 100644 --- a/src/main/java/kcc/kccadr/adjst/service/PayService.java +++ b/src/main/java/kcc/kccadr/adjst/service/PayService.java @@ -30,4 +30,6 @@ public interface PayService { // 결제 결과 insert(map - 결제모듈 결과, tableNm - 사용테이블, tablePk1 - 사용테이블 pk1, tablePk2 - 사용테이블 pk2) public int insertPayLog(Map map, String tableNm, String tablePk1, String tablePk2, String userId) throws Exception; + // 결제 결과 확인 + public PayVO selectPayForPk(String pram) throws Exception; } diff --git a/src/main/java/kcc/kccadr/adjst/service/PayVO.java b/src/main/java/kcc/kccadr/adjst/service/PayVO.java index 142eca30..84f2441a 100644 --- a/src/main/java/kcc/kccadr/adjst/service/PayVO.java +++ b/src/main/java/kcc/kccadr/adjst/service/PayVO.java @@ -46,6 +46,7 @@ public class PayVO extends ComDefaultVO implements Serializable { private String frstRegisterId = "" ; //등록자 private String lastUpdtPnttm = "" ; //수정일시 private String lastUpdusrId = "" ; //수정자 + private String merchantData = ""; //고객사 임의데이터 public String getPaySeq() { @@ -264,6 +265,13 @@ public class PayVO extends ComDefaultVO implements Serializable { public void setLastUpdusrId(String lastUpdusrId) { this.lastUpdusrId = lastUpdusrId; } + public String getMerchantData() { + return merchantData; + } + public void setMerchantData(String merchantData) { + this.merchantData = merchantData; + } + diff --git a/src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java b/src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java index 4fcd2dba..35d03eb7 100644 --- a/src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java +++ b/src/main/java/kcc/kccadr/adjst/service/impl/PayDAO.java @@ -11,5 +11,8 @@ public class PayDAO extends EgovAbstractDAO { public int insertPayLog(PayVO payVO) throws Exception { return (int) update("payDAO.insertPayLog", payVO); } - + + public PayVO selectPayForPk(String pram) throws Exception { + return (PayVO) select("payDAO.selectPayForPk", pram); + } } diff --git a/src/main/java/kcc/kccadr/adjst/service/impl/PayServiceImpl.java b/src/main/java/kcc/kccadr/adjst/service/impl/PayServiceImpl.java index 1ae32c3d..09d0802e 100644 --- a/src/main/java/kcc/kccadr/adjst/service/impl/PayServiceImpl.java +++ b/src/main/java/kcc/kccadr/adjst/service/impl/PayServiceImpl.java @@ -79,5 +79,12 @@ public class PayServiceImpl extends EgovAbstractServiceImpl implements PayServi return payDAO.insertPayLog(payVO); } + + @Override + public PayVO selectPayForPk(String pram) throws Exception { + return payDAO.selectPayForPk(pram); + } + + } diff --git a/src/main/java/kcc/kccadr/adjst/web/InipayWebController.java b/src/main/java/kcc/kccadr/adjst/web/InipayWebController.java index 5014789c..6b52f6d6 100644 --- a/src/main/java/kcc/kccadr/adjst/web/InipayWebController.java +++ b/src/main/java/kcc/kccadr/adjst/web/InipayWebController.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.inicis.std.util.SignatureUtil; @@ -151,7 +152,9 @@ public class InipayWebController { * * */ @RequestMapping("/web/kccadr/inipay/INIstdpayPcReturn.do") - public String INIstdpayPcReturn(HttpServletRequest request, ModelMap model + public String INIstdpayPcReturn(HttpServletRequest request + , ModelMap model + , RedirectAttributes rttr ) throws Exception { HttpSession test = request.getSession(); @@ -173,6 +176,18 @@ public class InipayWebController { * */ Map map = payUtill.payProcessing(request, model); + + //고객사 임의데이터 (요청URL + "§" + pk) + String merchantData = map.get("merchantData"); + + String[] s_merchantData = merchantData.split("§"); + + String url = s_merchantData[0]; + String pk = s_merchantData[1]; + + rttr.addFlashAttribute("pk", pk); + rttr.addFlashAttribute("netCancleTorF", map.get("netCancleTorF")); + /* * 결제 결과 * 파라미터 : @@ -188,14 +203,15 @@ public class InipayWebController { payService.insertPayLog( map, "adr_record_reading", - "record_reading_seq", + pk, "adr_seq", loginVO.getUniqId() ); + //성공여부 + model.addAttribute("netCancleTorF", map.get("netCancleTorF")); - - return "/web/kccadr/inipay/INIstdpay_pc_return"; + return "redirect:" + url; } /* diff --git a/src/main/java/kcc/kccadr/advcRecord/service/AdrRecordReadingService.java b/src/main/java/kcc/kccadr/advcRecord/service/AdrRecordReadingService.java index 53977bcf..6dd2874f 100644 --- a/src/main/java/kcc/kccadr/advcRecord/service/AdrRecordReadingService.java +++ b/src/main/java/kcc/kccadr/advcRecord/service/AdrRecordReadingService.java @@ -2,6 +2,8 @@ package kcc.kccadr.advcRecord.service; import java.util.List; +import kcc.kccadr.adjst.service.PayVO; + public interface AdrRecordReadingService { String insert4Func( @@ -36,4 +38,6 @@ public interface AdrRecordReadingService { //L page List selectPagingList(AdrRecordReadingVO adrHstryMgrVO) throws Exception; + // 결제완료 처리 + int updatePrcsnStatCd(PayVO payVO) throws Exception; } diff --git a/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingDAO.java b/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingDAO.java index 804ba25f..cf492d46 100644 --- a/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingDAO.java +++ b/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingDAO.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Repository; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import kcc.kccadr.adjst.service.PayVO; import kcc.kccadr.advc.service.AdrHstryMgrVO; import kcc.kccadr.advcRecord.service.AdrRecordReadingVO; @@ -186,4 +187,9 @@ public class AdrRecordReadingDAO extends EgovAbstractDAO { List tlist = (List) list("AdrRecordReadingDAO.selectPagingList", adrHstryMgrVO); return tlist; } + + public int updatePrcsnStatCd(PayVO payVO) throws Exception { + return update("adrRecordReadingDAO.updatePrcsnStatCd", payVO); + } + } diff --git a/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingServiceImpl.java b/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingServiceImpl.java index a87b67dc..acd1c33e 100644 --- a/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingServiceImpl.java +++ b/src/main/java/kcc/kccadr/advcRecord/service/impl/AdrRecordReadingServiceImpl.java @@ -8,6 +8,10 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; 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.PayVO; import kcc.kccadr.advcRecord.service.AdrRecordReadingService; import kcc.kccadr.advcRecord.service.AdrRecordReadingVO; @@ -100,4 +104,15 @@ public class AdrRecordReadingServiceImpl implements AdrRecordReadingService { return adrRecordReadingDAO.selectPagingList(adrRecordReadingVO); } + @Override + public int updatePrcsnStatCd(PayVO payVO) throws Exception { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId()); + + payVO.setLastUpdusrId(userId); + + return adrRecordReadingDAO.updatePrcsnStatCd(payVO); + } + } diff --git a/src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java b/src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java index 2490d7a3..56826fb8 100644 --- a/src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java +++ b/src/main/java/kcc/kccadr/kccadrCom/web/PayUtill.java @@ -110,6 +110,7 @@ public class PayUtill { resultMap = ParseUtil.parseStringToMap(test); //문자열을 MAP형식으로 파싱 + resultMap.put("merchantData", merchantData); // 수신결과를 파싱후 resultCode가 "0000"이면 승인성공 이외 실패 @@ -150,7 +151,9 @@ public class PayUtill { resultMap.put("resultCode", paramMap.get("resultCode")); resultMap.put("resultMsg", paramMap.get("resultMsg")); } - + + resultMap.put("netCancleTorF", netCancleTorF.toString()); + model.addAttribute("resultMap", resultMap); resultMap = keyConvStyleClient(resultMap); diff --git a/src/main/resources/egovframework/sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml index f964db0d..3931c547 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/adjst/Pay_SQL_Mysql.xml @@ -213,5 +213,48 @@ + diff --git a/src/main/resources/egovframework/sqlmap/kccadr/advcRecord/AdrRecordReading_SQL_Cubrid.xml b/src/main/resources/egovframework/sqlmap/kccadr/advcRecord/AdrRecordReading_SQL_Cubrid.xml index 854ed006..492498e5 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/advcRecord/AdrRecordReading_SQL_Cubrid.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/advcRecord/AdrRecordReading_SQL_Cubrid.xml @@ -3,8 +3,8 @@ - - + + @@ -210,4 +210,15 @@ LIMIT #recordCountPerPage# OFFSET #firstIndex# + + + + UPDATE adr_record_reading + SET prcsn_stat_cd = '20', + prcsn_pnttm = NOW(), + last_updt_pnttm = NOW(), + last_updusr_id = #lastUpdusrId# + WHERE record_reading_seq = #asctnTablePk1# + + diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/docIssReqList.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/docIssReqList.jsp index fc997d1b..0d920d0e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/docIssReqList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/docIssReqList.jsp @@ -33,7 +33,8 @@ @@ -100,21 +101,22 @@
- - - - - + + + + + - - - - + + + + - + +
@@ -223,7 +225,7 @@

- + diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/inipay/INIstdpay_pc_return.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/inipay/INIstdpay_pc_return.jsp index 42b9eb67..fa2e29ac 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kccadr/inipay/INIstdpay_pc_return.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/inipay/INIstdpay_pc_return.jsp @@ -1,132 +1,5 @@ <%@ 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 resultMap = new HashMap(); - - try{ - - //############################# - // 인증결과 파라미터 일괄 수신 - //############################# - request.setCharacterEncoding("UTF-8"); - - Map paramMap = new Hashtable(); - - 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 signParam = new HashMap(); - - signParam.put("authToken", authToken); // 필수 - signParam.put("timestamp", timestamp); // 필수 - - // signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash) - String signature = SignatureUtil.makeSignature(signParam); - - - //##################### - // 3.API 요청 전문 생성 - //##################### - Map authMap = new Hashtable(); - - 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("

"+netcancelResultString.replaceAll("<", "<").replaceAll(">", ">")+"

"); - } - - }else{ - - resultMap.put("resultCode", paramMap.get("resultCode")); - resultMap.put("resultMsg", paramMap.get("resultMsg")); - } - - }catch(Exception e){ - - System.out.println(e); - } -%> --%>