Ver Fonte

Merge remote-tracking branch 'origin/xodud1202' into order

card007 há 5 anos atrás
pai
commit
9bf36ceec6

+ 7 - 7
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -331,16 +331,16 @@ public class TsfCartService {
 					cart.setTmtbDcAmt(cart.getCurrPrice());
 				}
 			}
+		}
 
-			// 장바구니 업체별 배송비 계산
-			setCartListDelvFeeInfo(cartGoodsList);
+		// 장바구니 업체별 배송비 계산
+		setCartListDelvFeeInfo(cartGoodsList);
 
-			// 자사 / 입점업체 리스트 분리
-			order = getCartDelvGoodsCntList(cartGoodsList);
+		// 자사 / 입점업체 리스트 분리
+		order = getCartDelvGoodsCntList(cartGoodsList);
 
-			// 총계 금액 계산
-			setCartListTotAmtInfo(cartGoodsList, order);
-		}
+		// 총계 금액 계산
+		setCartListTotAmtInfo(cartGoodsList, order);
 
 		return order;
 	}

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

@@ -19,6 +19,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;
@@ -360,6 +361,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);

+ 7 - 5
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;
 	}
 
@@ -123,6 +123,10 @@ public class TsfCartController extends TsfBaseController {
 			order.setShotCanYn("Y");
 			order.setShotDelvDt(format.format(time));
 		} else {
+			SimpleDateFormat format = new SimpleDateFormat ( "MM/dd");
+			Date time = new Date();
+			order.setShotDelvDt(format.format(time));
+
 			order.setShotCanYn("N");
 			order.setShotDelvYn("N");
 		}
@@ -133,9 +137,7 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
-		log.info("CHECK SESSION CARTSQARR INFO ::: {}", TsfSession.getAttribute("cartSqArr"));
-
-		return super.getDeviceViewName("cart/cartListAjaxForm");
+		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 
 	@ResponseBody
@@ -196,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");
 	}
 
 	/**

+ 47 - 6
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -91,8 +91,8 @@ public class TsfOrderController extends TsfBaseController {
 		order.setCartSqArr(arr);		// 장바구니시퀀스
 		order.setShotDelvUseYn("Y");	// 장바구니총알배송사용여부
 		
-		mav.addObject("order" 	, order);										// 주문정보
-		mav.addObject("isLogin"	, TsfSession.isLogin());						// 로그인여부
+		mav.addObject("order" 	, order);						// 주문정보
+		mav.addObject("isLogin"	, TsfSession.isLogin());		// 로그인여부
 		mav.setViewName(super.getDeviceViewName("order/OrderNoMember"));		// 비회원주문서화면
 
 		return mav;
@@ -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;
+	}
 }

+ 25 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -26,6 +26,8 @@
 		AND    OD.ORD_EXCH_GB = 'O'
 		AND    DATE(ORD_DT) = CURRENT_DATE
 		AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_00'
+		AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_98'
+		AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_99'
 		AND    OD.GOODS_CD = #{goodsCd}
 		AND    O.CUST_NO = #{custNo}
 	</select>
@@ -510,7 +512,7 @@
 			 , Z.SUPPLY_COMP_CD
 			 , Z.DELV_FEE_CD
 			 , (Z.CURR_PRICE + Z.OPT_ADD_PRICE) * Z.GOODS_QTY AS CURR_PRICE
-			 , Z.SOLDOUT_YN
+			 , CASE WHEN Z.SOLDOUT_YN = 'N' AND Z.CUST_TODAY_ORD = 0 AND Z.NOCUST_TODAY_ORD = 0 THEN 'N' ELSE 'Y' END AS SOLDOUT_YN
 			 , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
 					ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
 			 , SYS_IMG_NM
@@ -533,8 +535,8 @@
 					 , FN_GET_APPLY_CPN1_PRICE(C.GOODS_CD, #{frontGb}) AS CURR_PRICE
 					 , IFNULL(O.ADD_PRICE, 0) AS OPT_ADD_PRICE
 					 , BR.BRAND_ENM
-		             , BR.BRAND_KNM
-		             , CT.CUST_GRADE
+					 , BR.BRAND_KNM
+					 , CT.CUST_GRADE
 					 , CASE WHEN GOG.CUST_GRADE IS NOT NULL AND GOG.CUST_GRADE = IFNULL(CT.CUST_GRADE, '') THEN GOG.CUST_GRADE
 							WHEN GOG.CUST_GRADE IS NOT NULL THEN 'NO'
 							ELSE CT.CUST_GRADE END AS ORDER_GRADE
@@ -542,22 +544,34 @@
 					 , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CD.ITEM_CD) AS ITEM_NM
 					 , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
 							ELSE DFP.DELV_FEE_CD END AS DELV_FEE_CD
+					 , CASE WHEN C.CUST_NO > 0 AND (SELECT IFNULL(SUM(OD.ORD_QTY), 0)
+													FROM   TB_ORDER_DETAIL OD
+													INNER  JOIN TB_ORDER O
+													ON     OD.ORD_NO = O.ORD_NO
+													WHERE  O.CUST_NO = C.CUST_NO
+													AND    OD.ORD_EXCH_GB = 'O'
+													AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_00'
+													AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_98'
+													AND    OD.ORD_DTL_STAT <![CDATA[ <> ]]> 'G013_99'
+													AND    OD.GOODS_CD = C.GOODS_CD
+													AND    DATE(ORD_DT) = CURRENT_DATE) + C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END CUST_TODAY_ORD
+					 , CASE WHEN C.CUST_NO = 0 AND C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END AS NOCUST_TODAY_ORD
 					 , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = CD.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
 							ELSE (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
 				FROM   TB_CART C
 				INNER  JOIN TB_CART_DETAIL CD
-				ON	 C.CART_SQ = CD.CART_SQ
+				ON     C.CART_SQ = CD.CART_SQ
 				INNER  JOIN TB_GOODS G
-				ON	 C.GOODS_CD = G.GOODS_CD
+				ON     C.GOODS_CD = G.GOODS_CD
 				INNER  JOIN TB_BRAND BR 
-				ON	 G.BRAND_CD = BR.BRAND_CD
+				ON     G.BRAND_CD = BR.BRAND_CD
 				INNER  JOIN TB_DELV_FEE_POLICY DFP
-				ON	 G.DELV_FEE_CD = DFP.DELV_FEE_CD
+				ON     G.DELV_FEE_CD = DFP.DELV_FEE_CD
 				INNER  JOIN TB_OPTION O
-				ON	 CD.ITEM_CD = O.GOODS_CD
-				AND	CD.OPT_CD = O.OPT_CD
+				ON     CD.ITEM_CD = O.GOODS_CD
+				AND    CD.OPT_CD = O.OPT_CD
 				INNER  JOIN (   SELECT A.CART_SQ
-									 , MIN(A.SOLDOUT_YN) AS SOLDOUT_YN
+									 , MAX(A.SOLDOUT_YN) AS SOLDOUT_YN
 								FROM   (SELECT C.CART_SQ
 											 , CASE WHEN VS.SOLDOUT_YN = 'N' AND VS.CURR_STOCK_QTY >= C.GOODS_QTY * GC.QTY THEN 'N'
 													ELSE 'Y' END AS SOLDOUT_YN
@@ -609,7 +623,7 @@
 									   ) A
 								GROUP  BY  A.CART_SQ
 					   ) STOCK
-				ON	   C.CART_SQ = STOCK.CART_SQ
+				ON     C.CART_SQ = STOCK.CART_SQ
 				LEFT   OUTER JOIN TB_CUSTOMER CT
 				ON     C.CUST_NO = CT.CUST_NO
 				LEFT   OUTER JOIN TB_GOODS_ORDER_GRADE GOG

+ 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


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

@@ -1,11 +1,11 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org">
 <form id="cartListForm" method="post" action="/order/noMember">
-	<input type="hidden" name="cartCpnDcAmt" id="cartCpnDcAmt" th:value="${param.cartCpnDcAmt}" />
+	<!--<input type="hidden" name="cartCpnDcAmt" id="cartCpnDcAmt" th:value="${param.cartCpnDcAmt}" />-->
 
 	<!-- CONT-BODY -->
 	<div class="od_cont">
-		<div class="sec_head" th:if="${order.shotCanYn.equals('Y')}">
+		<div class="sec_head shotDelvSelect">
 			<div class="tbl type4">
 				<table>
 					<colgroup>
@@ -20,11 +20,11 @@
 						<td>
 							<div class="form_field">
 								<div>
-									<input type="radio" name="shotDelvYn" id="blt_ship1" value="">
+									<input type="radio" name="shotDelvUseYn" id="blt_ship1" value="Y" th:checked="${order.shotCanYn.equals('Y')}">
 									<label for="blt_ship1"><span><em class="tag">총알배송</em><span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span></span></label>
 								</div>
 								<div>
-									<input type="radio" name="shotDelvYn" id="blt_ship2" value="" checked="">
+									<input type="radio" name="shotDelvUseYn" id="blt_ship2" value="N" th:checked="${!order.shotCanYn.equals('Y')}">
 									<label for="blt_ship2"><span>총알 배송 안함</span></label>
 								</div>
 							</div>
@@ -139,7 +139,7 @@
 											<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>p 적립예정</p>
 											<p>
 												<button th:if="${cart.soldoutYn.equals('Y')}" type="button" class="btn btn_sm" disabled><span>구매불가</span></button>
-												<button th:if="${cart.soldoutYn.equals('N')}" type="button" class="btn btn_primary btn_sm"><span>즉시구매</span></button>
+												<button th:if="${cart.soldoutYn.equals('N')}" type="button" class="btn btn_primary btn_sm" th:onclick="|submitNoMember(${cart.cartSq})|"><span>즉시구매</span></button>
 											</p>
 											<p class="util">
 										<span>
@@ -274,7 +274,7 @@
 											<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>p 적립예정</p>
 											<p>
 												<button th:if="${cart.soldoutYn.equals('Y')}" type="button" class="btn btn_sm" disabled><span>구매불가</span></button>
-												<button th:if="${cart.soldoutYn.equals('N')}" type="button" class="btn btn_primary btn_sm"><span>즉시구매</span></button>
+												<button th:if="${cart.soldoutYn.equals('N')}" type="button" class="btn btn_primary btn_sm" th:onclick="|submitNoMember(${cart.cartSq})|"><span>즉시구매</span></button>
 											</p>
 											<p class="util">
 										<span>
@@ -394,7 +394,8 @@
 <div class="modal fade od_pop opt_modify_pop" id="optModifyPop" tabindex="-1" role="dialog" aria-labelledby="optModifyLabel" aria-hidden="true"></div>
 <!-- //옵션변경 팝업 -->
 
-
+<!-- 즉시구매 form -->
+<form id="cartInfoForm" method="post" action="/order/noMember"></form>
 <!-- KCP PG TEST -->
 <form name="order_info" method="post" action="pp_cli_hub.jsp" >
 </form>
@@ -415,8 +416,12 @@
 	}
 
 	$(document).ready(function() {
+		if([[${!order.shotCanYn.equals('Y')}]]) {
+			// $(".shotDelvSelect").hide();
+		}
+
 		$("#cartListForm .area_salecoupon .coupon_box").hide();
-		/* TODO 로그인 안했으면 .area_salecoupon (할인코드 입력 부 및 쿠폰정보영역) hide 시킬것 */
+
 		let loginInfo = [[${loginInfo}]];
 		if(!loginInfo || loginInfo.custNo == null || loginInfo.custNo == 0) {
 			$("#cartListForm .area_salecoupon").hide();
@@ -466,7 +471,7 @@
 
 		cfnAddCart(compsList);*/
 
-		let compsList = [];
+		/*let compsList = [];
 		let temp = new Object;
 		temp.goodsCd = "14373686";
 		temp.optCd = "챠콜그레이150";
@@ -493,7 +498,7 @@
 		temp.planDtlSq = "123";
 		compsList.push(temp);
 
-		cfnAddCart(compsList);
+		cfnAddCart(compsList);*/
 	});
 
 	function notApplyTmtbAreaList() {
@@ -979,5 +984,16 @@
 			}
 		});
 	}
+
+	function submitNoMember(cartSq) {
+		if(cartSq == "all") {
+			$("#cartListForm").submit();
+		} else {
+			let html	 = "<input type='hidden' name='cartSqArr' value='" + cartSq + "' />";
+			html		+= "<input type='hidden' name='shotDelvUseYn' value='" + $("input[name=shotDelvUseYn]:checked").val() + "' />";
+			$("#cartInfoForm").html(html);
+			$("#cartInfoForm").submit();
+		}
+	}
 </script>
 </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";
+	}
+}

+ 1 - 1
src/main/webapp/ux/pc/css/common.css

@@ -1202,7 +1202,7 @@ input[type="file"] {
 .quick_menu_group .area > div:first-child span:first-child a{margin-left:0}
 .quick_menu_group .area > div:first-child span:first-child a:after{display:none}
 .quick_menu_group .area > div:first-child span a:after{position:absolute;top:13px;left:0;width:1px;height:13px;background:#959596;content:''}
-.quick_menu_group .inr a{margin-left:16px;color:#eeeeee;}*/
+.quick_menu_group .inr a{margin-left:16px;color:#eeeeee;}