|
|
@@ -26,13 +26,16 @@ import org.springframework.util.LinkedMultiValueMap;
|
|
|
import org.springframework.util.MultiValueMap;
|
|
|
|
|
|
import com.gagaframework.web.parameter.GagaMap;
|
|
|
+import com.google.gson.Gson;
|
|
|
import com.nhncorp.psinfra.toolkit.SimpleCryptLib;
|
|
|
import com.style24.core.biz.checkout.MallServiceLocator;
|
|
|
import com.style24.core.biz.checkout.MallServiceSOAP11BindingStub;
|
|
|
import com.style24.core.biz.checkout.base.AccessCredentialsType;
|
|
|
import com.style24.core.biz.checkout.base.ChangedProductOrderInfo;
|
|
|
import com.style24.core.biz.checkout.base.ClaimRequestReasonType;
|
|
|
+import com.style24.core.biz.checkout.base.DelayedDispatchReasonType;
|
|
|
import com.style24.core.biz.checkout.base.DeliveryMethodType;
|
|
|
+import com.style24.core.biz.checkout.base.HoldbackClassType;
|
|
|
import com.style24.core.biz.checkout.base.HoldbackStatusType;
|
|
|
import com.style24.core.biz.checkout.base.ProductOrderChangeType;
|
|
|
import com.style24.core.biz.checkout.base.ProductOrderInfo;
|
|
|
@@ -45,6 +48,8 @@ import com.style24.core.biz.checkout.mall.ApproveReturnApplicationRequest;
|
|
|
import com.style24.core.biz.checkout.mall.ApproveReturnApplicationResponse;
|
|
|
import com.style24.core.biz.checkout.mall.CancelSaleRequest;
|
|
|
import com.style24.core.biz.checkout.mall.CancelSaleResponse;
|
|
|
+import com.style24.core.biz.checkout.mall.DelayProductOrderRequest;
|
|
|
+import com.style24.core.biz.checkout.mall.DelayProductOrderResponse;
|
|
|
import com.style24.core.biz.checkout.mall.GetChangedProductOrderListRequest;
|
|
|
import com.style24.core.biz.checkout.mall.GetChangedProductOrderListResponse;
|
|
|
import com.style24.core.biz.checkout.mall.GetProductOrderInfoListRequest;
|
|
|
@@ -57,12 +62,18 @@ import com.style24.core.biz.checkout.mall.RejectExchangeRequest;
|
|
|
import com.style24.core.biz.checkout.mall.RejectExchangeResponse;
|
|
|
import com.style24.core.biz.checkout.mall.RejectReturnRequest;
|
|
|
import com.style24.core.biz.checkout.mall.RejectReturnResponse;
|
|
|
+import com.style24.core.biz.checkout.mall.ReleaseExchangeHoldRequest;
|
|
|
+import com.style24.core.biz.checkout.mall.ReleaseExchangeHoldResponse;
|
|
|
import com.style24.core.biz.checkout.mall.ReleaseReturnHoldRequest;
|
|
|
import com.style24.core.biz.checkout.mall.ReleaseReturnHoldResponse;
|
|
|
import com.style24.core.biz.checkout.mall.RequestReturnRequest;
|
|
|
import com.style24.core.biz.checkout.mall.RequestReturnResponse;
|
|
|
import com.style24.core.biz.checkout.mall.ShipProductOrderRequest;
|
|
|
import com.style24.core.biz.checkout.mall.ShipProductOrderResponse;
|
|
|
+import com.style24.core.biz.checkout.mall.WithholdExchangeRequest;
|
|
|
+import com.style24.core.biz.checkout.mall.WithholdExchangeResponse;
|
|
|
+import com.style24.core.biz.checkout.mall.WithholdReturnRequest;
|
|
|
+import com.style24.core.biz.checkout.mall.WithholdReturnResponse;
|
|
|
import com.style24.core.biz.dao.TscNaverPayDao;
|
|
|
import com.style24.core.biz.dao.TscOrderChangeDao;
|
|
|
import com.style24.core.biz.dao.TscOrderDao;
|
|
|
@@ -429,13 +440,13 @@ public class TscNaverPayService {
|
|
|
|
|
|
// 로컬의 경우 별도 기간을 설정해서 사용
|
|
|
if("locd".equals(env.getProperty("spring.profiles.active"))) {
|
|
|
- stdt = "20210727000000"; // 조회기간 시작
|
|
|
- eddt = "20210727235959"; // 조회기간 끝
|
|
|
+ stdt = "20211014000000"; // 조회기간 시작
|
|
|
+ eddt = "20211014235959"; // 조회기간 끝
|
|
|
|
|
|
log.info("stdt : eddt ---> " + stdt + " : " + eddt);
|
|
|
}
|
|
|
|
|
|
- // 조회기간 Date 타입 설정
|
|
|
+ // 조회기간 Date 타입 설정getReviewGoodsOptionList
|
|
|
Date tmp1 = new SimpleDateFormat("yyyyMMddHHmmss").parse(stdt, new ParsePosition(0));
|
|
|
Date tmp2 = new SimpleDateFormat("yyyyMMddHHmmss").parse(eddt, new ParsePosition(0));
|
|
|
|
|
|
@@ -844,8 +855,9 @@ public class TscNaverPayService {
|
|
|
}
|
|
|
|
|
|
@Transactional("shopTxnManager")
|
|
|
- public String sendNaverPayDeliveryStartOrder(Order param, String statGb, Integer userNo) {
|
|
|
+ public GagaMap sendNaverPayDeliveryStartOrder(Order param, String statGb, Integer userNo) {
|
|
|
//for(Order param : params) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
if ("SHIPPING".equals(statGb)) {
|
|
|
Order order = naverPayDao.getOrderDetailInfoFromOrdDtlNo(param);
|
|
|
|
|
|
@@ -931,21 +943,30 @@ public class TscNaverPayService {
|
|
|
|
|
|
orderDao.createNaverPayErrorLog(fail);
|
|
|
|
|
|
- return "FAIL";
|
|
|
+ result.setString("status", "FAIL");
|
|
|
+ result.setString("message", shipProductOrderResponse.getError().getMessage());
|
|
|
+ return result;
|
|
|
} catch(Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return "FAIL";
|
|
|
+
|
|
|
+ result.setString("status", "FAIL");
|
|
|
+ result.setString("message", e.getMessage());
|
|
|
+ return result;
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return "FAIL";
|
|
|
+
|
|
|
+ result.setString("status", "FAIL");
|
|
|
+ result.setString("message", e.getMessage());
|
|
|
+ return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//}
|
|
|
|
|
|
- return "SUCCESS";
|
|
|
+ result.setString("status", "SUCCESS");
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1245,6 +1266,9 @@ public class TscNaverPayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 핸드폰번호 하이픈 처리
|
|
|
+ change.setHypenRecipPhone();
|
|
|
+
|
|
|
// 배송지 정보 (네이버페이 주문형 배송지는 회수지와 동일 적용 (배송지 주소 작성란 없음))
|
|
|
change.setChgerNm(change.getRecipNm());
|
|
|
change.setChgerPhnno(change.getRecipPhnno());
|
|
|
@@ -1281,7 +1305,7 @@ public class TscNaverPayService {
|
|
|
cancelReq.setDelvFeeCd(item.getDelvFeeCd()); // 출고처코드
|
|
|
cancelReq.setSupplyCompCd(item.getSupplyCompCd()); // 공급업체코드
|
|
|
cancelReq.setChgQty(item.getOrdQty()); // 교환수량 (네이버페이주문형은 수량부분 취/반/교 없음. 전체수량.)
|
|
|
- cancelReq.setOrdChgOpt(item.getOptCd2()); // 교환옵션 (네이버페이주문형은 교환 옵션이 존재하지 않음. 메모를 보고 수정해야함)
|
|
|
+ cancelReq.setOrdChgOpt(item.getOptCd()); // 교환옵션 (네이버페이주문형은 교환 옵션이 존재하지 않음. 메모를 보고 수정해야함)
|
|
|
cancelReq.setExcDelvFee(addDelvFee / 2); // 교환 배송비 (교환배송비는 반품배송비 * 2로 송부되므로 교환/반품 배송비 절반씩 배분)
|
|
|
cancelReq.setRtnDelvFee(addDelvFee / 2); // 반품배송비 (교환배송비는 반품배송비 * 2로 송부되므로 교환/반품 배송비 절반씩 배분)
|
|
|
|
|
|
@@ -1307,6 +1331,19 @@ public class TscNaverPayService {
|
|
|
change.setWdTargetYn("N");
|
|
|
log.info("CHECK CHG_MEMO :::: {}", change.getChgMemo());
|
|
|
|
|
|
+ // 보류 상태
|
|
|
+ String holdbackStatus = "";
|
|
|
+ if (orderInfo.getExchangeInfo().getHoldbackStatus() != null) {
|
|
|
+ holdbackStatus = orderInfo.getExchangeInfo().getHoldbackStatus().getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("holdbackStatus >>> {}", holdbackStatus);
|
|
|
+ if ("HOLDBACK".equals(holdbackStatus)) {
|
|
|
+ change.setNpayChangeHoldYn("Y");
|
|
|
+ } else {
|
|
|
+ change.setNpayChangeHoldYn("N");
|
|
|
+ }
|
|
|
+
|
|
|
GagaMap result = orderChangeService.exchReq(change);
|
|
|
|
|
|
// 추가배송비 결제 이력 있으면 TB_PAYMENT 넣고 deliveryFee에 PAY_SQ UPDATE
|
|
|
@@ -1336,6 +1373,15 @@ public class TscNaverPayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 교환 보류 처리
|
|
|
+ if (!"HOLDBACK".equals(holdbackStatus)) {
|
|
|
+ order.setHoldCode(TscConstants.nPayExchangeHoldCode.ETC.value());
|
|
|
+ order.setHoldReason("교환 옵션 변경 대기중");
|
|
|
+ order.setRegNo(userNo);
|
|
|
+ order.setUpdNo(userNo);
|
|
|
+ this.nPayExchangeHold(order);
|
|
|
+ }
|
|
|
+
|
|
|
log.info("NAPAY_ORD_NO 교환 접수 성공 :::: {}", order.getNpayOrdDtlNo());
|
|
|
}
|
|
|
|
|
|
@@ -1418,6 +1464,7 @@ public class TscNaverPayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ change.setHypenChgerPhone();
|
|
|
change.setOrdNo(order.getOrdNo());
|
|
|
change.setCustNo(custNo);
|
|
|
change.setOrdNm(ordNm);
|
|
|
@@ -1494,6 +1541,19 @@ public class TscNaverPayService {
|
|
|
change.setChgReason(TscConstants.OrderReturnReason.NOT_DELV_ALL.value());
|
|
|
}
|
|
|
|
|
|
+ // 보류 상태
|
|
|
+ String holdbackStatus = "";
|
|
|
+ if (orderInfo.getReturnInfo().getHoldbackStatus() != null) {
|
|
|
+ holdbackStatus = orderInfo.getReturnInfo().getHoldbackStatus().getValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("holdbackStatus >>> {}", holdbackStatus);
|
|
|
+ if ("HOLDBACK".equals(holdbackStatus)) {
|
|
|
+ change.setNpayChangeHoldYn("Y");
|
|
|
+ } else {
|
|
|
+ change.setNpayChangeHoldYn("N");
|
|
|
+ }
|
|
|
+
|
|
|
GagaMap map = returnReq(change);
|
|
|
}
|
|
|
} catch(Exception e) {
|
|
|
@@ -1523,34 +1583,35 @@ public class TscNaverPayService {
|
|
|
GagaMap result = orderRefundService.cnclRtnRefundAmt(returnReqList);
|
|
|
|
|
|
// 4. 주문변경 기본정보 설정
|
|
|
- result.set("ordNo", orderChange.getOrdNo()); // 주문번호
|
|
|
- result.setInt("custNo", orderChange.getCustNo()); // 고객번호
|
|
|
- result.set("regNo", orderChange.getRegNo());
|
|
|
- result.set("updNo", orderChange.getUpdNo());
|
|
|
- result.set("pgGb", orderChange.getPgGb());
|
|
|
- // result.set("ordChgSq", orderChange.getOrdChgSq()); // 주문변경번호
|
|
|
- result.set("chgReason", orderChange.getChgReason()); // 변경사유
|
|
|
- result.set("chgMemo", orderChange.getChgMemo()); // 변경메모
|
|
|
-
|
|
|
- result.set("accountNo", orderChange.getAccountNo()); // 환불계좌번호
|
|
|
- result.set("accountNm", orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
- result.set("bankCd", orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
-
|
|
|
- result.setString("allLastCanYn", allLastCanYn); // 전체 마지막 취소 여부
|
|
|
- result.set("isCustomer", orderChange.getIsCustomer()); // 변경사유 (고객, 회사)
|
|
|
- result.set("wdTargetYn", orderChange.getWdTargetYn()); // 회수지시 요청 여부
|
|
|
- result.set("wdGb", orderChange.getWdGb()); // 회수방법
|
|
|
- result.set("wdInvoiceNo", orderChange.getWdInvoiceNo()); // 회수송장번호
|
|
|
+ result.set("ordNo" , orderChange.getOrdNo()); // 주문번호
|
|
|
+ result.set("custNo" , orderChange.getCustNo()); // 고객번호
|
|
|
+ result.set("regNo" , orderChange.getRegNo());
|
|
|
+ result.set("updNo" , orderChange.getUpdNo());
|
|
|
+ result.set("pgGb" , orderChange.getPgGb());
|
|
|
+ // result.set("ordChgSq" , orderChange.getOrdChgSq()); // 주문변경번호
|
|
|
+ result.set("chgReason" , orderChange.getChgReason()); // 변경사유
|
|
|
+ result.set("chgMemo" , orderChange.getChgMemo()); // 변경메모
|
|
|
+
|
|
|
+ result.set("accountNo" , orderChange.getAccountNo()); // 환불계좌번호
|
|
|
+ result.set("accountNm" , orderChange.getAccountNm()); // 환불계좌예금주명
|
|
|
+ result.set("bankCd" , orderChange.getBankCd()); // 환불계좌은행코드
|
|
|
+
|
|
|
+ result.set("allLastCanYn" , allLastCanYn); // 전체 마지막 취소 여부
|
|
|
+ result.set("isCustomer" , orderChange.getIsCustomer()); // 변경사유 (고객, 회사)
|
|
|
+ result.set("wdTargetYn" , orderChange.getWdTargetYn()); // 회수지시 요청 여부
|
|
|
+ result.set("wdGb" , orderChange.getWdGb()); // 회수방법
|
|
|
+ result.set("wdInvoiceNo" , orderChange.getWdInvoiceNo()); // 회수송장번호
|
|
|
+ result.set("npayChangeHoldYn" , orderChange.getNpayChangeHoldYn()); // 네이버페이 주문형 반품/교환 보류 여부 설정
|
|
|
|
|
|
// 5. 주문변경 회수지정보 추가
|
|
|
- result.set("chgerNm", orderChange.getChgerNm()); // 변경자명
|
|
|
- result.set("chgerEmail", orderChange.getChgerEmail()); // 변경자이메일주소
|
|
|
- result.set("chgerZipcode", orderChange.getChgerZipcode()); // 회수지우편번호
|
|
|
- result.set("chgerBaseAddr", orderChange.getChgerBaseAddr()); // 회수지기본주소
|
|
|
- result.set("chgerDtlAddr", orderChange.getChgerDtlAddr()); // 회수지상세주소
|
|
|
- result.set("chgerPhnno", orderChange.getChgerPhnno()); // 변경자핸드폰번호
|
|
|
- result.set("chgerTelno", orderChange.getChgerTelno()); // 변경자전화번호
|
|
|
- result.set("chgerRtnMemo", orderChange.getChgerRtnMemo()); // 반품메모
|
|
|
+ result.set("chgerNm" , orderChange.getChgerNm()); // 변경자명
|
|
|
+ result.set("chgerEmail" , orderChange.getChgerEmail()); // 변경자이메일주소
|
|
|
+ result.set("chgerZipcode" , orderChange.getChgerZipcode()); // 회수지우편번호
|
|
|
+ result.set("chgerBaseAddr" , orderChange.getChgerBaseAddr()); // 회수지기본주소
|
|
|
+ result.set("chgerDtlAddr" , orderChange.getChgerDtlAddr()); // 회수지상세주소
|
|
|
+ result.set("chgerPhnno" , orderChange.getChgerPhnno()); // 변경자핸드폰번호
|
|
|
+ result.set("chgerTelno" , orderChange.getChgerTelno()); // 변경자전화번호
|
|
|
+ result.set("chgerRtnMemo" , orderChange.getChgerRtnMemo()); // 반품메모
|
|
|
|
|
|
// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
|
|
|
GagaMap map = orderChangeService.returnRequest(result);
|
|
|
@@ -1566,7 +1627,8 @@ public class TscNaverPayService {
|
|
|
* @since 2021. 06. 28
|
|
|
*/
|
|
|
@Transactional("shopTxnManager")
|
|
|
- public String sendNaverPayExchangeReDelivery(Order param, int userNo) throws Exception {
|
|
|
+ public GagaMap sendNaverPayExchangeReDelivery(Order param, int userNo) throws Exception {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
Order order = naverPayDao.getOrderDetailInfoFromOrdDtlNo(param);
|
|
|
|
|
|
Security.addProvider(new BouncyCastleProvider());
|
|
|
@@ -1644,15 +1706,21 @@ public class TscNaverPayService {
|
|
|
|
|
|
orderDao.createNaverPayErrorLog(fail);
|
|
|
|
|
|
- return "FAIL";
|
|
|
+ result.setString("status", "FAIL");
|
|
|
+ result.setString("message", reDeliveryExchangeResponse.getError().getMessage());
|
|
|
+ return result;
|
|
|
} catch(Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return "FAIL";
|
|
|
+
|
|
|
+ result.setString("status", "FAIL");
|
|
|
+ result.setString("message", e.getMessage());
|
|
|
+ return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return "SUCCESS";
|
|
|
+ result.setString("status", "SUCCESS");
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -2015,65 +2083,16 @@ public class TscNaverPayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if ((returnPayType != null && !returnPayType.equals("")) && (returnHoldStatus.toString() != null && !returnHoldStatus.equals(""))) {
|
|
|
+ // if ((returnPayType != null && !returnPayType.equals("")) && (returnHoldStatus.toString() != null && !returnHoldStatus.equals(""))) {
|
|
|
// 보류중이고 환불금 차감 형식이 아니면 보류해제 처리
|
|
|
- if ("HOLDBACK".equals(returnHoldStatus.toString()) && !passRfdDelPayType.equals(returnPayType)) {
|
|
|
- //서명생성
|
|
|
- generateSignature("ReleaseReturnHold", env.getProperty("naverPay.secret.key"));
|
|
|
- log.info("ReleaseReturnHold(반품 보류해제 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
-
|
|
|
- //인증정보
|
|
|
- accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
- accessCredentialsType.setSignature(signature);
|
|
|
- accessCredentialsType.setTimestamp(timeStamp);
|
|
|
-
|
|
|
- releaseReturnHoldRequest = new ReleaseReturnHoldRequest();
|
|
|
- releaseReturnHoldRequest.setAccessCredentials(accessCredentialsType);
|
|
|
- releaseReturnHoldRequest.setRequestID("");
|
|
|
- releaseReturnHoldRequest.setDetailLevel("Full");
|
|
|
- releaseReturnHoldRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
- releaseReturnHoldRequest.setProductOrderID(change.getNpayOrdDtlNo());
|
|
|
-
|
|
|
- releaseReturnHoldResponse = stub.releaseReturnHold(releaseReturnHoldRequest);
|
|
|
-
|
|
|
- if (releaseReturnHoldResponse.getResponseType() != null) {
|
|
|
- resultStr = releaseReturnHoldResponse.getResponseType().toUpperCase();
|
|
|
- }
|
|
|
-
|
|
|
- if ("SUCCESS".equals(resultStr)) {
|
|
|
- log.info("보류해제 성공 네이버상품주문번호 ===> " + change.getNpayOrdDtlNo());
|
|
|
- log.info("보류해제 성공 반품배송비결제방법 ===> " + returnPayType);
|
|
|
- } else {
|
|
|
- log.info("보류해제 에러");
|
|
|
- log.info("네이버상품주문번호 ===> " + change.getNpayOrdDtlNo());
|
|
|
- log.info("반품배송비 결제방법 >>>> " + returnPayType);
|
|
|
- log.info("Code : " + releaseReturnHoldResponse.getError().getCode());
|
|
|
- log.info("Message : " + releaseReturnHoldResponse.getError().getMessage());
|
|
|
- log.info("Detail : " + releaseReturnHoldResponse.getError().getDetail());
|
|
|
-
|
|
|
- try {
|
|
|
- Order fail = new Order();
|
|
|
- fail.setErrorReason("반품 보류 해제 데이터 송부 에러");
|
|
|
- fail.setOrdNo(change.getOrdNo());
|
|
|
- fail.setNpayOrdDtlNo(change.getNpayOrdDtlNo());
|
|
|
- fail.setOptCd("sendNaverPayReturnComplete");
|
|
|
- fail.setResultCd(releaseReturnHoldResponse.getError().getCode());
|
|
|
- fail.setResultMsg(releaseReturnHoldResponse.getError().getMessage());
|
|
|
- fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
- fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
- fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
- fail.setRegNo(userNo);
|
|
|
-
|
|
|
- orderDao.createNaverPayErrorLog(fail);
|
|
|
-
|
|
|
- return "FAIL";
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- return "FAIL";
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // if ("HOLDBACK".equals(returnHoldStatus.toString()) && !passRfdDelPayType.equals(returnPayType)) {
|
|
|
+
|
|
|
+ // 2021.10.08 card007 보류중이면 보류해제 처리로 변경
|
|
|
+ if (returnHoldStatus.toString() != null && "HOLDBACK".equals(returnHoldStatus.toString())) {
|
|
|
+ param.setRegNo(userNo);
|
|
|
+ this.nPayReleaseReturnHold(param);
|
|
|
}
|
|
|
+ // }
|
|
|
}
|
|
|
//}
|
|
|
|
|
|
@@ -2255,6 +2274,7 @@ public class TscNaverPayService {
|
|
|
param.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
|
|
|
generateSignature("PlaceProductOrder", param.getSecretKey());
|
|
|
+ log.info("PlaceProductOrder(배송준비중 주문 정보 조회) :: timeStamp === " + timeStamp);
|
|
|
|
|
|
byte[] encryptKey = SimpleCryptLib.generateKey(timeStamp, param.getSecretKey());
|
|
|
|
|
|
@@ -2473,7 +2493,7 @@ public class TscNaverPayService {
|
|
|
try {
|
|
|
// TSIT 서버에서만 SSL 미적용.
|
|
|
String protocol = "";
|
|
|
- if ("tsit".equals(env.getProperty("spring.profiles.active"))) {
|
|
|
+ if ("tsit".equals(env.getProperty("spring.profiles.active")) || "locd".equals(env.getProperty("spring.profiles.active"))) {
|
|
|
protocol = "http:";
|
|
|
} else {
|
|
|
protocol = "https:";
|
|
|
@@ -2481,7 +2501,6 @@ public class TscNaverPayService {
|
|
|
log.info("SEND SCM URL ::::: {}", protocol + env.getProperty("domain.scm") + urlQueryString);
|
|
|
URL url = new URL(protocol + env.getProperty("domain.scm") + urlQueryString);
|
|
|
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
|
|
|
-
|
|
|
urlCon.setUseCaches(false);
|
|
|
urlCon.setDoOutput(true);
|
|
|
urlCon.setRequestMethod("GET");
|
|
|
@@ -2500,7 +2519,20 @@ public class TscNaverPayService {
|
|
|
log.info("NAVERPAY RESULT MESSAGE ::::: " + out.toString("UTF-8"));
|
|
|
|
|
|
if (!"SUCCESS".equals(out.toString("UTF-8"))) {
|
|
|
- throw new IllegalStateException("네이버페이 송부 실패");
|
|
|
+ Gson gson = new Gson();
|
|
|
+ GagaMap rtn = new GagaMap();
|
|
|
+
|
|
|
+ try {
|
|
|
+ rtn = gson.fromJson(out.toString("UTF-8"), GagaMap.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return "네이버페이 송부 실패";
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("status >>> {}", rtn.getString("status"));
|
|
|
+ log.info("message >>> {}", rtn.getString("message"));
|
|
|
+ if (!"SUCCESS".equals(rtn.getString("status"))) {
|
|
|
+ return rtn.getString("message");
|
|
|
+ }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -2508,7 +2540,7 @@ public class TscNaverPayService {
|
|
|
|
|
|
urlCon.disconnect();
|
|
|
} catch (Exception e) {
|
|
|
- return "FAIL";
|
|
|
+ return "네이버페이 송부 실패";
|
|
|
}
|
|
|
|
|
|
return "SUCCESS";
|
|
|
@@ -2517,4 +2549,514 @@ public class TscNaverPayService {
|
|
|
public Order getOrderDetailInfoFromOrdDtlNo(Order param) {
|
|
|
return naverPayDao.getOrderDetailInfoFromOrdDtlNo(param);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 교환보류 요청
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 05
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public int nPayExchangeHold(Order order) {
|
|
|
+ Order info = naverPayDao.getOrderDetailInfoFromOrdDtlNo(order);
|
|
|
+ String holdCode = order.getHoldCode();
|
|
|
+ String holdReason = order.getHoldReason();
|
|
|
+ Integer regNo = order.getRegNo();
|
|
|
+ String npayOrdDtlNo = info.getNpayOrdDtlNo();
|
|
|
+ String pgGb = info.getPgGb();
|
|
|
+ Integer ordNo = info.getOrdNo();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
+ AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
|
|
|
+ MallServiceLocator MSL = new MallServiceLocator(env.getProperty("naverPay.port.address"));
|
|
|
+ MallServiceSOAP11BindingStub stub = (MallServiceSOAP11BindingStub)MSL.getMallServiceSOAP11Port();
|
|
|
+
|
|
|
+ WithholdExchangeRequest withholdExchangeRequest = new WithholdExchangeRequest();
|
|
|
+ WithholdExchangeResponse withholdExchangeResponse = new WithholdExchangeResponse();
|
|
|
+
|
|
|
+ if (order != null && TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
|
|
|
+ // 서명생성
|
|
|
+ generateSignature("WithholdExchange", env.getProperty("naverPay.secret.key"));
|
|
|
+ log.info("WithholdExchange(교환보류 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
+
|
|
|
+ //인증정보
|
|
|
+ accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ accessCredentialsType.setSignature(signature);
|
|
|
+ accessCredentialsType.setTimestamp(timeStamp);
|
|
|
+
|
|
|
+ withholdExchangeRequest.setAccessCredentials(accessCredentialsType);
|
|
|
+ withholdExchangeRequest.setDetailLevel("Full");
|
|
|
+ withholdExchangeRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
+ withholdExchangeRequest.setRequestID("");
|
|
|
+ withholdExchangeRequest.setProductOrderID(npayOrdDtlNo); // 상품 주문 번호
|
|
|
+
|
|
|
+ // 교환 보류 타입 코드
|
|
|
+ if (TscConstants.nPayExchangeHoldCode.EXCHANGE_DELIVERYFEE.value().equals(holdCode)) {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.EXCHANGE_DELIVERYFEE); // 교환 배송비 청구
|
|
|
+ } else if (TscConstants.nPayExchangeHoldCode.EXCHANGE_EXTRAFEE.value().equals(holdCode)) {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.EXCHANGE_EXTRAFEE); // 기타 교환 비용 청구
|
|
|
+ } else if (TscConstants.nPayExchangeHoldCode.EXCHANGE_PRODUCT_READY.value().equals(holdCode)) {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.EXCHANGE_PRODUCT_READY); // 교환 상품 준비 중
|
|
|
+ } else if (TscConstants.nPayExchangeHoldCode.EXCHANGE_PRODUCT_NOT_DELIVERED.value().equals(holdCode)) {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.EXCHANGE_PRODUCT_NOT_DELIVERED); // 교환 상품 미입고
|
|
|
+ } else if (TscConstants.nPayExchangeHoldCode.EXCHANGE_HOLDBACK.value().equals(holdCode)) {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.EXCHANGE_HOLDBACK); // 교환 구매 확정 보류
|
|
|
+ } else {
|
|
|
+ withholdExchangeRequest.setExchangeHoldCode(HoldbackClassType.ETC); // 기타 사유
|
|
|
+ }
|
|
|
+
|
|
|
+ withholdExchangeRequest.setExchangeHoldDetailContent(holdReason); // 교환 보류 상세 사유
|
|
|
+ // withholdExchangeRequest.setEtcFeeDemandAmount(0); // 기타 교환 비용
|
|
|
+
|
|
|
+
|
|
|
+ withholdExchangeResponse = stub.withholdExchange(withholdExchangeRequest);
|
|
|
+
|
|
|
+ String resultStr = "";
|
|
|
+ if (withholdExchangeResponse.getResponseType() != null) {
|
|
|
+ resultStr = withholdExchangeResponse.getResponseType().toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(resultStr)) {
|
|
|
+ log.info("교환보류 성공 주문번호===>" + ordNo);
|
|
|
+ log.info("교환보류 성공 네이버상품주문번호===>" + npayOrdDtlNo);
|
|
|
+ } else {
|
|
|
+ log.info("교환보류 에러");
|
|
|
+ log.info("주문번호 ===>" + ordNo);
|
|
|
+ log.info("네이버상품주문번호 ===> " + npayOrdDtlNo);
|
|
|
+ log.info("Code : " + withholdExchangeResponse.getError().getCode());
|
|
|
+ log.info("Message : " + withholdExchangeResponse.getError().getMessage());
|
|
|
+ log.info("Detail : " + withholdExchangeResponse.getError().getDetail());
|
|
|
+
|
|
|
+ Order fail = new Order();
|
|
|
+ fail.setErrorReason("교환보류 데이터 송부 에러");
|
|
|
+ fail.setOrdNo(ordNo);
|
|
|
+ fail.setNpayOrdDtlNo(npayOrdDtlNo);
|
|
|
+ fail.setOptCd("WithholdExchange");
|
|
|
+ fail.setResultCd(withholdExchangeResponse.getError().getCode());
|
|
|
+ fail.setResultMsg(withholdExchangeResponse.getError().getMessage());
|
|
|
+ fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
+ fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
+ fail.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderDao.createNaverPayErrorLog(fail);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 교환보류 해제 요청
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 05
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public int nPayReleaseExchangeHold(Order order) {
|
|
|
+ Order info = naverPayDao.getOrderDetailInfoFromOrdDtlNo(order);
|
|
|
+ String npayOrdDtlNo = info.getNpayOrdDtlNo();
|
|
|
+ String pgGb = info.getPgGb();
|
|
|
+ Integer ordNo = info.getOrdNo();
|
|
|
+ Integer regNo = order.getRegNo();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
+ AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
|
|
|
+ MallServiceLocator MSL = new MallServiceLocator(env.getProperty("naverPay.port.address"));
|
|
|
+ MallServiceSOAP11BindingStub stub = (MallServiceSOAP11BindingStub)MSL.getMallServiceSOAP11Port();
|
|
|
+
|
|
|
+ ReleaseExchangeHoldRequest releaseExchangeHoldRequest = new ReleaseExchangeHoldRequest();
|
|
|
+ ReleaseExchangeHoldResponse releaseExchangeHoldResponse = new ReleaseExchangeHoldResponse();
|
|
|
+
|
|
|
+ if (order != null && TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
|
|
|
+ // 서명생성
|
|
|
+ generateSignature("ReleaseExchangeHold", env.getProperty("naverPay.secret.key"));
|
|
|
+ log.info("ReleaseExchangeHold(교환보류 해제 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
+
|
|
|
+ //인증정보
|
|
|
+ accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ accessCredentialsType.setSignature(signature);
|
|
|
+ accessCredentialsType.setTimestamp(timeStamp);
|
|
|
+
|
|
|
+ releaseExchangeHoldRequest.setAccessCredentials(accessCredentialsType);
|
|
|
+ releaseExchangeHoldRequest.setDetailLevel("Full");
|
|
|
+ releaseExchangeHoldRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
+ releaseExchangeHoldRequest.setRequestID("");
|
|
|
+ releaseExchangeHoldRequest.setProductOrderID(npayOrdDtlNo); // 상품 주문 번호
|
|
|
+
|
|
|
+ releaseExchangeHoldResponse = stub.releaseExchangeHold(releaseExchangeHoldRequest);
|
|
|
+
|
|
|
+ String resultStr = "";
|
|
|
+ if (releaseExchangeHoldResponse.getResponseType() != null) {
|
|
|
+ resultStr = releaseExchangeHoldResponse.getResponseType().toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(resultStr)) {
|
|
|
+ log.info("교환보류 해제 성공 주문번호===>" + ordNo);
|
|
|
+ log.info("교환보류 해제 성공 네이버상품주문번호===>" + npayOrdDtlNo);
|
|
|
+ } else {
|
|
|
+ log.info("교환보류 해제 에러");
|
|
|
+ log.info("주문번호 ===>" + ordNo);
|
|
|
+ log.info("네이버상품주문번호 ===> " + npayOrdDtlNo);
|
|
|
+ log.info("Code : " + releaseExchangeHoldResponse.getError().getCode());
|
|
|
+ log.info("Message : " + releaseExchangeHoldResponse.getError().getMessage());
|
|
|
+ log.info("Detail : " + releaseExchangeHoldResponse.getError().getDetail());
|
|
|
+
|
|
|
+ Order fail = new Order();
|
|
|
+ fail.setErrorReason("교환보류 해제 데이터 송부 에러");
|
|
|
+ fail.setOrdNo(ordNo);
|
|
|
+ fail.setNpayOrdDtlNo(npayOrdDtlNo);
|
|
|
+ fail.setOptCd("ReleaseExchangeHold");
|
|
|
+ fail.setResultCd(releaseExchangeHoldResponse.getError().getCode());
|
|
|
+ fail.setResultMsg(releaseExchangeHoldResponse.getError().getMessage());
|
|
|
+ fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
+ fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
+ fail.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderDao.createNaverPayErrorLog(fail);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 반품보류 요청
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 05
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public int nPayReturnHold(Order order) {
|
|
|
+ Order info = naverPayDao.getOrderDetailInfoFromOrdDtlNo(order);
|
|
|
+ String npayOrdDtlNo = info.getNpayOrdDtlNo();
|
|
|
+ String pgGb = info.getPgGb();
|
|
|
+ String holdCode = order.getHoldCode();
|
|
|
+ Integer ordNo = info.getOrdNo();
|
|
|
+ Integer regNo = order.getRegNo();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
+ AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
|
|
|
+ MallServiceLocator MSL = new MallServiceLocator(env.getProperty("naverPay.port.address"));
|
|
|
+ MallServiceSOAP11BindingStub stub = (MallServiceSOAP11BindingStub)MSL.getMallServiceSOAP11Port();
|
|
|
+
|
|
|
+ WithholdReturnRequest withholdReturnRequest = new WithholdReturnRequest();
|
|
|
+ WithholdReturnResponse withholdReturnResponse = new WithholdReturnResponse();
|
|
|
+
|
|
|
+ if (order != null && TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
|
|
|
+ // 서명생성
|
|
|
+ generateSignature("WithholdReturn", env.getProperty("naverPay.secret.key"));
|
|
|
+ log.info("WithholdReturn(교환보류 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
+
|
|
|
+ //인증정보
|
|
|
+ accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ accessCredentialsType.setSignature(signature);
|
|
|
+ accessCredentialsType.setTimestamp(timeStamp);
|
|
|
+
|
|
|
+ withholdReturnRequest.setAccessCredentials(accessCredentialsType);
|
|
|
+ withholdReturnRequest.setDetailLevel("Full");
|
|
|
+ withholdReturnRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
+ withholdReturnRequest.setRequestID("");
|
|
|
+ withholdReturnRequest.setProductOrderID(npayOrdDtlNo); // 상품 주문 번호
|
|
|
+
|
|
|
+ // 교환 보류 타입 코드
|
|
|
+ if (TscConstants.nPayReturnHoldCode.RETURN_DELIVERYFEE.value().equals(holdCode)) {
|
|
|
+ withholdReturnRequest.setReturnHoldCode(HoldbackClassType.RETURN_DELIVERYFEE); // 반품 배송비 청구
|
|
|
+ } else if (TscConstants.nPayReturnHoldCode.EXTRAFEEE.value().equals(holdCode)) {
|
|
|
+ withholdReturnRequest.setReturnHoldCode(HoldbackClassType.EXTRAFEEE); // 기타 반품 비용 청구
|
|
|
+ } else if (TscConstants.nPayReturnHoldCode.RETURN_DELIVERYFEE_AND_EXTRAFEEE.value().equals(holdCode)) {
|
|
|
+ withholdReturnRequest.setReturnHoldCode(HoldbackClassType.RETURN_DELIVERYFEE_AND_EXTRAFEEE); // 반품 배송비 및 기타 반품 비용 청구
|
|
|
+ } else if (TscConstants.nPayReturnHoldCode.RETURN_PRODUCT_NOT_DELIVERED.value().equals(holdCode)) {
|
|
|
+ withholdReturnRequest.setReturnHoldCode(HoldbackClassType.RETURN_PRODUCT_NOT_DELIVERED); // 반품 상품 미입고
|
|
|
+ } else {
|
|
|
+ withholdReturnRequest.setReturnHoldCode(HoldbackClassType.ETC); // 기타 사유
|
|
|
+ }
|
|
|
+
|
|
|
+ withholdReturnRequest.setReturnHoldDetailContent(order.getHoldReason()); // 반품 보류 상세 사유
|
|
|
+ // withholdReturnRequest.setEtcFeeDemandAmount(0); // 기타 반품 비용
|
|
|
+
|
|
|
+
|
|
|
+ withholdReturnResponse = stub.withholdReturn(withholdReturnRequest);
|
|
|
+
|
|
|
+ String resultStr = "";
|
|
|
+ if (withholdReturnResponse.getResponseType() != null) {
|
|
|
+ resultStr = withholdReturnResponse.getResponseType().toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(resultStr)) {
|
|
|
+ log.info("반품보류 성공 주문번호===>" + ordNo);
|
|
|
+ log.info("반품보류 성공 네이버상품주문번호===>" + npayOrdDtlNo);
|
|
|
+ } else {
|
|
|
+ log.info("반품보류 에러");
|
|
|
+ log.info("주문번호 ===>" + ordNo);
|
|
|
+ log.info("네이버상품주문번호 ===> " + npayOrdDtlNo);
|
|
|
+ log.info("Code : " + withholdReturnResponse.getError().getCode());
|
|
|
+ log.info("Message : " + withholdReturnResponse.getError().getMessage());
|
|
|
+ log.info("Detail : " + withholdReturnResponse.getError().getDetail());
|
|
|
+
|
|
|
+ Order fail = new Order();
|
|
|
+ fail.setErrorReason("반품보류 데이터 송부 에러");
|
|
|
+ fail.setOrdNo(ordNo);
|
|
|
+ fail.setNpayOrdDtlNo(npayOrdDtlNo);
|
|
|
+ fail.setOptCd("WithholdReturn");
|
|
|
+ fail.setResultCd(withholdReturnResponse.getError().getCode());
|
|
|
+ fail.setResultMsg(withholdReturnResponse.getError().getMessage());
|
|
|
+ fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
+ fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
+ fail.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderDao.createNaverPayErrorLog(fail);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 반품보류 해제 요청
|
|
|
+ *
|
|
|
+ * @param OrderChange
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 08
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public int nPayReleaseReturnHold(Order order) {
|
|
|
+ Order info = naverPayDao.getOrderDetailInfoFromOrdDtlNo(order);
|
|
|
+ String npayOrdDtlNo = info.getNpayOrdDtlNo();
|
|
|
+ String pgGb = info.getPgGb();
|
|
|
+ Integer ordNo = info.getOrdNo();
|
|
|
+ Integer regNo = order.getRegNo();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
+ AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
|
|
|
+ MallServiceLocator MSL = new MallServiceLocator(env.getProperty("naverPay.port.address"));
|
|
|
+ MallServiceSOAP11BindingStub stub = (MallServiceSOAP11BindingStub)MSL.getMallServiceSOAP11Port();
|
|
|
+
|
|
|
+ ReleaseReturnHoldRequest releaseReturnHoldRequest = new ReleaseReturnHoldRequest();
|
|
|
+ ReleaseReturnHoldResponse releaseReturnHoldResponse = new ReleaseReturnHoldResponse();
|
|
|
+
|
|
|
+ if (order != null && TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
|
|
|
+ // 서명생성
|
|
|
+ generateSignature("ReleaseReturnHold", env.getProperty("naverPay.secret.key"));
|
|
|
+ log.info("ReleaseReturnHold(반품보류 해제 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
+
|
|
|
+ //인증정보
|
|
|
+ accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ accessCredentialsType.setSignature(signature);
|
|
|
+ accessCredentialsType.setTimestamp(timeStamp);
|
|
|
+
|
|
|
+ releaseReturnHoldRequest.setAccessCredentials(accessCredentialsType);
|
|
|
+ releaseReturnHoldRequest.setDetailLevel("Full");
|
|
|
+ releaseReturnHoldRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
+ releaseReturnHoldRequest.setRequestID("");
|
|
|
+ releaseReturnHoldRequest.setProductOrderID(npayOrdDtlNo); // 상품 주문 번호
|
|
|
+
|
|
|
+ releaseReturnHoldResponse = stub.releaseReturnHold(releaseReturnHoldRequest);
|
|
|
+
|
|
|
+ String resultStr = "";
|
|
|
+ if (releaseReturnHoldResponse.getResponseType() != null) {
|
|
|
+ resultStr = releaseReturnHoldResponse.getResponseType().toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(resultStr)) {
|
|
|
+ log.info("반품보류 해제 성공 주문번호===>" + ordNo);
|
|
|
+ log.info("반품보류 해제 성공 네이버상품주문번호===>" + npayOrdDtlNo);
|
|
|
+ } else {
|
|
|
+ log.info("반품보류 해제 에러");
|
|
|
+ log.info("주문번호 ===>" + ordNo);
|
|
|
+ log.info("네이버상품주문번호 ===> " + npayOrdDtlNo);
|
|
|
+ log.info("Code : " + releaseReturnHoldResponse.getError().getCode());
|
|
|
+ log.info("Message : " + releaseReturnHoldResponse.getError().getMessage());
|
|
|
+ log.info("Detail : " + releaseReturnHoldResponse.getError().getDetail());
|
|
|
+
|
|
|
+ Order fail = new Order();
|
|
|
+ fail.setErrorReason("반품보류 해제 데이터 송부 에러");
|
|
|
+ fail.setOrdNo(ordNo);
|
|
|
+ fail.setNpayOrdDtlNo(npayOrdDtlNo);
|
|
|
+ fail.setOptCd("ReleaseReturnHold");
|
|
|
+ fail.setResultCd(releaseReturnHoldResponse.getError().getCode());
|
|
|
+ fail.setResultMsg(releaseReturnHoldResponse.getError().getMessage());
|
|
|
+ fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
+ fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
+ fail.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderDao.createNaverPayErrorLog(fail);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 반품/교환 보류 여부 수정
|
|
|
+ *
|
|
|
+ * @param Order
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 05
|
|
|
+ */
|
|
|
+ public int updateNaverPayChangeHold(Order order) {
|
|
|
+ return naverPayDao.updateNaverPayChangeHold(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 발송지연 대상 조회
|
|
|
+ *
|
|
|
+ * @return Collection<Order>
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 12
|
|
|
+ */
|
|
|
+ public Collection<Order> getNaverPayDelayTargetList() {
|
|
|
+ return naverPayDao.getNaverPayDelayTargetList();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네이버페이 주문형 발송 지연 처리
|
|
|
+ *
|
|
|
+ * @param Order
|
|
|
+ * @return int
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 10. 12
|
|
|
+ */
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public int nPayDelayProductOrder(Order order) {
|
|
|
+ Integer ordNo = order.getOrdNo();
|
|
|
+ String npayOrdDtlNo = order.getNpayOrdDtlNo();
|
|
|
+ String pgGb = order.getPgGb();
|
|
|
+ String reasonCd = order.getReasonCd();
|
|
|
+ Integer regNo = order.getRegNo();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
+ AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
|
|
|
+ MallServiceLocator MSL = new MallServiceLocator(env.getProperty("naverPay.port.address"));
|
|
|
+ MallServiceSOAP11BindingStub stub = (MallServiceSOAP11BindingStub)MSL.getMallServiceSOAP11Port();
|
|
|
+
|
|
|
+ DelayProductOrderRequest delayProductOrderRequest = new DelayProductOrderRequest();
|
|
|
+ DelayProductOrderResponse delayProductOrderResponse = new DelayProductOrderResponse();
|
|
|
+
|
|
|
+ if (order != null && TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
|
|
|
+ // 서명생성
|
|
|
+ generateSignature("DelayProductOrder", env.getProperty("naverPay.secret.key"));
|
|
|
+ log.info("DelayProductOrder(발송 지연 네이버로 송신) :: timeStamp === " + timeStamp);
|
|
|
+
|
|
|
+ //인증정보
|
|
|
+ accessCredentialsType.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ accessCredentialsType.setSignature(signature);
|
|
|
+ accessCredentialsType.setTimestamp(timeStamp);
|
|
|
+
|
|
|
+ delayProductOrderRequest.setAccessCredentials(accessCredentialsType);
|
|
|
+ delayProductOrderRequest.setDetailLevel("Full");
|
|
|
+ delayProductOrderRequest.setVersion(env.getProperty("naverPay.version"));
|
|
|
+ delayProductOrderRequest.setRequestID("");
|
|
|
+ delayProductOrderRequest.setProductOrderID(npayOrdDtlNo); // 상품 주문 번호
|
|
|
+
|
|
|
+ // 발송 기한 설정
|
|
|
+ Calendar dispatchDate = Calendar.getInstance();
|
|
|
+ Date tmp;
|
|
|
+ if(StringUtils.isNotBlank(order.getDelvResDt())) {
|
|
|
+ tmp = new SimpleDateFormat("yyyyMMddHHmmss").parse(order.getDelvResDt(), new ParsePosition(0));
|
|
|
+ } else {
|
|
|
+ tmp = new Date();
|
|
|
+ }
|
|
|
+
|
|
|
+ dispatchDate.setTime(tmp);
|
|
|
+ delayProductOrderRequest.setDispatchDueDate(dispatchDate); // 발송 기한
|
|
|
+
|
|
|
+ // 발송 지연 사유 코드 설정
|
|
|
+ if (TscConstants.nPayDelayReasonCode.PRODUCT_PREPARE.value().equals(reasonCd)) {
|
|
|
+ delayProductOrderRequest.setDispatchDelayReasonCode(DelayedDispatchReasonType.PRODUCT_PREPARE); // 상품 준비 중
|
|
|
+ } else if (TscConstants.nPayDelayReasonCode.CUSTOMER_REQUEST.value().equals(reasonCd)) {
|
|
|
+ delayProductOrderRequest.setDispatchDelayReasonCode(DelayedDispatchReasonType.CUSTOMER_REQUEST); // 고객 요청
|
|
|
+ } else if (TscConstants.nPayDelayReasonCode.CUSTOM_BUILD.value().equals(reasonCd)) {
|
|
|
+ delayProductOrderRequest.setDispatchDelayReasonCode(DelayedDispatchReasonType.CUSTOM_BUILD); // 주문 제작
|
|
|
+ } else if (TscConstants.nPayDelayReasonCode.RESERVED_DISPATCH.value().equals(reasonCd)) {
|
|
|
+ delayProductOrderRequest.setDispatchDelayReasonCode(DelayedDispatchReasonType.RESERVED_DISPATCH); // 예약 발송
|
|
|
+ } else {
|
|
|
+ delayProductOrderRequest.setDispatchDelayReasonCode(DelayedDispatchReasonType.ETC); // 기타
|
|
|
+ }
|
|
|
+
|
|
|
+ // delayProductOrderRequest.setDispatchDelayDetailReason(); // 발송 지연 상세 사유
|
|
|
+
|
|
|
+ delayProductOrderResponse = stub.delayProductOrder(delayProductOrderRequest);
|
|
|
+
|
|
|
+ String resultStr = "";
|
|
|
+ if (delayProductOrderResponse.getResponseType() != null) {
|
|
|
+ resultStr = delayProductOrderResponse.getResponseType().toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(resultStr)) {
|
|
|
+ log.info("발송 지연 처리 성공 주문번호===>" + ordNo);
|
|
|
+ log.info("발송 지연 처리 성공 네이버상품주문번호===>" + npayOrdDtlNo);
|
|
|
+ } else {
|
|
|
+ log.info("발송 지연 처리 에러");
|
|
|
+ log.info("주문번호 ===>" + ordNo);
|
|
|
+ log.info("네이버상품주문번호 ===> " + npayOrdDtlNo);
|
|
|
+ log.info("Code : " + delayProductOrderResponse.getError().getCode());
|
|
|
+ log.info("Message : " + delayProductOrderResponse.getError().getMessage());
|
|
|
+ log.info("Detail : " + delayProductOrderResponse.getError().getDetail());
|
|
|
+
|
|
|
+ Order fail = new Order();
|
|
|
+ fail.setErrorReason("발송 지연 처리 데이터 송부 에러");
|
|
|
+ fail.setOrdNo(ordNo);
|
|
|
+ fail.setNpayOrdDtlNo(npayOrdDtlNo);
|
|
|
+ fail.setOptCd("DelayProductOrder");
|
|
|
+ fail.setResultCd(delayProductOrderResponse.getError().getCode());
|
|
|
+ fail.setResultMsg(delayProductOrderResponse.getError().getMessage());
|
|
|
+ fail.setMallCd(env.getProperty("naverPay.shop.id"));
|
|
|
+ fail.setAccessLicense(env.getProperty("naverPay.access.license"));
|
|
|
+ fail.setSecretKey(env.getProperty("naverPay.secret.key"));
|
|
|
+ fail.setRegNo(regNo);
|
|
|
+
|
|
|
+ orderDao.createNaverPayErrorLog(fail);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
}
|