|
|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|