diff --git a/external/build.gradle b/external/build.gradle index a818bbd..b03b7e8 100644 --- a/external/build.gradle +++ b/external/build.gradle @@ -6,6 +6,7 @@ dependencies { // implementation 'org.springframework:spring-beans' // implementation 'org.springframework:spring-context' implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-aop' } bootJar { diff --git a/external/src/main/java/com/samhap/kokomen/global/aop/TosspaymentsLoggingAspect.java b/external/src/main/java/com/samhap/kokomen/global/aop/TosspaymentsLoggingAspect.java new file mode 100644 index 0000000..88b02e4 --- /dev/null +++ b/external/src/main/java/com/samhap/kokomen/global/aop/TosspaymentsLoggingAspect.java @@ -0,0 +1,32 @@ +package com.samhap.kokomen.global.aop; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; + +@Slf4j +@Order(1) +@Aspect +@Component +public class TosspaymentsLoggingAspect { + + @Around("execution(* com.samhap.kokomen.payment.external.TosspaymentsClient.*(..))") + public Object logTosspaymentsApiCall(ProceedingJoinPoint joinPoint) throws Throwable { + String methodName = joinPoint.getSignature().getName(); + Object[] args = joinPoint.getArgs(); + + log.info("[토스페이먼츠 API 요청] {} - args: {}", methodName, args); + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Object result = joinPoint.proceed(); + stopWatch.stop(); + log.info("[토스페이먼츠 API 응답] {} - {}ms - response: {}", + methodName, stopWatch.getTotalTimeMillis(), result); + return result; + } +} diff --git a/external/src/main/java/com/samhap/kokomen/payment/external/TosspaymentsClient.java b/external/src/main/java/com/samhap/kokomen/payment/external/TosspaymentsClient.java index cebe58b..93dca34 100644 --- a/external/src/main/java/com/samhap/kokomen/payment/external/TosspaymentsClient.java +++ b/external/src/main/java/com/samhap/kokomen/payment/external/TosspaymentsClient.java @@ -1,16 +1,11 @@ package com.samhap.kokomen.payment.external; -import com.samhap.kokomen.global.annotation.ExecutionTimer; import com.samhap.kokomen.payment.external.dto.TosspaymentsConfirmRequest; import com.samhap.kokomen.payment.external.dto.TosspaymentsPaymentCancelRequest; import com.samhap.kokomen.payment.external.dto.TosspaymentsPaymentResponse; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestClient; -@Slf4j -@ExecutionTimer @Component public class TosspaymentsClient { @@ -21,45 +16,21 @@ public TosspaymentsClient(TossPaymentsClientBuilder tossPaymentsClientBuilder) { } public TosspaymentsPaymentResponse confirmPayment(TosspaymentsConfirmRequest request) { - try { - // TODO: interceptor로 로깅 처리 - log.info("토스페이먼츠 결제 승인 API 호출 - paymentKey: {}, orderId: {}, amount: {}", - request.paymentKey(), request.orderId(), request.amount()); - - TosspaymentsPaymentResponse response = restClient.post() - .uri("/v1/payments/confirm") - .body(request) - .retrieve() - .body(TosspaymentsPaymentResponse.class); - log.info("토스페이먼츠 결제 승인 완료 - response: {}", response); - - return response; - - } catch (HttpClientErrorException e) { - log.error("토스페이먼츠 결제 승인 실패 - paymentKey: {}, status: {}, responseBody: {}", - request.paymentKey(), e.getStatusCode(), e.getResponseBodyAsString(), e); - throw e; - } + return restClient.post() + .uri("/v1/payments/confirm") + .body(request) + .retrieve() + .body(TosspaymentsPaymentResponse.class); } - public TosspaymentsPaymentResponse cancelPayment(String paymentKey, TosspaymentsPaymentCancelRequest request) { - try { - log.info("토스페이먼츠 결제 취소 API 호출 - paymentKey: {}, cancelReason: {}", - paymentKey, request.cancelReason()); - - TosspaymentsPaymentResponse response = restClient.post() - .uri("/v1/payments/{paymentKey}/cancel", paymentKey) - .body(request) - .retrieve() - .body(TosspaymentsPaymentResponse.class); - log.info("토스페이먼츠 결제 취소 완료 - response: {}", response); - - return response; - - } catch (HttpClientErrorException e) { - log.error("토스페이먼츠 결제 취소 실패 - paymentKey: {}, status: {}, responseBody: {}", - paymentKey, e.getStatusCode(), e.getResponseBodyAsString(), e); - throw e; - } + public TosspaymentsPaymentResponse cancelPayment( + String paymentKey, + TosspaymentsPaymentCancelRequest request + ) { + return restClient.post() + .uri("/v1/payments/{paymentKey}/cancel", paymentKey) + .body(request) + .retrieve() + .body(TosspaymentsPaymentResponse.class); } }