Bläddra i källkod

네이버페이 임시 커밋

card007 5 år sedan
förälder
incheckning
c451d1f10f

+ 2 - 10
src/main/java/com/style24/core/biz/service/TscKakaoPayService.java

@@ -139,14 +139,14 @@ public class TscKakaoPayService {
 	 * @since 2021. 03. 04
 	 */
 	@Transactional("shopTxnManager")
-	public KakaoPay getKakaoPaymentOrder(Order order) {
+	public KakaoPay getKakaoPaymentOrder(Payment payment) {
 		// API 전송 URL 설정
 		String paymentOrderUrl = env.getProperty("kakao.paymentOrderUrl");
 
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
 		params.add("cid", env.getProperty("kakao.cid"));
-		params.add("tid", order.getPgTid());
+		params.add("tid", payment.getPgTid());
 
 		// 카카오페이 API 전송
 		KakaoPay pay = kakaoPayApi.kakaoPaymentApi(params, paymentOrderUrl);
@@ -174,14 +174,6 @@ public class TscKakaoPayService {
 		params.add("cancel_amount", String.valueOf(payment.getPayAmt()));
 		params.add("cancel_tax_free_amount", "0");
 
-		// 전체 취소의 경우 카카오페이에 취소가능금액으로 취소금액 설정
-		// if ("Y".equals(order.getAllCanYn())) {
-		// 	KakaoPay orderInfo = getKakaoPaymentOrder(order);
-		// 	params.add("cancel_amount", String.valueOf(orderInfo.getCancel_available_amount().getTotal()));
-		// } else {
-		// 	params.add("cancel_amount", String.valueOf(order.getCnclRtnAmt()));
-		// }
-
 		// 카카오페이 API 전송
 		KakaoPay kakaoPay = kakaoPayApi.kakaoPaymentApi(params, cancelPaymentUrl);
 

+ 24 - 50
src/main/java/com/style24/core/biz/service/TscNaverPayService.java

@@ -55,17 +55,20 @@ public class TscNaverPayService {
 		// API 전송 URL 설정
 		String paymentReadyUrl = env.getProperty("naverPay.apiUrl") + env.getProperty("naverPay.partnerId") + env.getProperty("naverPay.paymentReadyUrl");
 
+		// Redirect URL 설정
+		String redirectUrl = "http://" + env.getProperty("domain.front") + env.getProperty("naverPay.paymentRedirectUrl");
+
 		// API 파라메터 설정
 		NaverPay naverPay = new NaverPay();
 		naverPay.setModelVersion("2");
 		naverPay.setMerchantUserKey(order.getCustNo());
 		naverPay.setMerchantPayKey(order.getOrdNo());
 		naverPay.setProductName(order.getGoodsNm());
-		naverPay.setProductCount(order.getOrdQty());
-		naverPay.setTotalPayAmount(order.getRealOrdAmt());
-		naverPay.setTaxScopeAmount(order.getRealOrdAmt());
+		naverPay.setProductCount(order.getOrdGoodsQty());
+		naverPay.setTotalPayAmount(order.getPayAmt());
+		naverPay.setTaxScopeAmount(order.getPayAmt());
 		naverPay.setTaxExScopeAmount(0);
-		naverPay.setReturnUrl(order.getReturnUrl());
+		naverPay.setReturnUrl(redirectUrl);
 
 		// 네이버페이 API 전송
 		return naverPayApi.naverPaymentJsonApi(naverPay, paymentReadyUrl);
@@ -80,19 +83,18 @@ public class TscNaverPayService {
 	 * @since 2021. 03. 08
 	 */
 	@Transactional("shopTxnManager")
-	public Payment approveNaverPayment(Order order) {
+	public Payment approveNaverPayment(Payment payment) {
 		// API 전송 URL 설정
-		String paymentReadyUrl = env.getProperty("naverPay.apiUrl") + env.getProperty("naverPay.partnerId") + env.getProperty("naverPay.approvePaymentUrl");
+		String approvePaymentUrl = env.getProperty("naverPay.apiUrl") + env.getProperty("naverPay.partnerId") + env.getProperty("naverPay.approvePaymentUrl");
 
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
-		params.add("paymentId", order.getPgTid());
+		params.add("paymentId", payment.getPgTid());
 
 		// 네이버페이 API 전송
-		NaverPay naverPay = naverPayApi.naverPaymentApi(params, paymentReadyUrl);
+		NaverPay naverPay = naverPayApi.naverPaymentApi(params, approvePaymentUrl);
 
 		// 카카오페이 API 전송 결과 처리
-		Payment payment = new Payment();
 		int statusCode = naverPay.getStatusCode();
 
 		// 승인 성공일때 200
@@ -146,13 +148,13 @@ public class TscNaverPayService {
 	 * @since 2021. 03. 08
 	 */
 	@Transactional("shopTxnManager")
-	public NaverPay getNaverPaymentOrder(Order order) {
+	public NaverPay getNaverPaymentOrder(Payment payment) {
 		// API 전송 URL 설정
 		String paymentOrderUrl = env.getProperty("naverPay.apiUrl") + env.getProperty("naverPay.partnerId") + env.getProperty("naverPay.paymentOrderUrl");
 
 		// API 파라메터 설정
 		NaverPay naverPay = new NaverPay();
-		naverPay.setPaymentId(order.getPgTid());
+		naverPay.setPaymentId(payment.getPgTid());
 
 		// 기간별 주문 조회 (31일 이내)
 		// naverPay.setStartTime(order.getStartTime());
@@ -174,40 +176,20 @@ public class TscNaverPayService {
 	 * @since 2021. 03. 08
 	 */
 	@Transactional("shopTxnManager")
-	public Payment cancelNaverPayment(Order order) {
+	public Payment cancelNaverPayment(Payment payment) {
 		// API 전송 URL 설정
 		String cancelPaymentUrl = env.getProperty("naverPay.apiUrl") + env.getProperty("naverPay.partnerId") + env.getProperty("naverPay.cancelPaymentUrl");
 
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
-		params.add("paymentId", order.getPgTid());
-		params.add("cancelReason", order.getChgReasonNm());
-
-		// 전체 취소의 경우 네이버페이에 취소가능금액으로 취소금액 설정
-		if ("Y".equals(order.getAllCanYn())) {
-			NaverPay orderInfo = getNaverPaymentOrder(order);
-			
-			int cancelAmount = 0;
-			for (int i = 0; i < orderInfo.getBody().getList().size(); i++) {
-				int amt = 0;
-
-				if ("01".equals(orderInfo.getBody().getList().get(i).getAdmissionTypeCode())) {
-					amt = orderInfo.getBody().getList().get(i).getTotalPayAmount();
-				} else if ("04".equals(orderInfo.getBody().getList().get(i).getAdmissionTypeCode())) {
-					amt = orderInfo.getBody().getList().get(i).getTotalPayAmount() * -1;
-				}
-
-				cancelAmount += amt;
-			}
-			params.add("cancelAmount", String.valueOf(cancelAmount));
-		} else {
-			params.add("cancelAmount", String.valueOf(order.getCnclRtnAmt()));
-		}
-		
+		params.add("paymentId", payment.getPgTid());
+		params.add("cancelReason", payment.getChgReasonNm());
+		params.add("cancelAmount", String.valueOf(payment.getPayAmt()));
+
 		// 취소 요청자 설정
 		String cancelRequester = "2";
-		if (StringUtils.isNotBlank(order.getCancelRequester())) {
-			cancelRequester = order.getCancelRequester();
+		if (StringUtils.isNotBlank(payment.getCancelRequester())) {
+			cancelRequester = payment.getCancelRequester();
 		}
 		params.add("cancelRequester", cancelRequester);
 
@@ -215,15 +197,14 @@ public class TscNaverPayService {
 		NaverPay naverPay = naverPayApi.naverPaymentApi(params, cancelPaymentUrl);
 
 		// 카카오페이 API 전송 결과 처리
-		Payment payment = new Payment();
 		int statusCode = naverPay.getStatusCode();
 
 		// 승인 성공일때 200
 		if (statusCode == 200) {
 			payment.setPgTradeNo(naverPay.getBody().getPayHistId());
 			payment.setPgTid(naverPay.getBody().getPaymentId());
-			payment.setOrdNo(order.getOrdNo());
-			payment.setCustNo(order.getCustNo());
+			payment.setOrdNo(payment.getOrdNo());
+			payment.setCustNo(payment.getCustNo());
 			payment.setNaverMethodType(naverPay.getBody().getPrimaryPayMeans());
 			payment.setPayAmt(naverPay.getBody().getPrimaryPayCancelAmount() + naverPay.getBody().getNpointCancelAmount());
 		}
@@ -242,16 +223,9 @@ public class TscNaverPayService {
 	 * @author card007
 	 * @since 2021. 03. 09
 	 */
-	public Payment setNaverOrderData(Order order) {
-		String redirectUrl = "http://" + env.getProperty("domain.front") + env.getProperty("naverPay.paymentRedirectUrl");
-
+	public Payment setNaverOrderData(NaverPay naverPay) {
 		Payment payment = new Payment();
-		payment.setOrdNo(order.getOrdNo());
-		payment.setCustNo(order.getCustNo());
-		payment.setProductName(order.getGoodsNm());
-		payment.setProductCount(order.getOrdGoodsQty());
-		payment.setPayAmt(order.getPayAmt());
-		payment.setReturnUrl(redirectUrl);
+		payment.setReserveId(naverPay.getBody().getReserveId());
 
 		return payment;
 	}

+ 1 - 12
src/main/java/com/style24/persistence/domain/Order.java

@@ -526,20 +526,9 @@ public class Order extends TscBaseDomain {
 	private int exchangeCount;
 	private int returnCount;
 
-	// 카카오페이
-	private String partnerOrderId;			// 가맹점 주문번호, 최대 100자
-	private String partnerUserId;			// 가맹점 회원 id, 최대 100자
-	private String pgToken;					// 결제승인 요청을 인증하는 토큰
+	// 카카오페이 & 네이버페이
 	private int ordGoodsQty;
 
-	// 네이버페이
-	private String returnUrl;
-	private String paymentId;
-	private String startTime;
-	private String endTime;
-	private String approvalType;
-	private String cancelRequester;
-
 	// 암호화 대상 복호화 처리
 	public String getCustNm() {
 		this.custNm = CryptoUtils.decryptAES(this.custNm);

+ 70 - 71
src/main/java/com/style24/persistence/domain/Payment.java

@@ -19,90 +19,89 @@ import lombok.Data;
 @Data
 public class Payment extends TscBaseDomain {
 	// TB_PAYMENT
-	private int paySq;				// 결제 일련번호
-	private int ordNo;				// 주문번호
-	private int payAmt;				// 결제금액
-	private int pgCpnAmt;			// PG 쿠폰할인금
-	private int npayPntAmt;			// 네이버페이 포인트 할인금
-	private int ordChgSq;			// 주문변경일련번호
-	private int custNo;				// 고객번호
-	private String payGb;			// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
-	private String payDt;			// 결제일자
-	private String payMeans;		// 결제수단
-	private String pgGb;			// PG구분
-	private String payStat;			// 결제 상태
-	private String pgTid;			// PG TID
-	private String pgTradeNo;		// PG거래번호(승인번호)
-	private String pgShopId;		// PG가맹점ID
-	private String cardType;		// PG 카드 유형 (Y:체크카드, N:신용카드, G:기프트카드) 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
-	private String cardKind;		// 카드종류. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
-	private String cardBank;		// 카드발급은행. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
-	private String cardNm;			// 카드명. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
-	private String cardMips;		// 카드할부개월수. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
-	private String cardPcableYn;	// 부분취소가능여부
-	private String vaNo;			// 가상계좌번호. 결제수단이 "20:무통장입금일" 때 사용
-	private String vaNm;			// 가상계좌예금주명. 결제수단이 "20:무통장입금일" 때 사용
-	private String vaBank;			// 가상계좌은행(공통코드G940). 결제수단이 "20:무통장입금일" 때 사용
-	private String vaDeadline;		// 무통장입금마감일시. 결제수단이 "20:무통장입금일" 때 사용
-	private String telecom;			// 통신사.결제수단이 휴대폰결제인경우만 사용
-	private String escrowYn;		// 에스크로 여부
-	private String cashAuthNo;		// 현금영수증 승인번호
-	private String cashTradeNo;		// 현금영수증 거래번호
+	private int paySq;						// 결제 일련번호
+	private int ordNo;						// 주문번호
+	private int payAmt;						// 결제금액
+	private int pgCpnAmt;					// PG 쿠폰할인금
+	private int npayPntAmt;					// 네이버페이 포인트 할인금
+	private int ordChgSq;					// 주문변경일련번호
+	private int custNo;						// 고객번호
+	private String payGb;					// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
+	private String payDt;					// 결제일자
+	private String payMeans;				// 결제수단
+	private String pgGb;					// PG구분
+	private String payStat;					// 결제 상태
+	private String pgTid;					// PG TID
+	private String pgTradeNo;				// PG거래번호(승인번호)
+	private String pgShopId;				// PG가맹점ID
+	private String cardType;				// PG 카드 유형 (Y:체크카드, N:신용카드, G:기프트카드) 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
+	private String cardKind;				// 카드종류. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
+	private String cardBank;				// 카드발급은행. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
+	private String cardNm;					// 카드명. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
+	private String cardMips;				// 카드할부개월수. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
+	private String cardPcableYn;			// 부분취소가능여부
+	private String vaNo;					// 가상계좌번호. 결제수단이 "20:무통장입금일" 때 사용
+	private String vaNm;					// 가상계좌예금주명. 결제수단이 "20:무통장입금일" 때 사용
+	private String vaBank;					// 가상계좌은행(공통코드G940). 결제수단이 "20:무통장입금일" 때 사용
+	private String vaDeadline;				// 무통장입금마감일시. 결제수단이 "20:무통장입금일" 때 사용
+	private String telecom;					// 통신사.결제수단이 휴대폰결제인경우만 사용
+	private String escrowYn;				// 에스크로 여부
+	private String cashAuthNo;				// 현금영수증 승인번호
+	private String cashTradeNo;				// 현금영수증 거래번호
 
 	// KCP
-	private int ordrIdxx;			// 가맹점 주문번호
-	private int goodMny;			// 결제금액
-	private int shopUserId;			// 가맹점 고객 ID (CUST_NO)
-	private int quotaopt;			// 신용카드 최대 할부개월수
-	private int leftAmt;			// 남은 금액
-	private int partCancelAmt;		// 부분취소금액
-	private Integer vcntExpireTerm;	// 무통장입금 유효기간 설정
-	private String dispTaxYn;		// 현금영수증 노출 여부
-	private String paycoDirect;		// 페이코 직접 호출 변수
-	private String payMthod;		// 페이코 직접 호출 변수
-	private String siteCd;			// 가맹점 상점코드
-	private String siteName;		// 가맹점 명
-	private String modType;			// 취소/부분취소 구분
-	private String modDesc;			// 취소 사유
+	private int ordrIdxx;					// 가맹점 주문번호
+	private int goodMny;					// 결제금액
+	private int shopUserId;					// 가맹점 고객 ID (CUST_NO)
+	private int quotaopt;					// 신용카드 최대 할부개월수
+	private int leftAmt;					// 남은 금액
+	private int partCancelAmt;				// 부분취소금액
+	private Integer vcntExpireTerm;			// 무통장입금 유효기간 설정
+	private String dispTaxYn;				// 현금영수증 노출 여부
+	private String paycoDirect;				// 페이코 직접 호출 변수
+	private String payMthod;				// 페이코 직접 호출 변수
+	private String siteCd;					// 가맹점 상점코드
+	private String siteName;				// 가맹점 명
+	private String modType;					// 취소/부분취소 구분
+	private String modDesc;					// 취소 사유
 	private String moduleType;
 	private String goodExpr;
-	private String buyrName;		// 구매자명
-	private String buyrMail;		// 구매자메일
-	private String buyrTel1;		// 구매자 전화번호
-	private String buyrTel2;		// 구매자 휴대폰번호
-	private String currency;		// 원화/달러 구분
-	private String payMethod;		// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 구분
-	private String goodName;		// 상품명
-	private String reqTx;			// 요청종류 (승인 : pay, 취소, 매입 : mod)
-	private String usePayMethod;	// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 요청 결과
+	private String buyrName;				// 구매자명
+	private String buyrMail;				// 구매자메일
+	private String buyrTel1;				// 구매자 전화번호
+	private String buyrTel2;				// 구매자 휴대폰번호
+	private String currency;				// 원화/달러 구분
+	private String payMethod;				// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 구분
+	private String goodName;				// 상품명
+	private String reqTx;					// 요청종류 (승인 : pay, 취소, 매입 : mod)
+	private String usePayMethod;			// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 요청 결과
 	private String tranCd;
-	private String resCd;			// 결과코드
-	private String resMsg;			// 결과메세지
+	private String resCd;					// 결과코드
+	private String resMsg;					// 결과메세지
 	
 	// KakaoPay
-	private String partnerOrderId;			// 가맹점 주문번호, 최대 100자
-	private String partnerUserId;			// 가맹점 회원 id, 최대 100자
-	private String pgToken;					// 결제승인 요청을 인증하는 토큰
+	private String partnerOrderId;			// 카카오페이 가맹점 주문번호, 최대 100자
+	private String partnerUserId;			// 카카오페이 가맹점 회원 id, 최대 100자
+	private String pgToken;					// 카카오페이 결제승인 요청을 인증하는 토큰
 	private String nextRedirectAppUrl;		// 카카오톡 결제 페이지 Redirect URL (모바일 앱)
 	private String nextRedirectMobileUrl;	// 카카오톡 결제 페이지 Redirect URL (모바일 웹)
 	private String nextRedirectPcUrl;		// 카카오톡 결제 페이지 Redirect URL (PC 웹)
 	private String androidAppScheme;		// 카카오페이 결제 화면으로 이동하는 Android 앱 스킴
 	private String iosAppScheme;			// 카카오페이 결제 화면으로 이동하는 iOS 앱 스킴
-	private String kakaoMethodType;			// 결제 수단, CARD 또는 MONEY 중 하나
-	private int kakaoPoint;					// 사용한 포인트 금액
-	private int kakaoDiscount;				// 할인 금액
-	private String createDt;				// 결제 준비 요청 시각
-	private String approveDt;				// 결제 승인 시각
+	private String kakaoMethodType;			// 카카오페이 결제 수단, CARD 또는 MONEY 중 하나
+	private int kakaoPoint;					// 카카오페이 사용한 포인트 금액
+	private int kakaoDiscount;				// 카카오페이 할인 금액
+	private String createDt;				// 카카오페이 결제 준비 요청 시각
+	private String approveDt;				// 카카오페이 결제 승인 시각
 	private String status;					// 카카오페이 결제 상태
 	
 	// NaverPay
-	private String merchantUserKey;
-	private String merchantPayKey;
-	private String productName;
-	private int productCount;
-	private int totalPayAmount;
-	private int taxScopeAmount;
-	private int taxExScopeAmount;
-	private String returnUrl;
-	private String naverMethodType;	// 주 결제 수단 (CARD:신용카드, BANK:계좌이체)
+	private String reserveId;				// 네이버페이 결제 예약 ID
+	private String startTime;				// 네이버페이 주문조회 시작일시
+	private String endTime;					// 네이버페이 주문조회 종료일시
+	private String approvalType;			// 네이버페이 주문조회 타입
+	private String cancelRequester;			// 네이버페이 취소 요청자(1: 구매자, 2: 가맹점 관리자)
+	private String chgReasonNm;				// 취소 사유
+	private String naverMethodType;			// 네이버페이 주 결제 수단 (CARD:신용카드, BANK:계좌이체)
+
 }