浏览代码

이태영 - 20210526 네이버페이 주문형 개발 중

xodud lee 5 年之前
父节点
当前提交
bfbac162a2

+ 6 - 1
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1309,7 +1309,12 @@ public class TsfOrderService {
 			param.setOrdNo(ordNo);
 			param.setUpdNo(custNo);
 			coreOrderDao.updateNaverPayOrderNo(param);
-			result.put("npayOrderUrl", env.getProperty("naverPay.order.url"));
+			if(TscConstants.FrontGb.PC.value().equals(TsfSession.getFrontGb())) {
+				result.put("npayOrderUrl", env.getProperty("naverPay.order.pc.url"));
+			} else {
+				result.put("npayOrderUrl", env.getProperty("naverPay.order.mobile.url"));
+			}
+
 			result.put("orderkey", param.getNpayOrdNo());
 			result.put("resultNo", result.get("resultNo").toString());
 

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

@@ -87,10 +87,13 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id : istyle24
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url : https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url : https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 0
src/main/resources/config/application-run.yml

@@ -110,9 +110,13 @@ naverPay:
         mob : m.pay.naver.com
     shop.id: istyle2424
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
+    button.pc.js.url: https://pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
+    order.pc.url: https://order.pay.naver.com/customer/buy/
+    order.mobile.url: https://m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 1
src/main/resources/config/application-style.yml

@@ -98,10 +98,13 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id: istyle24
     button.key: 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 1
src/main/resources/config/application-tsit.yml

@@ -92,7 +92,10 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id : istyle24
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 102 - 3
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -18,6 +18,8 @@
  -->
 <body>
 <th:block layout:fragment="content">
+<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+<form id="nPayForm" name="nPayForm"></form>
 <form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
 		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
@@ -176,9 +178,106 @@
 							<div class="opt_result">
 							</div>
 						</div>
-						<!-- 네이버결제 -->
-						<div class="npay_box">
-							네이버페이 영역
+						<div style="margin-top:10px;">
+							<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+								<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+								<script type="text/javascript" >
+									/*버튼설정*/
+									naver.NaverPayButton.apply({
+										BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+										TYPE                    : "MA",                      // 버튼 모음 종류 설정
+										COLOR                   : 1,                        // 버튼 모음의 색 설정
+										COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+										ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+										BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+										"":""
+									});
+
+									/*네이버구매하기*/
+									function buy_nc(url) {
+										// 자사 일반 상품 정보
+										let compsList = [];
+
+										$("#cartForm .result_item input[name=cea]").each(function() {
+											let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+											let goodsType = "[[${goodsInfo.goodsType}]]";
+											let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+											let optCd = $(this).attr("optcd");
+											let goodsQty = $(this).val();
+
+											if (!goodsCd) {
+												mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+												return false;
+											}
+
+											if (!goodsQty || goodsQty < 1) {
+												mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+												return false;
+											}
+
+											if (!optCd) {
+												mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+												return false;
+											}
+
+											var obj = new Object();
+											obj.cartGb = "N";
+											obj.goodsType = goodsType;
+											obj.goodsCd = goodsCd;
+											obj.optCd = optCd;
+											obj.goodsQty = goodsQty;
+											obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+											obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+											obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+											obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+											obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+											compsList.push(obj);
+										});
+
+										// 장바구니담기
+										cfnAddCart(compsList);
+
+										return false;
+									}
+
+									function buy_nc_req(cartSqArr) {
+										let data = {  cartSqArr : cartSqArr
+											, backUrl : location.href
+											, goodsUrl : _PAGE_GOODS_DETAIL
+										};
+										let jsonData = JSON.stringify(data);
+
+										$.ajax( {
+											type		: "POST",
+											url 		: "/pg/nPayReq",
+											dataType 	: 'json',
+											data		: jsonData,
+											beforeSend : function(xhr, settings) {
+												xhr.setRequestHeader("AJAX"			, "true");
+												xhr.setRequestHeader('Accept'		, 'application/json');
+												xhr.setRequestHeader('Content-Type'	, 'application/json');
+											},
+											error: function(xhr, status, error) {
+												mcxDialog.alert(status + '; ' + error);
+											},
+											success : function(result) {
+												if (result.state == "sucess") {
+													document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+													document.nPayForm.submit();
+												} else {
+													mcxDialog.alert(result.message);
+												}
+											}
+										});
+									}
+
+									<!-- 구매불가 -->
+									function not_buy_nc() {
+										mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+										return false;
+									}
+								</script>
+							</th:block>
 						</div>
 					</div>
 					<!-- 옵션선택팝업 -->

+ 170 - 9
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -18,6 +18,7 @@
  -->
 <body>
 <th:block layout:fragment="content">
+	<form id="nPayForm" name="nPayForm"></form>
 	<form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
 		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
@@ -944,15 +945,175 @@
 						</div>
 						</th:block>
 					</div>
-					<!-- 네이버결제 -->
-					<div class="npay_box"  style="display:none;">
-						<div class="np_head">
-							<div><img src="/images/mo/img_npay_txt.png" alt="NAVER 네이버 ID로 간편구매 네이버페이"></div>
-							<div><button><img src="/images/mo/btn_npay_txt.png" alt="Npay 구매"></button></div>
-						</div>
-						<div class="np_body">
-							<a href="#none"><em>[멥버십]</em>첫달 무료가입하고 추가 4%!</a>
-						</div>
+
+					<div style="margin-top:10px;">
+						<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+							<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+							<script type="text/javascript" >
+								/*버튼설정*/
+								naver.NaverPayButton.apply({
+									BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+									TYPE                    : "MA",                      // 버튼 모음 종류 설정
+									COLOR                   : 1,                        // 버튼 모음의 색 설정
+									COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+									ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+									BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+									"":""
+								});
+
+								/*네이버구매하기*/
+								function buy_nc(url) {
+									let goodsType = "[[${goodsInfo.goodsType}]]";
+									let selfGoodsYn = "[[${goodsInfo.selfGoodsYn}]]";
+
+									if(goodsType == "G056_N") {
+										if(selfGoodsYn == "Y") {
+											// 자사 일반 상품 정보
+											let goodsCd = "[[${goodsInfo.goodsCd}]]";
+											let optCd = $(".opt_size .form_field input[type=radio]:checked").attr("optcd");
+											let goodsQty = $(".opt_count .number_count input[name=cea]").val();
+
+											if (!goodsQty || goodsQty < 1) {
+												mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+												return false;
+											}
+
+											if (!optCd) {
+												mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+												return false;
+											}
+
+											let compsList = [];
+											let obj = new Object();
+											obj.goodsCd = goodsCd;
+											obj.optCd = optCd;
+											obj.goodsQty = goodsQty;
+											obj.goodsType = goodsType;
+											obj.cartGb = "N";
+											obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+											obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+											obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+											obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+											compsList.push(obj);
+
+											// 장바구니담기
+											cfnAddCart(compsList);
+										} else {
+											// 입점 일반 상품 정보
+											let goodsCd = "[[${goodsInfo.goodsCd}]]";
+											let compsList = [];
+
+											if (!goodsCd) {
+												mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+												return false;
+											}
+
+											$(".opt_result .number_count input[name=cea]").each(function() {
+												let optCd = $(this).attr("optcd");
+												let goodsQty = $(this).val();
+
+												if (!optCd) {
+													mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+													return false;
+												}
+
+												if (!goodsQty || goodsQty < 1) {
+													mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+													return false;
+												}
+
+												let obj = new Object();
+												obj.goodsCd = goodsCd;
+												obj.optCd = optCd;
+												obj.goodsQty = goodsQty;
+												obj.goodsType = goodsType;
+												obj.cartGb = "N";
+												obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+												obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+												obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+												obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+												compsList.push(obj);
+											});
+
+											// 장바구니담기
+											cfnAddCart(compsList);
+										}
+									} else {
+										// 세트 상품 정보
+										let goodsCd = "[[${goodsInfo.goodsCd}]]";
+										let cartGoodsList = [];
+
+										$(".option_result .opt_result .result_item").each(function() {
+											let compsList = [];
+											let goodsList = {
+												cartCompsList : new Array()
+											}
+
+											let goodsQty = $(this).find(".number_count input[name=cea]").val();
+											$(this).find(".bundle").each(function() {
+												var obj = new Object();
+												obj.cartGb = "N";
+												obj.goodsType = goodsType;
+												obj.goodsCd = goodsCd;
+												obj.itemCd = $(this).find("input[name=selOption]").attr("goodscd");
+												obj.optCd = $(this).find("input[name=selOption]").attr("optcd");
+												obj.goodsQty = goodsQty;
+												obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+												obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+												obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+												obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+												compsList.push(obj);
+											});
+
+											goodsList.cartCompsList = compsList;
+											cartGoodsList.push(goodsList);
+										});
+
+										// 장바구니담기
+										cfnAddCart(cartGoodsList);
+									}
+
+									return false;
+								}
+
+								function buy_nc_req(cartSqArr) {
+									let data = {  cartSqArr : cartSqArr
+										, backUrl : location.href
+										, goodsUrl : _PAGE_GOODS_DETAIL
+									};
+									let jsonData = JSON.stringify(data);
+
+									$.ajax( {
+										type		: "POST",
+										url 		: "/pg/nPayReq",
+										dataType 	: 'json',
+										data		: jsonData,
+										beforeSend : function(xhr, settings) {
+											xhr.setRequestHeader("AJAX"			, "true");
+											xhr.setRequestHeader('Accept'		, 'application/json');
+											xhr.setRequestHeader('Content-Type'	, 'application/json');
+										},
+										error: function(xhr, status, error) {
+											mcxDialog.alert(status + '; ' + error);
+										},
+										success : function(result) {
+											if (result.state == "sucess") {
+												document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+												document.nPayForm.submit();
+											} else {
+												mcxDialog.alert(result.message);
+											}
+										}
+									});
+								}
+
+								<!-- 구매불가 -->
+								function not_buy_nc() {
+									mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+									return false;
+								}
+							</script>
+						</th:block>
 					</div>
 				</div>
 				<!-- 옵션선택팝업 -->

+ 36 - 35
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -20,6 +20,7 @@
 <th:block layout:fragment="content">
 <script src="/ux/pc/js/ion.rangeSlider.min.js"></script>
 <script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
+<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
 <form id="nPayForm" name="nPayForm"></form>
 <div id="container" class="container pd deal" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="wrap">
@@ -254,8 +255,8 @@
 
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
-									<script type="text/javascript" src="https://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
 									<script type="text/javascript" >
+										//<![CDATA[
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
 											BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
@@ -268,7 +269,7 @@
 										});
 
 										/*네이버구매하기*/
-										function buy_nc(url) {
+										function buy_nc() {
 											// 자사 일반 상품 정보
 											let compsList = [];
 
@@ -314,39 +315,6 @@
 											return false;
 										}
 
-										function buy_nc_req(cartSqArr) {
-											let data = {  cartSqArr : cartSqArr
-												, backUrl : location.href
-												, goodsUrl : _PAGE_GOODS_DETAIL
-											};
-											let jsonData = JSON.stringify(data);
-
-											$.ajax( {
-												type		: "POST",
-												url 		: "/pg/nPayReq",
-												dataType 	: 'json',
-												data		: jsonData,
-												beforeSend : function(xhr, settings) {
-													xhr.setRequestHeader("AJAX"			, "true");
-													xhr.setRequestHeader('Accept'		, 'application/json');
-													xhr.setRequestHeader('Content-Type'	, 'application/json');
-												},
-												error: function(xhr, status, error) {
-													mcxDialog.alert(status + '; ' + error);
-												},
-												success : function(result) {
-													if (result.state == "sucess") {
-														window.open('about:blank', 'popupView');
-														document.nPayForm.target = 'popupView';
-														document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
-														document.nPayForm.submit();
-													} else {
-														mcxDialog.alert(result.message);
-													}
-												}
-											});
-										}
-
 										<!-- 구매불가 -->
 										function not_buy_nc() {
 											mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
@@ -1178,6 +1146,39 @@
 		$('.tab_detail_cont.pd_review').find('.combo .list li').eq(selIdx).trigger("click");
 		
 	});
+
+function buy_nc_req(cartSqArr) {
+	let data = {  cartSqArr : cartSqArr
+		, backUrl : location.href
+		, goodsUrl : _PAGE_GOODS_DETAIL
+	};
+	let jsonData = JSON.stringify(data);
+
+	$.ajax( {
+		type		: "POST",
+		url 		: "/pg/nPayReq",
+		dataType 	: 'json',
+		data		: jsonData,
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+		},
+		error: function(xhr, status, error) {
+			mcxDialog.alert(status + '; ' + error);
+		},
+		success : function(result) {
+			if (result.state == "sucess") {
+				window.open('about:blank', 'popupView');
+				document.nPayForm.target = 'popupView';
+				document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+				document.nPayForm.submit();
+			} else {
+				mcxDialog.alert(result.message);
+			}
+		}
+	});
+}
 	
 /*]]>*/
 </script>

+ 1 - 28
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -372,7 +372,7 @@
 							</div>
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
-									<script type="text/javascript" src="https://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
+									<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
 									<script type="text/javascript" >
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
@@ -514,33 +514,6 @@
 											});
 										}
 
-										/*네이버찜*/
-										/*function wishlist_nc(url) {
-											// 네이버페이로 찜 정보를 등록하는 가맹점 페이지 팝업 창 생성.
-											// 해당 페이지에서 찜 정보 등록 후 네이버페이 찜 페이지로 이동.
-
-											var params = new Object();
-											params.ITEM_CD      = $('#goods_code').val();
-											params.ITEM_URL     = location.href;
-
-											var nPayWishUrl     = "/order/nPayWish.do";
-
-											/!*네이버페이 ajax*!/
-											jQuery.ajax({
-												type        : 'POST',
-												url         : '/order/nPayWish.do',
-												cache       : false,
-												data        : params,
-												async       : false,
-												error       : function() {
-												},
-												success     : function(result) {
-													url = url + "?SHOP_ID=interview_sisun&ITEM_ID=" + result.wishList;
-													window.open(url,"","scrollbars=yes,width=400,height=267");
-												}
-											});
-										}*/
-
 										<!-- 구매불가 -->
 										function not_buy_nc() {
 											mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");

+ 143 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html

@@ -359,6 +359,77 @@
 						</th:block>
 						</div>
 					</div>
+					<div style="margin-top:10px;">
+						<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+							<script type="text/javascript" >
+								//<![CDATA[
+								/*버튼설정*/
+								naver.NaverPayButton.apply({
+									BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+									TYPE                    : "C",                      // 버튼 모음 종류 설정
+									COLOR                   : 1,                        // 버튼 모음의 색 설정
+									COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+									ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+									BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+									"":""
+								});
+
+								/*네이버구매하기*/
+								function buy_nc() {
+									// 자사 일반 상품 정보
+									let compsList = [];
+
+									$("#cartForm .result_item input[name=cea]").each(function() {
+										let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+										let goodsType = "[[${goodsInfo.goodsType}]]";
+										let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+										let optCd = $(this).attr("optcd");
+										let goodsQty = $(this).val();
+
+										if (!goodsCd) {
+											mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+											return false;
+										}
+
+										if (!goodsQty || goodsQty < 1) {
+											mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+											return false;
+										}
+
+										if (!optCd) {
+											mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+											return false;
+										}
+
+										var obj = new Object();
+										obj.cartGb = "N";
+										obj.goodsType = goodsType;
+										obj.goodsCd = goodsCd;
+										obj.optCd = optCd;
+										obj.goodsQty = goodsQty;
+										obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+										obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+										obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+										obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+										obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+										compsList.push(obj);
+									});
+
+									// 장바구니담기
+									cfnAddCart(compsList);
+
+									return false;
+								}
+
+								<!-- 구매불가 -->
+								function not_buy_nc() {
+									mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+									return false;
+								}
+								//]]>
+							</script>
+						</th:block>
+					</div>
 				</div>
 			</div>
 		</div>
@@ -454,7 +525,7 @@
 						</span>
 					</p>
 				</div>
-				<div class="btn_box">
+				<div class="btn_box" style="margin-bottom:0px;">
 					<div class="btn_group_block ui_row">
 					<th:block  th:if="${goodsInfo.stockQty > 0}">
 						<div class="ui_col_6">
@@ -471,6 +542,77 @@
 					</th:block>
 					</div>
 				</div>
+				<div style="margin-top:10px;">
+					<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+						<script type="text/javascript" >
+							//<![CDATA[
+							/*버튼설정*/
+							naver.NaverPayButton.apply({
+								BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+								TYPE                    : "C",                      // 버튼 모음 종류 설정
+								COLOR                   : 1,                        // 버튼 모음의 색 설정
+								COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+								ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+								BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+								"":""
+							});
+
+							/*네이버구매하기*/
+							function buy_nc() {
+								// 자사 일반 상품 정보
+								let compsList = [];
+
+								$("#cartForm .result_item input[name=cea]").each(function() {
+									let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+									let goodsType = "[[${goodsInfo.goodsType}]]";
+									let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+									let optCd = $(this).attr("optcd");
+									let goodsQty = $(this).val();
+
+									if (!goodsCd) {
+										mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+										return false;
+									}
+
+									if (!goodsQty || goodsQty < 1) {
+										mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+										return false;
+									}
+
+									if (!optCd) {
+										mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+										return false;
+									}
+
+									var obj = new Object();
+									obj.cartGb = "N";
+									obj.goodsType = goodsType;
+									obj.goodsCd = goodsCd;
+									obj.optCd = optCd;
+									obj.goodsQty = goodsQty;
+									obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+									obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+									obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+									obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+									obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+									compsList.push(obj);
+								});
+
+								// 장바구니담기
+								cfnAddCart(compsList);
+
+								return false;
+							}
+
+							<!-- 구매불가 -->
+							function not_buy_nc() {
+								mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+								return false;
+							}
+							//]]>
+						</script>
+					</th:block>
+				</div>
 			</div>
 		</div>