|
|
@@ -560,12 +560,11 @@ public class TsfOrderService {
|
|
|
int realOrdSumAmt = 0;
|
|
|
|
|
|
int cartOrgGoodsSumAmt = 0;
|
|
|
- int cartRealOrdSumAmt = 0;
|
|
|
|
|
|
// 주문서화면 금액정보 체크
|
|
|
for (Order orderDetail : orderDetailList) {
|
|
|
- orgGoodsSumAmt = orgGoodsSumAmt + orderDetail.getCurrPrice();
|
|
|
- cpn1DcSumAmt = cpn1DcSumAmt + orderDetail.getCpn1DcAmt();
|
|
|
+ orgGoodsSumAmt = orgGoodsSumAmt + ((orderDetail.getCurrPrice() + orderDetail.getOptAddPrice()) * orderDetail.getGoodsQty());
|
|
|
+ cpn1DcSumAmt = cpn1DcSumAmt + (orderDetail.getCpn1DcAmt() * orderDetail.getGoodsQty());
|
|
|
tmtb1DcSumAmt = tmtb1DcSumAmt + orderDetail.getTmtb1DcAmt();
|
|
|
tmtb2DcSumAmt = tmtb2DcSumAmt + orderDetail.getTmtb2DcAmt();
|
|
|
goodsCpnDcSumAmt = goodsCpnDcSumAmt + orderDetail.getGoodsCpnDcAmt();
|
|
|
@@ -622,19 +621,14 @@ public class TsfOrderService {
|
|
|
resultStr = "상품권 사용 금액정보가 잘못 되었습니다.";
|
|
|
return resultStr;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
if (realOrdSumAmt != order.getRealOrdSumAmt()) {
|
|
|
resultStr = "실결제 금액정보가 잘못 되었습니다.";
|
|
|
return resultStr;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
// 장바구니 금액정보 체크
|
|
|
for (Order orderDetail : cartGoodsList) {
|
|
|
- cartOrgGoodsSumAmt = cartOrgGoodsSumAmt + orderDetail.getOrgCurrPrice();
|
|
|
+ cartOrgGoodsSumAmt = cartOrgGoodsSumAmt + ((orderDetail.getOrgCurrPrice() + orderDetail.getOptAddPrice()) * orderDetail.getGoodsQty());
|
|
|
}
|
|
|
|
|
|
// 판매가비교
|
|
|
@@ -995,7 +989,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 +1163,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 +1238,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());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 장바구니정보 주문번호 이력 등록
|