Forráskód Böngészése

이태영 - 20200512 네이버페이 개발 중

xodud lee 5 éve
szülő
commit
9394e8b9c9

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

@@ -995,7 +995,16 @@ public class TsfOrderService {
 
 		return "SUCCESS";
 	}
-	
+
+	/**
+	 * 네이버페이 주문 정보 생성 및 송부
+	 * @param param
+	 * @param request
+	 * @param response
+	 * @author xodud1202
+	 * @since 2021. 05. 12
+	 */
+	@Transactional("shopTxnManager")
 	public GagaMap nPayReq50(Order param, HttpServletRequest request, HttpServletResponse response) {
 		GagaMap result = new GagaMap();
 
@@ -1160,6 +1169,12 @@ public class TsfOrderService {
 		return result;
 	}
 
+	/**
+	 * 네이버페이 주문 정보 송부
+	 * @param sb
+	 * @author xodud1202
+	 * @since 2021. 05. 12
+	 */
 	private GagaMap sendOrderInfoToNC(StringBuffer sb) throws IOException {
 		GagaMap resultMap = new GagaMap();
 
@@ -1229,6 +1244,224 @@ public class TsfOrderService {
 
 		return "";
 	}
+
+	/**
+	 * 네이버페이 상품 정보 생성 및 송부
+	 * @param request
+	 * @param response
+	 * @author xodud1202
+	 * @since 2021. 05. 12
+	 */
+	public void createNpayGoodsXml50(HttpServletRequest request, HttpServletResponse response) {
+		StringBuffer sb = new StringBuffer();
+		// http://locd.michaa2.sisun.com/order/createNpayGoodsXml.do?product[0][id]=G2019070300016&product[0][optionManageCodes]=010_5|55|&supplementSearch=true&optionSearch=true
+		// product[0][id]=G2019070300016&product[0][optionManageCodes]=010_5|55|&supplementSearch=true&optionSearch=true
+
+		try {
+			sb.append("<?xml version='1.0' encoding='utf-8'?>");
+			sb.append("<products>");
+
+			String goodsCdStr 				= "";
+			String optionManageCodesStr 	= "";
+			String queryStr 				= request.getQueryString();
+			String[] arr1 					= queryStr.split("product");
+
+			for (int i=0 ; i<arr1.length; i++) {
+				String[] arr2 = arr1[i].split("&");
+
+				for (int j=0 ; j<arr2.length ; j++) {
+					String[] arr3 = arr2[j].split("=");
+
+					if (arr3.length > 1) {
+						if (arr3[0].indexOf("id") > -1) {
+							if ("".equals(goodsCdStr)) {
+								goodsCdStr = goodsCdStr + arr3[1];
+							} else {
+								goodsCdStr = goodsCdStr + "," + arr3[1];
+							}
+						} else if (arr3[0].indexOf("optionManageCodes") > -1) {
+							if ("".equals(optionManageCodesStr)) {
+								optionManageCodesStr = optionManageCodesStr + arr3[1];
+							} else {
+								optionManageCodesStr = optionManageCodesStr + "," + arr3[1];
+							}
+						}
+					}
+				}
+			}
+
+			String[] goodsCdArr 			= goodsCdStr.split(",");
+			String[] optionManageCodesArr 	= optionManageCodesStr.split(",");
+
+			// 네이버페이 기본정보
+			String shopId			= env.getProperty("naverPay.shop.id");				// shopId
+			String certificationKey	= env.getProperty("naverPay.certification.key");	// 네이버페이 인증키
+			String cpaInflowCode	= getCookieValue(request, "CPAValidator");
+			String naverInflowCode	= getCookieValue(request, "NA_CO");
+			String saClickId		= getCookieValue(request, "NVADID");
+			String domain 			= env.getProperty("domain.front");					// 도메인 주소
+			String staticUrl		= "/resources";
+			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
+			int totPrice			= 0;												// 전체 주문 금액
+
+			/*for (int i=0; i<goodsCdArr.length; i++) {
+				Order item = new Order();
+
+				item.setGoodsCd(goodsCdArr[i]);
+				//shopInfo.setLang(CommonCodeConstant.SHIP_CONTR_KOREA);  //KOR
+				//shopInfo.setDevice(CommonCodeConstant.DEIVCE_WEB);		//WEB
+
+				// 9.상품 옵션
+				String optionManageCodesArrStr = CryptoManager.simpleDecode(optionManageCodesArr[i]);
+				String [] arr = optionManageCodesArrStr.split("_");
+				item.setOptCd1(arr[0]);
+
+				arr[1] = CryptoManager.simpleDecode(arr[1]);
+
+				shopInfo = shopService.shopData(shopInfo);
+
+				Ship shipInfoVo = new Ship();
+				shipInfoVo.setCompany_mng_idx(shopInfo.getCompany_mng_idx());
+
+				// 2018.10.17 전석훈추가 (반품정보연동)
+				shipInfoVo = shipService.companyShipInfoView(shipInfoVo);
+
+				// 1.상품정보
+				// 사이트별 상품명 칼럼이 다름
+				String goodsNm = "";
+
+				if ("99999".equals(shopInfo.getBrand_mng_idx())) {
+					goodsNm = shopInfo.getBrand_nm() + " " + shopInfo.getGoods_nm_kor();
+				} else {
+					goodsNm = shopInfo.getBrand_nm() + " " + shopInfo.getGoods_nm_eng();
+				}
+
+				sb.append("<product>");
+				sb.append("<id>").append(goodsCdArr[i]).append("</id>");
+				sb.append("<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>");
+				sb.append("<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>");
+				sb.append("<name>").append("<![CDATA[" + goodsNm + "]]>").append("</name>");
+				sb.append("<basePrice>").append(String.valueOf(shopInfo.getSale_amt())).append("</basePrice>");
+				sb.append("<infoUrl>").append("<![CDATA[" + domain + "/shop/shopView?goods_code=" + shopInfo.getGoods_code() + "]]>").append("</infoUrl>");
+
+				// 1.2 상품 이미지
+				List<Shop> shopImgList 	= shopDao.shopImgList(shopInfo);
+				Shop img 				= null;
+				String prodImg 			= null;
+
+				if (shopImgList.size() > 0) {
+					img = shopImgList.get(0);
+					prodImg = goodsImgUrl + "/" + img.getSys_img_nm();
+
+					if (prodImg.indexOf("http:") < 0) {
+						prodImg = "http:" + prodImg;
+					}
+				} else {
+					prodImg = "http:" + staticUrl + "/images/common/default_gy.jpg";
+				}
+
+				sb.append("<imageUrl>").append("<![CDATA[" + prodImg + "]]>").append("</imageUrl>");
+
+				// 12.반품주소
+				if (shipInfoVo != null) {
+					if (shipInfoVo.getReturn_addr_zip() != null && !"".equals(shipInfoVo.getReturn_addr_zip())) {
+						// 2.1 반품정보
+						sb.append("<returnInfo>");
+						sb.append("<zipcode>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_zip()) + "]]>").append("</zipcode>");
+						sb.append("<address1>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_base()) + "]]>").append("</address1>");
+						sb.append("<address2>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_detail()) + "]]>").append("</address2>");
+						sb.append("<sellername>").append("<![CDATA[" + String.valueOf(shipInfoVo.getResp_nm()) + "]]>").append("</sellername>");
+						sb.append("<contact1>").append("<![CDATA[" + String.valueOf(shipInfoVo.getCntct_no()) + "]]>").append("</contact1>");
+						sb.append("</returnInfo>");
+
+						// 반품배송비, 교환배송비
+						sb.append("<returnShippingFee>" + shipInfoVo.getReturn_amt() + "</returnShippingFee>");
+						sb.append("<exchangeShippingFee>" + shipInfoVo.getExch_amt() + "</exchangeShippingFee>");
+					}
+				}
+
+				// 옵션정보 지원여부 true
+				sb.append("<optionSupport>true</optionSupport>");
+				sb.append("<option>");
+
+				// 9.1 옵션 아이템정보 색상
+				sb.append("<optionItem>");
+				sb.append("<type>SELECT</type>");
+				sb.append("<name>칼라</name>");
+				sb.append("<value>");
+				sb.append("<id>").append("<![CDATA[" + arr[0] + "]]>").append("</id>");
+				sb.append("<text>").append("<![CDATA[" + shopInfo.getGoods_color_nm() + "]]>").append("</text>");
+				sb.append("</value>");
+				sb.append("</optionItem>");
+
+				String goodsSizeStr = CryptoManager.decodeStr(arr[1]);
+
+				// 9.1 옵션 아이템정보 사이즈
+				sb.append("<optionItem>");
+				sb.append("<type>SELECT</type>");
+				sb.append("<name>사이즈</name>");
+				sb.append("<value>");
+				sb.append("<id>").append("<![CDATA[" + arr[1] + "]]>").append("</id>");
+				sb.append("<text>").append("<![CDATA[" + goodsSizeStr + "]]>").append("</text>");
+				sb.append("</value>");
+				sb.append("</optionItem>");
+
+				// 9.3 옵션 옵션조합정보
+				sb.append("<combination>");
+				sb.append("<price>").append(0).append("</price>");
+				sb.append("<manageCode>").append("<![CDATA[" + optionManageCodesArrStr + "]]>").append("</manageCode>");
+				//sb.append("<stockQuantity>").append(5).append("</stockQuantity>");
+				sb.append("<status>true</status>");
+
+				// 9.3.1  옵션 옵션조합정보 색상
+				sb.append("<options>");
+				sb.append("<name>칼라</name>");
+				sb.append("<id>").append("<![CDATA[" + arr[0] + "]]>").append("</id>");
+				sb.append("</options>");
+
+				// 9.3.2  옵션 옵션조합정보 사이즈
+				sb.append("<options>");
+				sb.append("<name>사이즈</name>");
+				sb.append("<id>").append("<![CDATA[" + arr[1] + "]]>").append("</id>");
+				sb.append("</options>");
+
+				sb.append("</combination>");
+				sb.append("</option>");
+
+				// 10. 배송정보조회
+				// 5.2.1 업체별 기본배송비, 무료배송비 조회
+				Ship ship = new Ship();
+				ship.setCompany_mng_idx(shopInfo.getCompany_mng_idx());
+				ship = shipService.localShipInfo(ship);
+
+				sb.append("<shippingPolicy>");
+				sb.append("<groupId>").append(shopInfo.getCompany_mng_idx()).append("</groupId>");
+				sb.append("<method>").append("DELIVERY").append("</method>");
+				sb.append("<feeType>").append("CONDITIONAL_FREE").append("</feeType>");
+				sb.append("<feePayType>").append("PREPAYED").append("</feePayType>");
+				sb.append("<feePrice>").append(ship.getShip_amt()).append("</feePrice>");
+
+				sb.append("<conditionalFree>");
+				sb.append("<basePrice>").append(ship.getFree_ship_amt()).append("</basePrice>");
+				sb.append("</conditionalFree>");
+
+				sb.append("<surchargeByArea>");
+				sb.append("<apiSupport>").append("true").append("</apiSupport>");
+				sb.append("</surchargeByArea>");
+
+				sb.append("</shippingPolicy>");
+
+				sb.append("</product>");
+			}*/
+			sb.append("</products>");
+			//for end
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			//write(response, sb.toString());
+		}
+	}
 	
 	/**
 	 * 장바구니정보 주문번호 이력 등록

+ 15 - 0
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -184,4 +184,19 @@ public class TsfPgController extends TsfBaseController {
 	public GagaMap nPayReq(@RequestBody Order param, HttpServletRequest request, HttpServletResponse response) {
 		return orderService.nPayReq50(param, request, response);
 	}
+
+	/**
+	 * 네이버 페이 상품정보 연동
+	 * @param request
+	 * @param response
+	 * @param cart
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
+	@ResponseBody
+	@PostMapping("/create/npay/goodsxml")
+	public void createNpayGoodsXml(HttpServletRequest request, HttpServletResponse response) {
+		orderService.createNpayGoodsXml50(request, response);
+	}
 }