Browse Source

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

# Conflicts:
#	src/main/java/com/style24/front/biz/web/TsfOrderController.java
card007 5 years ago
parent
commit
1fe9cb72ba

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

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
+import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscOrderService;
@@ -27,6 +28,7 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 

+ 58 - 19
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -6,8 +6,9 @@ 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.web.bind.annotation.PathVariable;
+import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -15,11 +16,13 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscFreegiftService;
 import com.style24.core.biz.service.TscKakaoPayService;
 import com.style24.core.biz.service.TscOrderService;
+import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfOrderService;
@@ -58,6 +61,9 @@ public class TsfOrderController extends TsfBaseController {
 	
 	@Autowired
 	private TscKakaoPayService kakaoPayService;
+
+	@Autowired
+	private Environment env;
 	
 	/**
 	 * 회원, 비회원 주문페이지
@@ -188,7 +194,7 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// 3.3 배송비쿠폰목록 조회
 		Collection<Order> delvCpnList = coreOrderService.getDelvCpnList(order);
-		
+
 		Collection<Order> delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
 		
 		// 3.3.1 배소업체기준 ---> 배송비쿠폰
@@ -248,23 +254,6 @@ public class TsfOrderController extends TsfBaseController {
 		return mav;
 	}
 
-	/**
-	 * 총알배송 가능 지역 체크
-	 *
-	 * @param
-	 * @return
-	 * @author jsh77b
-	 * @since 2021. 02. 08
-	 */
-	@ResponseBody
-	@RequestMapping(value = "/create/order")
-	public ModelAndView createOrder(Order order) {
-		ModelAndView mav = new ModelAndView();
-
-		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
-		return mav;
-	}
-
 	/**
 	 * 주문페이지
 	 *
@@ -396,6 +385,56 @@ public class TsfOrderController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 주문 데이터 생성
+	 *
+	 * @param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 03. 04
+	 */
+	@PostMapping("/create/order")
+	public ModelAndView createOrder(Order order) {
+		ModelAndView mav = new ModelAndView();
+
+		// KCP CARD 전송 데이터
+		Payment payment = new Payment();
+		// KCP 주문요청 공통 데이터
+		payment.setReqTx("pay");						// 필수 (주문시 only "pay")
+		payment.setOrdrIdxx((int)(Math.random()*10000));// 필수
+		payment.setPayMethod("100000000000");			// 필수 결제수단코드(신용카드 : 100000000000, 계좌이체 : 010000000000, 가상계좌 : 001000000000, 포인트 : 000100000000, 휴대폰 : 000010000000, 상품권 : 000000001000, ARS : 000000000010)
+		payment.setGoodName("LTY_TEST_GOODS_NAME");		// 필수
+		payment.setGoodMny(1779);						// 필수
+		payment.setBuyrName("LTY");						// 필수
+		payment.setBuyrMail("xodud1202@naver.com");		// 선택
+		payment.setBuyrTel1("");						// 선택, 일반 전화번호
+		payment.setBuyrTel2("010-7111-4489");			// 필수, 휴대폰번호
+		payment.setCurrency("WON");						// 필수, 원화 : WON, 달러 : USD
+		payment.setShopUserId(1000006);					// 필수, 쇼핑몰회원ID (CUST_NO)
+		// KCP 공통 변경되지 않는 값
+		payment.setSiteCd(env.getProperty("pg.kcp.site.cd"));		// 상점코드
+		payment.setSiteName(env.getProperty("pg.kcp.site.name"));	// 상점 이름 (영문 작성 권장)
+		payment.setModuleType(env.getProperty("pg.kcp.module.type"));
+		payment.setGoodExpr("0");									// 제공 기간 설정 0:일회성 1:기간설정(ex 1:2012010120120131)
+
+		// KCP 신용카드 옵션
+		payment.setQuotaopt(12);						// 최대 할부 개월 수
+
+		// KCP PAYCO
+		if(!StringUtils.isEmpty(payment.getPgGb()) && TscConstants.PgGb.PAYCO.value().equals(payment.getPgGb())) {		// PAYCO일경우
+			payment.setPaycoDirect("Y");
+			payment.setPayMthod("100000000000");		// PAYCO일때 payMethod 뿐 아니라 payMthod도 송부해야함. cart와 동일하게 송부하면됨.
+			payment.setPayMethod("100000000000");		// CARD로 변경
+		}
+
+		mav.addObject("payment", payment);
+		//model.addAttribute("payment", payment);
+
+		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
+		return mav;
+		//return super.getDeviceViewName("pg/kcpOrder");
+	}
+
 	/**
 	 * 카카오페이 결제준비 처리
 	 *

+ 4 - 3
src/main/resources/config/application-locd.yml

@@ -64,9 +64,10 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0007
-            key: 4Ho4YsuOZlLXUZUdOxM1Q7X__
+            cd: T0000
+            key: 3grptw1.zW0GSo4PQdaGvsF__
             name: KCP TEST SHOP
         log.level: 3
         module.type: 01
-        tx.mode: 0
+        tx.mode: 0
+

+ 6 - 1
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -72,12 +72,17 @@
 			}
 		}
 
+
+
 		$(document).on("click", "#buyBtn", function() {
-			$.ajax( {
+			$.ajax({
 				type: "POST",
 				url : '/order/create/order',
 				dataType : 'html',
 				data : {cartSq : 8},
+				error : function(e) {
+					alert(3);
+				},
 				success : function(result) {
 					$("#order_info").html(result);
 					jsf__pay(document.order_info);

+ 32 - 28
src/main/webapp/WEB-INF/views/web/pg/kcpOrderWeb.html

@@ -1,29 +1,40 @@
 <html lang="ko" xmlns:th="http://www.thymeleaf.org">
 	<!-- 선택, 상점이름(영문으로 작성권장) -->
-	<input type="hidden" name="site_name" th:value="${@environment.getProperty('pg.kcp.site.name')}" />
+	<input type="hidden" name="site_name"	th:value="${payment.siteName}" />
 	<!-- 필수, 상점코드 -->
-	<input type="hidden" name="site_cd" th:value="${@environment.getProperty('pg.kcp.site.cd')}" />
-
-	<input type="hidden" name="payco_redirect"	value="Y" />				<!-- 페이코 진행시 -->
-	<input type="hidden" name="pay_mthod"		value="100000000000" />		<!-- 페이코 진행시 -->
-	<input type="hidden" name="req_tx"			value="pay" />				<!-- 필수, 요청의 종류를 구분하는 변수 결제요청페이지의 경우 ‘pay’로 설정 -->
-	<input type="hidden" name="ordr_idxx"		value="100" />				<!-- 필수, 상점 관리 주문번호 (유니크한 값 설정 권장) -->
-	<input type="hidden" name="pay_method"		value="100000000000" />		<!-- 필수, 결제수단코드(신용카드 : 100000000000, 계좌이체 : 010000000000, 가상계좌 : 001000000000, 포인트 : 000100000000, 휴대폰 : 000010000000, 상품권 : 000000001000, ARS : 000000000010) -->
-	<input type="hidden" name="good_name"		value="TEST NAME" />		<!-- 필수, 상품명 -->
-	<input type="hidden" name="good_mny"		value="2000" />				<!-- 필수, 주문요청금액 (※ 화폐단위가 ‘USD’ 일 경우, Cent까지 설정 ex ) $10.55 일 경우 콤마를 뺀 1055, $100 일 경우 10000로 설정 -->
-	<input type="hidden" name="buyr_name"		value="LTY" />				<!-- 필수, 주문자 이름 -->
-	<input type="hidden" name="buyr_mail"		value="test@test.com" />	<!-- 선택, 주문자 이메일 -->
-	<input type="hidden" name="buyr_tel1"		value="" />					<!-- 선택, 주문자 전화번호 -->
-	<input type="hidden" name="buyr_tel2"		value="010-7111-4489" />	<!-- 필수, 주문자 휴대폰번호 -->
-	<input type="hidden" name="currency"		value="WON" />				<!-- 필수, 원화 : WON / 달러 : USD -->
-	<input type="hidden" name="shop_user_id"	value="xodud1202" />		<!-- 필수, 쇼핑몰회원ID 기관에 따라 RM 조치를 위해 쇼핑몰 관리 ID를 필수로 요청 -->
-
-	<input type="hidden" name="quotaopt"        value="12"/>				<!-- 최대 할부 개월 수(0 ~ 18까지 설정 가능) -->
+	<input type="hidden" name="site_cd"		th:value="${payment.siteCd}" />
+
+	<!-- 페이코 송부 정보 -->
+	<th:block th:if="${!#strings.isEmpty(payment.paycoDirect)}">
+		<input type="hidden" name="payco_direct"	th:value="${payment.paycoDirect}" />
+		<input type="hidden" name="pay_mthod"		th:value="${payment.payMthod}" />
+	</th:block>
+
+	<input type="hidden" name="req_tx"			th:value="${payment.reqTx}" />		<!-- 필수, 요청의 종류를 구분하는 변수 결제요청페이지의 경우 ‘pay’로 설정 -->
+	<input type="hidden" name="ordr_idxx"		th:value="${payment.ordrIdxx}" />	<!-- 필수, 상점 관리 주문번호 (유니크한 값 설정 권장) -->
+	<input type="hidden" name="pay_method"		th:value="${payment.payMethod}" />	<!-- 필수, 결제수단코드(신용카드 : 100000000000, 계좌이체 : 010000000000, 가상계좌 : 001000000000, 포인트 : 000100000000, 휴대폰 : 000010000000, 상품권 : 000000001000, ARS : 000000000010) -->
+	<input type="hidden" name="good_name"		th:value="${payment.goodName}" />	<!-- 필수, 상품명 -->
+	<input type="hidden" name="good_mny"		th:value="${payment.goodMny}" />	<!-- 필수, 주문요청금액 (※ 화폐단위가 ‘USD’ 일 경우, Cent까지 설정 ex ) $10.55 일 경우 콤마를 뺀 1055, $100 일 경우 10000로 설정 -->
+	<input type="hidden" name="buyr_name"		th:value="${payment.buyrName}" />	<!-- 필수, 주문자 이름 -->
+	<input type="hidden" name="buyr_mail"		th:value="${payment.buyrMail}" />	<!-- 선택, 주문자 이메일 -->
+	<input type="hidden" name="buyr_tel1"		th:value="${payment.buyrTel1}" />	<!-- 선택, 주문자 전화번호 -->
+	<input type="hidden" name="buyr_tel2"		th:value="${payment.buyrTel2}" />	<!-- 필수, 주문자 휴대폰번호 -->
+	<input type="hidden" name="currency"		th:value="${payment.currency}" />	<!-- 필수, 원화 : WON / 달러 : USD -->
+	<input type="hidden" name="shop_user_id"	th:value="${payment.shopUserId}" />	<!-- 필수, 쇼핑몰회원ID 기관에 따라 RM 조치를 위해 쇼핑몰 관리 ID를 필수로 요청 -->
+
+	<input type="hidden" name="quotaopt"		th:value="${payment.quotaopt}"/>	<!-- 최대 할부 개월 수(0 ~ 18까지 설정 가능) -->
+
+	<!-- 2012년 8월 18일 전자상거래법 개정 관련 설정 부분 -->
+	<!-- 제공 기간 설정 0:일회성 1:기간설정(ex 1:2012010120120131)  -->
+	<input type="hidden" name="good_expr"		th:value="${payment.goodExpr}" />
+
+	<!-- 표준웹 설정 정보입니다(변경 불가) -->
+	<input type="hidden" name="module_type"		th:value="${payment.moduleType}" />
 
 	<!--
-		  ※ 필 수
-			  필수 항목 : 표준웹에서 값을 설정하는 부분으로 반드시 포함되어야 합니다
-			  값을 설정하지 마십시오
+			※ 필 수
+			필수 항목 : 표준웹에서 값을 설정하는 부분으로 반드시 포함되어야 합니다
+			값을 설정하지 마십시오
 	-->
 	<input type="hidden" name="res_cd"          value=""/>
 	<input type="hidden" name="res_msg"         value=""/>
@@ -41,11 +52,4 @@
 	<input type="hidden" name="cash_tr_code"    value=""/>
 	<input type="hidden" name="cash_id_info"    value=""/>
 
-	<!-- 2012년 8월 18일 전자상거래법 개정 관련 설정 부분 -->
-	<!-- 제공 기간 설정 0:일회성 1:기간설정(ex 1:2012010120120131)  -->
-	<input type="hidden" name="good_expr" value="0">
-
-	<!-- 표준웹 설정 정보입니다(변경 불가) -->
-	<input type="hidden" name="module_type" th:value="${@environment.getProperty('pg.kcp.module.type')}" />
-
 </html>