Переглянути джерело

이태영 - 20210315 PG 임시커밋

xodud1202 5 роки тому
батько
коміт
4de4314264

+ 2 - 0
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -23,6 +23,7 @@ import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscNaverPayService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.dao.TsfOrderDao;
+import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.KakaoPay;
 import com.style24.persistence.domain.NaverPay;
@@ -354,6 +355,7 @@ public class TsfOrderService {
 
 	public Payment setPgDataInfo(Order order) {
 		Payment payment;
+		order.setFrontGb(TsfSession.getFrontGb());
 		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
 			KakaoPay kakaoPay = coreKakaoPayService.kakaoPaymentReady(order);
 			payment = coreKakaoPayService.setKakaoOrderData(kakaoPay, order);

+ 3 - 3
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -70,7 +70,7 @@ public class TsfCartController extends TsfBaseController {
 	@GetMapping("/list/form")
 	public ModelAndView cartListForm() {
 		ModelAndView mav = new ModelAndView();
-		mav.setViewName(super.getDeviceViewName("cart/cartListForm"));
+		mav.setViewName(super.getDeviceViewName("cart/CartListForm"));
 		return mav;
 	}
 
@@ -137,7 +137,7 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
-		return super.getDeviceViewName("cart/cartListAjaxForm");
+		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 
 	@ResponseBody
@@ -198,7 +198,7 @@ public class TsfCartController extends TsfBaseController {
 
 		model.addAttribute("cart", cart);
 		model.addAttribute("setType", TscConstants.GoodsType.SET.value());
-		return super.getDeviceViewName("cart/cartChangeOptionPopup");
+		return super.getDeviceViewName("cart/CartChangeOptionPopup");
 	}
 
 	/**

+ 45 - 4
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -469,7 +469,7 @@ public class TsfOrderController extends TsfBaseController {
 	}
 
 	/**
-	 * 주문페이지
+	 * PG 결과 처리 메서드
 	 *
 	 * @param
 	 * @return
@@ -509,6 +509,47 @@ public class TsfOrderController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
 		return mav;
 	}
+
+	/**
+	 * PG 결과 처리 메서드
+	 *
+	 * @param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 03. 05
+	 */
+	@RequestMapping(value = "/pay/result/test")
+	public ModelAndView payResultTest(Payment param, HttpServletRequest request, HttpServletResponse response) {
+
+		ModelAndView mav = new ModelAndView();
+
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			param.setCustNo(0);
+		}
+
+		param.setUpdNo(param.getCustNo());
+
+		// 7. 결재정보등록(TB_PAYMENT)
+		param = orderService.orderPgPayResult(param, request, response);
+
+		log.info("param.getOrdNo() ::: {}", param.getOrdNo());
+
+		// TODO 주문정보 업데이트
+		// 1. 주문상태업데이트
+		// 2. 재고처리
+		// 3. 포인트사용처리
+		// 4. 예정포인트적립처리
+		// 5. 쿠폰사용처리
+		// 6. 상품권사용처리
+
+		mav.addObject("payment", param);
+
+		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
+		return mav;
+	}
 	
 	/**
 	 * 주문완료페이지
@@ -844,7 +885,7 @@ public class TsfOrderController extends TsfBaseController {
 		// 2.5 사은품채고체크
 		
 		// 3. 주문기본정보등록
-		coreOrderService.createPreOrder(order);
+		//coreOrderService.createPreOrder(order);
 		
 		log.info("order.getPgGb()              ::: {}", order.getPgGb());
 		log.info("order.getPayMeans()          ::: {}", order.getPayMeans());
@@ -858,9 +899,9 @@ public class TsfOrderController extends TsfBaseController {
 		log.info("order.getFreegiftValArr()    ::: {}", order.getFreegiftValArr());
 		log.info("order.getFreegiftValArr()    ::: {}", order.getFreegiftValArr());
 		log.info("order.getFreegiftSqArr()     ::: {}", order.getFreegiftSqArr());
-		for(int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
+		/*for(int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
 			log.info("order.getFreegiftGoodsArr()  ::: {}", order.getFreegiftGoodsArr()[i]);
-		}
+		}*/
 
 		// TODO PG 데이터 세팅 처리 (order)
 		// 필수 데이터

+ 54 - 1
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -5,6 +5,8 @@ import java.io.PrintWriter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,6 +15,10 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.persistence.domain.Payment;
 
+import kr.co.kcp.net.connection.ConnectionKCP;
+import kr.co.kcp.net.connection.dto.ParamData;
+import kr.co.kcp.net.connection.util.HttpJsonXml;
+import kr.co.kcp.net.connection.util.OpenHash;
 import lombok.extern.slf4j.Slf4j;
 
 @Controller
@@ -20,8 +26,11 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class TsfPgController {
 
+	@Autowired
+	private Environment env;
+
 	/**
-	 * 주문페이지
+	 * 무통장입금 입금통보
 	 *
 	 * @param
 	 * @return
@@ -30,6 +39,7 @@ public class TsfPgController {
 	 */
 	@RequestMapping(value = "/kcp/vBankEnd")
 	public ModelAndView vBankEnd(Payment param, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
+		try {	request.setCharacterEncoding("euc-kr");	} catch(Exception e) {	}
 		PrintWriter out = response.getWriter();
 		String result = "0000";
 
@@ -56,4 +66,47 @@ public class TsfPgController {
 		out.print("<html><body><form><input type='hidden' name='result' value='" + result + "'></form></body></html>");
 		return null;
 	}
+
+	/**
+	 * KCP 모바일 appoval 페이지
+	 *
+	 * @param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 03. 05
+	 */
+	@RequestMapping(value = "/kcp/approval")
+	public ModelAndView kcpApproval(Payment param, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
+		try {	request.setCharacterEncoding("euc-kr");	} catch(Exception e) {	}
+		response.setContentType("text/html;charset=euc-kr");
+		response.setHeader("Cache-Control","no-store");
+		response.setHeader("Pragma","no-cache");
+		response.setDateHeader("Expires",0);
+
+		PrintWriter out = response.getWriter();
+
+		ConnectionKCP suc = new ConnectionKCP();		// KCP 인증 정보를 저장하기 위한 Object                     ( 통신의 기본이 되는 객체 ) - 필수
+		OpenHash oh  = new OpenHash();					// KCP 와 통신시 데이터 위변조를 확인 하기 위한 Hash Object ( 업체와 KCP 간의 통신시 데이터 위변조를 확인 하기 위해 필요. 미설정시 통신 구간만 라이브러리에서 자체적으로 hash 처리 )
+		HttpJsonXml   hjx = new HttpJsonXml();			// 응답값 get value 형식으로 가져올수 있는 Object           ( Java 또는 JSP 내에서 데이터를 파싱할때 필요 - XML 또는 JSON )
+		ParamData pd  = new ParamData();				// 파라메타 값을 세팅할수 있는 bean Object                  ( String, HashMap 등으로 대체 가능 )
+
+		pd.setGood_mny(request.getParameter("good_mny"));
+		pd.setGood_name(request.getParameter("good_name"));
+		pd.setOrdr_idxx(request.getParameter("ordr_idxx"));
+		pd.setPay_method(request.getParameter("pay_method"));
+		pd.setRet_URL(request.getParameter("Ret_URL"));
+		pd.setSite_cd(request.getParameter("site_cd"));
+		pd.setEscw_used(request.getParameter("escw_used") == null ? "" : request.getParameter("escw_used"));
+
+		log.info("CHECK GOOD_NAME ::: {}", pd.getGood_name());
+
+		String responseType = request.getParameter("response_type");
+		if("JSON".equals(responseType) || "XML".equals(responseType)) {
+			pd.setResponse_type(responseType);
+		}
+
+		out.println( suc.kcpPaymentSmartPhone(request, Boolean.parseBoolean(env.getProperty("pg.kcp.server")), pd, env.getProperty("pg.kcp.log.dir"))); // 이클립스 상에서 메서드를 클릭 후 F2를 누르면 상세 내용이 나옵니다.
+
+		return null;
+	}
 }

+ 0 - 1
src/main/resources/config/application-locd.yml

@@ -57,7 +57,6 @@ download.path: /WIDE/workspace/files/data
 # PG
 pg:
     kcp:
-#        log.dir: D:\\WIDE\\workspace\\files\\data\\style24\\logs\\front
         log.dir: /WIDE/workspace/files/data/style24/logs/front
         gw:
             url: testpaygw.kcp.co.kr

+ 17 - 0
src/main/resources/config/application-tsit.yml

@@ -55,6 +55,23 @@ upload:
 
 download.path: /TSIT/servers/files/data
 
+# PG
+pg:
+    kcp:
+        log.dir: D:/TSIT/servers/bin/apache-tomcat/startup/style24/style24.front/kcpLogs/front
+        gw:
+            url: http://testpaygw.kcp.co.kr
+            port: 8090
+        js.url: http://testpay.kcp.co.kr/plugin/payplus_web.jsp
+        server: false
+        site:
+            cd: T0000
+            key: 3grptw1.zW0GSo4PQdaGvsF__
+            name: KCP TEST SHOP
+        log.level: 3
+        module.type: 01
+        tx.mode: 0
+
 # 네이버페이 API
 naverPay:
     apiUrl: https://dev.apis.naver.com/

+ 66 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+
+
+<body>
+
+<th:block layout:fragment="content">
+
+<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
+<script type="text/javascript" src="/ux/mo/js/payment.js"></script>
+<script type="text/javascript">
+	$(document).on("click", "#buyBtn", function() {
+		let orderData = {
+			pgGb		: "KCP"
+			, payMeans	: "G014_30"
+			, ordNo		: "5"
+			, goodsNm	: "상품 테스트"
+			, payAmt	: "1233"
+			, ordNm		: "이태영"
+			, ordEmail	: "xodud1202@naver.com"
+			, ordTelno	: "02-0000-0000"
+			, ordPhnno	: "010-7111-0000"
+		};
+
+		let jsonData = JSON.stringify(orderData);
+
+		$.ajax( {
+			type		: "POST",
+			url			: '/order/create/preOrder',
+			data		: jsonData,
+			dataType	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+				gagajf.showProgressbar(true);
+			},
+			error : function(e) {
+				alert(3);
+			},
+			success 	: function(result) {
+				// 결재정보로드
+				$("#orderInfo").html(result);
+				kcp_AJAX();
+				//jsf__pay(document.order_info);
+				//fnKakaoPaymentReady();
+				//fnNaverPaymentReady();
+			}
+		});
+	});
+</script>
+
+
+
+
+<div id="orderInfo" name="orderInfo"></div>
+<input type="button" id="buyBtn" value="KCP TEST" style="width:100px;height:200px;" />
+
+</th:block>
+
+</body>
+
+</html>

+ 0 - 42
src/main/webapp/WEB-INF/views/mob/order/OrderNoMemberMob.html

@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org"
-	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="mob/common/layout/DefaultLayoutMob">
-
-<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
-<script type="text/javascript" src="/ux/pc/js/payment.js"></script>
-<script type="text/javascript">
-	$(document).on("click", "#buyBtn", function() {
-		$.ajax({
-			type: "POST",
-			url : '/order/create/preOrder',
-			dataType : 'html',
-			data : {
-				pgGb		: "KCP"
-				, payMeans	: "G014_30"
-				, ordNo		: "5"
-				, goodsNm	: "상품 테스트"
-				, payAmt	: "1233"
-				, ordNm		: "이태영"
-				, ordEmail	: "xodud1202@naver.com"
-				, ordTelno	: "02-0000-0000"
-				, ordPhnno	: "010-7111-0000"
-			},
-			error : function(e) {
-				alert(3);
-			},
-			success : function(result) {
-				$("#order_info").html(result);
-				jsf__pay(document.order_info);
-			}
-		});
-	});
-</script>
-
-
-
-<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
-
-
-
-</html>

+ 9 - 8
src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html

@@ -3,6 +3,8 @@
 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 <meta http-equiv="Pragma" content="no-cache">
 <meta http-equiv="Expires" content="-1">
+
+<form id="order_info" name="order_info" method="post" action="/order/pay/result/response" >
 	<!-- 페이코 송부 정보 -->
 	<th:block th:if="${!#strings.isEmpty(payment.paycoDirect)}">
 		<input type="hidden" name="payco_direct"	th:value="${payment.paycoDirect}" />
@@ -20,16 +22,17 @@
 	<input type="hidden" name="shop_name"		th:value="${payment.siteName}" />	<!-- 상점이름(영문으로 작성권장) -->
 	<input type="hidden" name="site_cd"			th:value="${payment.siteCd}" />		<!-- 필수, 상점코드 -->
 	<input type="hidden" name="currency"		th:value="${payment.currency}" />	<!-- 필수, 원화 : WON / 달러 : USD -->
-	<input type="hidden" name="approval_key"	th:value="${pament.approvalKey}" id="approval" />	<!-- 결제등록 키 -->
-	<input type="hidden" name="escw_used"		value="N">	<!-- 인증시 필요한 파라미터(변경불가)-->
-	<input type="hidden" name="pay_method"		th:value="${payment.payMethod}" />	<!-- 필수, 결제수단코드(신용카드 : 100000000000, 계좌이체 : 010000000000, 가상계좌 : 001000000000, 포인트 : 000100000000, 휴대폰 : 000010000000, 상품권 : 000000001000, ARS : 000000000010) -->
+	<input type="hidden" name="approval_key"	th:value="${payment.approvalKey}" id="approval" />	<!-- 결제등록 키 -->
+	<input type="hidden" name="escw_used"		value="N">							<!-- 인증시 필요한 파라미터(변경불가)-->
+	<input type="hidden" name="pay_method"		th:value="${payment.payMethod}" />	<!-- 필수, 결제수단코드(신용카드 : CARD, 계좌이체 : BANK, 가상계좌 : VCNT, 휴대폰 : MOBX) -->
+	<input type="hidden" name="ActionResult"	th:value="${payment.actionResult}" /><!-- 필수, 인증수단(신용카드 : card, 계좌이체 : acnt, 가상계좌 : bcnt, 휴대폰 : mobx) -->
 	<input type="hidden" name="van_code"		value="">							<!-- 인증시 필요한 파라미터(변경불가)-->
 	<input type="hidden" name="quotaopt"		th:value="${payment.quotaopt}"/>	<!-- 최대 할부 개월 수(0 ~ 18까지 설정 가능) -->
 	<input type="hidden" name="ipgm_date"		value=""/>							<!-- 가상계좌설정 -->
-	<input type="hidden" name="Ret_URL"			value="/order/form">				<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
+	<input type="hidden" name="Ret_URL"			value="http://ldfront.style24.com/order/pay/result/test">	<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
 	<input type="hidden" name="tablet_size"		value="1.0">						<!-- 화면 크기 조정 -->
 	<input type="hidden" name="response_type"	value="TEXT"/>						<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
-	<input type="hidden" name="PayUrl"			value="" id="PayUrl"/>				<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
+	<input type="hidden" name="PayUrl"			value="http://ldfront.style24.com/order/create/preOrder" id="PayUrl"/>	<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
 	<input type="hidden" name="traceNo"			value="" id="traceNo"/>				<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
 	<input type="hidden" name="res_cd"			value=""/>							<!-- 결과코드 -->
 	<input type="hidden" name="res_msg"			value=""/>							<!-- 결과메세지 -->
@@ -61,8 +64,6 @@
 	<!-- 가상계좌 설정 -->
 
 
-	<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
-	<input type="hidden" name="Ret_URL"         value="<%=url%>">
 	<!-- 화면 크기조정 -->
 	<input type="hidden" name="tablet_size"     value="<%=tablet_size%>">
 
@@ -109,5 +110,5 @@
 	<!-- 네이버페이 관련 정보 -->
 	<input type="hidden" name="reserveId" th:value="${payment.reserveId}"/>
 	<input type="hidden" name="paymentId" value=""/>
-
+</form>
 </html>

+ 0 - 0
src/main/webapp/WEB-INF/views/web/cart/cartChangeOptionPopupWeb.html → src/main/webapp/WEB-INF/views/web/cart/CartChangeOptionPopupWeb.html


+ 0 - 0
src/main/webapp/WEB-INF/views/web/cart/cartListAjaxFormWeb.html → src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html


+ 0 - 0
src/main/webapp/WEB-INF/views/web/cart/cartListFormWeb.html → src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html


+ 14 - 3
src/main/webapp/ux/mo/js/payment.js

@@ -28,7 +28,7 @@ function kcp_AJAX() {
 	// javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
 	// 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
 	if(ajax_flag) {
-		var url    = "order_approval.jsp";
+		var url    = "/pg/kcp/approval";
 		var form = document.order_info;
 		var params = "?site_cd=" + form.site_cd.value
 			+ "&ordr_idxx=" + form.ordr_idxx.value
@@ -205,6 +205,17 @@ var isMobile = {
 	}
 };
 
-if( isMobile.any() )
-	document.getElementById("cssLink").setAttribute("href", controlCss);
+/*if( isMobile.any() )
+	document.getElementById("cssLink").setAttribute("href", controlCss);*/
 
+function jsf__chk_type() {
+	if ( document.order_info.ActionResult.value == "card" ) {
+		document.order_info.pay_method.value = "CARD";
+	} else if ( document.order_info.ActionResult.value == "acnt" ) {
+		document.order_info.pay_method.value = "BANK";
+	} else if ( document.order_info.ActionResult.value == "vcnt" ) {
+		document.order_info.pay_method.value = "VCNT";
+	} else if ( document.order_info.ActionResult.value == "mobx" ) {
+		document.order_info.pay_method.value = "MOBX";
+	}
+}