Bladeren bron

네이버페이 임시 커밋

card007 5 jaren geleden
bovenliggende
commit
90f7d57883

+ 44 - 23
src/main/java/com/style24/core/biz/service/TscKakaoPayService.java

@@ -32,9 +32,6 @@ public class TscKakaoPayService {
 	@Autowired
 	private TscMessageByLocale message;
 
-	@Autowired
-	private RestTemplate restTemplate;
-	
 	@Autowired
 	private KakaoPayApi kakaoPayApi;
 
@@ -51,18 +48,21 @@ public class TscKakaoPayService {
 		// API 전송 URL 설정
 		String paymentReadyUrl = env.getProperty("kakao.paymentReadyUrl");
 
+		// Redirect URL 설정
+		String redirectUrl = "http://" + env.getProperty("domain.front") + env.getProperty("kakao.paymentRedirectUrl");
+
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
 		params.add("cid", env.getProperty("kakao.cid"));
 		params.add("partner_order_id", order.getOrdNo()+"");
 		params.add("partner_user_id", order.getCustNo()+"");
 		params.add("item_name", order.getGoodsNm());
-		params.add("quantity", order.getOrdQty()+"");
-		params.add("total_amount", order.getRealOrdAmt()+"");
+		params.add("quantity", order.getOrdGoodsQty()+"");
+		params.add("total_amount", order.getPayAmt()+"");
 		params.add("tax_free_amount", "0");
-		params.add("approval_url", order.getApprovalUrl());
-		params.add("fail_url", order.getFailUrl());
-		params.add("cancel_url", order.getCancelUrl());
+		params.add("approval_url", redirectUrl);
+		params.add("fail_url", redirectUrl);
+		params.add("cancel_url", redirectUrl);
 
 		// 카카오페이 API 전송
 		return kakaoPayApi.kakaoPaymentApi(params, paymentReadyUrl);
@@ -77,23 +77,22 @@ public class TscKakaoPayService {
 	 * @since 2021. 03. 04
 	 */
 	@Transactional("shopTxnManager")
-	public Payment approveKakaoPayment(Order order) {
+	public Payment approveKakaoPayment(Payment payment) {
 		// API 전송 URL 설정
 		String approvePaymentUrl = env.getProperty("kakao.approvePaymentUrl");
 
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
 		params.add("cid", env.getProperty("kakao.cid"));
-		params.add("tid", order.getPgTid());
-		params.add("partner_order_id", order.getOrdNo()+"");
-		params.add("partner_user_id", order.getCustNo()+"");
-		params.add("pg_token", order.getPgToken());
+		params.add("tid", payment.getPgTid());
+		params.add("partner_order_id", payment.getPartnerOrderId());
+		params.add("partner_user_id", payment.getPartnerUserId());
+		params.add("pg_token", payment.getPgToken());
 
 		// 카카오페이 API 전송
 		KakaoPay kakaoPay = kakaoPayApi.kakaoPaymentApi(params, approvePaymentUrl);
 
 		// 카카오페이 API 전송 결과 처리
-		Payment payment = new Payment();
 		int statusCode = kakaoPay.getStatusCode();
 
 		// 승인 성공일때 200
@@ -164,29 +163,29 @@ public class TscKakaoPayService {
 	 * @since 2021. 03. 05
 	 */
 	@Transactional("shopTxnManager")
-	public Payment cancelKakaoPayment(Order order) {
+	public Payment cancelKakaoPayment(Payment payment) {
 		// API 전송 URL 설정
 		String cancelPaymentUrl = env.getProperty("kakao.cancelPaymentUrl");
 
 		// API 파라메터 설정
 		MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
 		params.add("cid", env.getProperty("kakao.cid"));
-		params.add("tid", order.getPgTid());
+		params.add("tid", payment.getPgTid());
+		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()));
-		}
+		// 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);
 
 		// 카카오페이 API 전송 결과 처리
-		Payment payment = new Payment();
 		int statusCode = kakaoPay.getStatusCode();
 
 		// 승인 성공일때 200
@@ -214,4 +213,26 @@ public class TscKakaoPayService {
 		return payment;
 	}
 
+	/**
+	 * 카카오페이 결제 데이터 생성
+	 *
+	 * @param KakaoPay, Order
+	 * @return Payment
+	 * @author card007
+	 * @since 2021. 03. 09
+	 */
+	public Payment setKakaoOrderData(KakaoPay kakaoPay, Order order) {
+		Payment payment = new Payment();
+		payment.setPgTid(kakaoPay.getTid());
+		payment.setPartnerOrderId(String.valueOf(order.getOrdNo()));
+		payment.setPartnerUserId(String.valueOf(order.getCustNo()));
+		payment.setNextRedirectAppUrl(kakaoPay.getNext_redirect_app_url());
+		payment.setNextRedirectMobileUrl(kakaoPay.getNext_redirect_mobile_url());
+		payment.setNextRedirectPcUrl(kakaoPay.getNext_redirect_pc_url());
+		payment.setAndroidAppScheme(kakaoPay.getAndroid_app_scheme());
+		payment.setIosAppScheme(kakaoPay.getIos_app_scheme());
+
+		return payment;
+	}
+
 }

+ 22 - 0
src/main/java/com/style24/core/biz/service/TscNaverPayService.java

@@ -233,4 +233,26 @@ public class TscNaverPayService {
 
 		return payment;
 	}
+
+	/**
+	 * 네이버페이 결제 데이터 생성
+	 *
+	 * @param Order
+	 * @return Payment
+	 * @author card007
+	 * @since 2021. 03. 09
+	 */
+	public Payment setNaverOrderData(Order order) {
+		String redirectUrl = "http://" + env.getProperty("domain.front") + env.getProperty("naverPay.paymentRedirectUrl");
+
+		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);
+
+		return payment;
+	}
 }

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

@@ -527,10 +527,10 @@ public class Order extends TscBaseDomain {
 	private int returnCount;
 
 	// 카카오페이
-	private String approvalUrl;
-	private String failUrl;
-	private String cancelUrl;
-	private String pgToken;
+	private String partnerOrderId;			// 가맹점 주문번호, 최대 100자
+	private String partnerUserId;			// 가맹점 회원 id, 최대 100자
+	private String pgToken;					// 결제승인 요청을 인증하는 토큰
+	private int ordGoodsQty;
 
 	// 네이버페이
 	private String returnUrl;

+ 22 - 6
src/main/java/com/style24/persistence/domain/Payment.java

@@ -76,13 +76,29 @@ public class Payment extends TscBaseDomain {
 	private String resMsg;			// 결과메세지
 	
 	// KakaoPay
-	private String kakaoMethodType;	// 결제 수단, CARD 또는 MONEY 중 하나
-	private int kakaoPoint;			// 사용한 포인트 금액
-	private int kakaoDiscount;		// 할인 금액
-	private String createDt;		// 결제 준비 요청 시각
-	private String approveDt;		// 결제 승인 시각
-	private String status;			// 카카오페이 결제 상태
+	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 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:계좌이체)
 }

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1832,8 +1832,8 @@
 		  FROM TB_CUST_POINT CP
 		 WHERE 1=1
 		   AND CP.CUST_NO = #{custNo}
-		   AND CP.EXP_BE_DT <![CDATA[<]]> NOW()
-		   AND CP.EXP_CMP_DT <![CDATA[>=]]> NOW()
+		   AND CP.EXP_BE_DT <![CDATA[>]]> NOW()
+		   AND CP.EXP_CMP_DT IS NULL
 	</select>
 	
 	<!-- 상품권정보 조회 -->