|
@@ -1,42 +1,18 @@
|
|
|
package com.style24.core.biz.service;
|
|
package com.style24.core.biz.service;
|
|
|
|
|
|
|
|
-import java.lang.reflect.Type;
|
|
|
|
|
-import java.net.URI;
|
|
|
|
|
-import java.nio.charset.Charset;
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.Collection;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-import java.util.function.DoubleToIntFunction;
|
|
|
|
|
-
|
|
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.core.env.Environment;
|
|
|
-import org.springframework.http.HttpEntity;
|
|
|
|
|
-import org.springframework.http.HttpHeaders;
|
|
|
|
|
-import org.springframework.http.MediaType;
|
|
|
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
|
import org.springframework.util.MultiValueMap;
|
|
import org.springframework.util.MultiValueMap;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
|
|
-import com.gagaframework.web.parameter.GagaMap;
|
|
|
|
|
-import com.gagaframework.web.rest.server.GagaResponseStatus;
|
|
|
|
|
-import com.gagaframework.web.util.GagaFileUtil;
|
|
|
|
|
-import com.google.gson.Gson;
|
|
|
|
|
-import com.google.gson.GsonBuilder;
|
|
|
|
|
-import com.google.gson.reflect.TypeToken;
|
|
|
|
|
-import com.style24.core.biz.dao.TscPointDao;
|
|
|
|
|
import com.style24.core.biz.thirdparty.KakaoPayApi;
|
|
import com.style24.core.biz.thirdparty.KakaoPayApi;
|
|
|
-import com.style24.core.support.env.TscConstants;
|
|
|
|
|
import com.style24.core.support.message.TscMessageByLocale;
|
|
import com.style24.core.support.message.TscMessageByLocale;
|
|
|
-import com.style24.persistence.domain.CustCoupon;
|
|
|
|
|
import com.style24.persistence.domain.KakaoPay;
|
|
import com.style24.persistence.domain.KakaoPay;
|
|
|
import com.style24.persistence.domain.Order;
|
|
import com.style24.persistence.domain.Order;
|
|
|
import com.style24.persistence.domain.Payment;
|
|
import com.style24.persistence.domain.Payment;
|
|
|
-import com.style24.persistence.domain.Point;
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
@@ -96,7 +72,7 @@ public class TscKakaoPayService {
|
|
|
* 카카오페이 승인 처리
|
|
* 카카오페이 승인 처리
|
|
|
*
|
|
*
|
|
|
* @param Order
|
|
* @param Order
|
|
|
- * @return GagaMap
|
|
|
|
|
|
|
+ * @return Payment
|
|
|
* @author card007
|
|
* @author card007
|
|
|
* @since 2021. 03. 04
|
|
* @since 2021. 03. 04
|
|
|
*/
|
|
*/
|
|
@@ -118,7 +94,6 @@ public class TscKakaoPayService {
|
|
|
|
|
|
|
|
// 카카오페이 API 전송 결과 처리
|
|
// 카카오페이 API 전송 결과 처리
|
|
|
Payment payment = new Payment();
|
|
Payment payment = new Payment();
|
|
|
- Gson gson = new GsonBuilder().create();
|
|
|
|
|
int statusCode = kakaoPay.getStatusCode();
|
|
int statusCode = kakaoPay.getStatusCode();
|
|
|
|
|
|
|
|
// 승인 성공일때 200
|
|
// 승인 성공일때 200
|
|
@@ -126,19 +101,19 @@ public class TscKakaoPayService {
|
|
|
payment.setPgTradeNo(kakaoPay.getAid());
|
|
payment.setPgTradeNo(kakaoPay.getAid());
|
|
|
payment.setPgTid(kakaoPay.getTid());
|
|
payment.setPgTid(kakaoPay.getTid());
|
|
|
payment.setPgShopId(kakaoPay.getCid());
|
|
payment.setPgShopId(kakaoPay.getCid());
|
|
|
- payment.setOrdNo(Integer.parseInt(kakaoPay.getPartnerOrderId()));
|
|
|
|
|
- payment.setCustNo(Integer.parseInt(kakaoPay.getPartnerUserId()));
|
|
|
|
|
- payment.setKakaoMethodType(kakaoPay.getPaymentMethodType());
|
|
|
|
|
|
|
+ payment.setOrdNo(Integer.parseInt(kakaoPay.getPartner_order_id()));
|
|
|
|
|
+ payment.setCustNo(Integer.parseInt(kakaoPay.getPartner_user_id()));
|
|
|
|
|
+ payment.setKakaoMethodType(kakaoPay.getPayment_method_type());
|
|
|
payment.setPayAmt(kakaoPay.getAmount().getTotal());
|
|
payment.setPayAmt(kakaoPay.getAmount().getTotal());
|
|
|
payment.setKakaoPoint(kakaoPay.getAmount().getPoint());
|
|
payment.setKakaoPoint(kakaoPay.getAmount().getPoint());
|
|
|
payment.setKakaoDiscount(kakaoPay.getAmount().getDiscount());
|
|
payment.setKakaoDiscount(kakaoPay.getAmount().getDiscount());
|
|
|
|
|
|
|
|
// 카카오페이 카드결제 시 카드정보 설정
|
|
// 카카오페이 카드결제 시 카드정보 설정
|
|
|
- if ("CARD".equals(kakaoPay.getPaymentMethodType())) {
|
|
|
|
|
- payment.setCardKind(kakaoPay.getCardInfo().getPurchaseCorp());
|
|
|
|
|
- payment.setCardNm(kakaoPay.getCardInfo().getIssuerCorp());
|
|
|
|
|
- payment.setCardType("신용".equals(kakaoPay.getCardInfo().getCardType()) ? "N" : "Y");
|
|
|
|
|
- payment.setCardMips(kakaoPay.getCardInfo().getInstallMonth());
|
|
|
|
|
|
|
+ if ("CARD".equals(kakaoPay.getPayment_method_type())) {
|
|
|
|
|
+ payment.setCardKind(kakaoPay.getCard_info().getPurchase_corp());
|
|
|
|
|
+ payment.setCardNm(kakaoPay.getCard_info().getIssuer_corp());
|
|
|
|
|
+ payment.setCardType("신용".equals(kakaoPay.getCard_info().getCard_type()) ? "N" : "Y");
|
|
|
|
|
+ payment.setCardMips(kakaoPay.getCard_info().getInstall_month());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
payment.setResCd(String.valueOf(statusCode));
|
|
payment.setResCd(String.valueOf(statusCode));
|
|
@@ -146,8 +121,8 @@ public class TscKakaoPayService {
|
|
|
} else {
|
|
} else {
|
|
|
int code = Integer.parseInt(kakaoPay.getCode());
|
|
int code = Integer.parseInt(kakaoPay.getCode());
|
|
|
String msg = kakaoPay.getMsg();
|
|
String msg = kakaoPay.getMsg();
|
|
|
- String resultCode = kakaoPay.getExtras().getMethodResultCode();
|
|
|
|
|
- String resultMessage = kakaoPay.getExtras().getMethodResultMessage();
|
|
|
|
|
|
|
+ String resultCode = kakaoPay.getExtras().getMethod_result_code();
|
|
|
|
|
+ String resultMessage = kakaoPay.getExtras().getMethod_result_message();
|
|
|
|
|
|
|
|
payment.setResCd(String.valueOf(code));
|
|
payment.setResCd(String.valueOf(code));
|
|
|
payment.setResMsg(resultMessage);
|
|
payment.setResMsg(resultMessage);
|
|
@@ -160,7 +135,7 @@ public class TscKakaoPayService {
|
|
|
* 카카오페이 주문 조회
|
|
* 카카오페이 주문 조회
|
|
|
*
|
|
*
|
|
|
* @param Order
|
|
* @param Order
|
|
|
- * @return GagaMap
|
|
|
|
|
|
|
+ * @return KakaoPay
|
|
|
* @author card007
|
|
* @author card007
|
|
|
* @since 2021. 03. 04
|
|
* @since 2021. 03. 04
|
|
|
*/
|
|
*/
|
|
@@ -177,32 +152,38 @@ public class TscKakaoPayService {
|
|
|
// 카카오페이 API 전송
|
|
// 카카오페이 API 전송
|
|
|
KakaoPay pay = kakaoPayApi.kakaoPaymentApi(params, paymentOrderUrl);
|
|
KakaoPay pay = kakaoPayApi.kakaoPaymentApi(params, paymentOrderUrl);
|
|
|
|
|
|
|
|
- // 카카오페이 API 전송 결과 처리
|
|
|
|
|
- /*GagaMap result = new GagaMap();
|
|
|
|
|
- Gson gson = new GsonBuilder().create();
|
|
|
|
|
- result.setString("tid", map.getString("tid"));
|
|
|
|
|
- result.setString("cid", map.getString("cid"));
|
|
|
|
|
- result.setString("status", map.getString("status"));
|
|
|
|
|
- result.setString("partner_order_id", map.getString("partner_order_id"));
|
|
|
|
|
- result.setString("partner_user_id", map.getString("partner_user_id"));
|
|
|
|
|
- result.setString("payment_method_type", map.getString("payment_method_type"));
|
|
|
|
|
- // result.set("amount", gson.fromJson(map.getString("amount"), GagaMap.class));
|
|
|
|
|
- result.set("amount", map.get("amount"));
|
|
|
|
|
- Map tmp = (Map) map.get("amount");
|
|
|
|
|
- log.info("total >>> {}", jsonDoubleToInt(tmp.get("total")));
|
|
|
|
|
- // result.set("canceled_amount", gson.fromJson(map.getString("canceled_amount"), GagaMap.class));
|
|
|
|
|
- result.set("canceled_amount", map.get("canceled_amount"));
|
|
|
|
|
- // result.set("cancel_available_amount", gson.fromJson(map.getString("cancel_available_amount"), GagaMap.class));
|
|
|
|
|
- result.set("cancel_available_amount", map.get("cancel_available_amount"));
|
|
|
|
|
- result.setString("item_name", map.getString("item_name"));
|
|
|
|
|
- result.setString("item_code", map.getString("item_code"));
|
|
|
|
|
- result.setDouble("quantity", map.getDouble("quantity"));
|
|
|
|
|
- result.setString("created_at", map.getString("created_at"));
|
|
|
|
|
- result.setString("approved_at", map.getString("approved_at"));
|
|
|
|
|
- result.setString("canceled_at", map.getString("canceled_at"));
|
|
|
|
|
- // result.set("selected_card_info", gson.fromJson(map.getString("selected_card_info"), GagaMap.class));
|
|
|
|
|
- result.set("selected_card_info", map.get("selected_card_info"));
|
|
|
|
|
- result.set("payment_action_details", map.get("payment_action_details"));*/
|
|
|
|
|
|
|
+ return pay;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 카카오페이 결제 취소
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param Order
|
|
|
|
|
+ * @return KakaoPay
|
|
|
|
|
+ * @author card007
|
|
|
|
|
+ * @since 2021. 03. 05
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
|
|
+ public KakaoPay cancelKakaoPayment(Order order) {
|
|
|
|
|
+ // 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("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 pay = kakaoPayApi.kakaoPaymentApi(params, cancelPaymentUrl);
|
|
|
|
|
|
|
|
return pay;
|
|
return pay;
|
|
|
}
|
|
}
|