diff --git a/module-application/src/main/java/com/devtoon/jtoon/payment/application/PaymentApplicationService.java b/module-application/src/main/java/com/devtoon/jtoon/payment/application/PaymentApplicationService.java index 2ecc4a5e..df14cb9a 100644 --- a/module-application/src/main/java/com/devtoon/jtoon/payment/application/PaymentApplicationService.java +++ b/module-application/src/main/java/com/devtoon/jtoon/payment/application/PaymentApplicationService.java @@ -5,11 +5,9 @@ import org.springframework.stereotype.Service; -import com.devtoon.jtoon.global.common.MemberThreadLocal; -import com.devtoon.jtoon.member.entity.Member; import com.devtoon.jtoon.payment.request.PaymentReq; import com.devtoon.jtoon.payment.service.IamportService; -import com.devtoon.jtoon.payment.service.PaymentInfoService; +import com.devtoon.jtoon.payment.service.PaymentInfoDomainService; import com.siot.IamportRestClient.exception.IamportResponseException; import lombok.RequiredArgsConstructor; @@ -18,13 +16,12 @@ @RequiredArgsConstructor public class PaymentApplicationService { - private final PaymentInfoService paymentInfoService; private final IamportService iamportService; + private final PaymentInfoDomainService paymentInfoDomainService; public BigDecimal validatePayment(PaymentReq paymentReq) throws IamportResponseException, IOException { - Member member = MemberThreadLocal.getMember(); iamportService.validateIamport(paymentReq); - return paymentInfoService.createPayment(paymentReq, member); + return paymentInfoDomainService.createPayment(paymentReq); } } diff --git a/module-domain/src/main/java/com/devtoon/jtoon/payment/service/IamportService.java b/module-domain/src/main/java/com/devtoon/jtoon/payment/service/IamportService.java index 6f7bdab8..90f0867e 100644 --- a/module-domain/src/main/java/com/devtoon/jtoon/payment/service/IamportService.java +++ b/module-domain/src/main/java/com/devtoon/jtoon/payment/service/IamportService.java @@ -1,6 +1,7 @@ package com.devtoon.jtoon.payment.service; import java.io.IOException; +import java.math.BigDecimal; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -20,21 +21,22 @@ public class IamportService { private final IamportClient iamportClient; - private final PaymentInfoService paymentInfoService; + private final PaymentInfoDomainService paymentInfoDomainService; public IamportService( @Value("${pg.kg-inicis.rest-api-key}") String restApiKey, @Value("${pg.kg-inicis.rest-api-secret}") String restSecretKey, - PaymentInfoService paymentInfoService + PaymentInfoDomainService paymentInfoDomainService ) { this.iamportClient = new IamportClient(restApiKey, restSecretKey); - this.paymentInfoService = paymentInfoService; + this.paymentInfoDomainService = paymentInfoDomainService; } public IamportResponse cancelPayment(CancelReq cancelReq) throws IamportResponseException, IOException { IamportResponse irsp = iamportClient.paymentByImpUid(cancelReq.impUid()); - paymentInfoService.validateAmount(irsp, cancelReq.checksum()); + BigDecimal realAmount = irsp.getResponse().getAmount(); + paymentInfoDomainService.validateAmount(realAmount, cancelReq.checksum()); CancelData cancelData = cancelReq.toCancelData(irsp); return iamportClient.cancelPaymentByImpUid(cancelData); @@ -42,10 +44,11 @@ public IamportResponse cancelPayment(CancelReq cancelReq) public void validateIamport(PaymentReq paymentReq) throws IamportResponseException, IOException { IamportResponse irsp = iamportClient.paymentByImpUid(paymentReq.impUid()); + BigDecimal realAmount = irsp.getResponse().getAmount(); CookieItem cookieItem = CookieItem.from(paymentReq.cookieItem()); - paymentInfoService.validateAmount(irsp, cookieItem.getAmount()); - paymentInfoService.validateAmount(irsp, paymentReq.amount()); - paymentInfoService.validateImpUid(paymentReq); - paymentInfoService.validateMerchantUid(paymentReq); + paymentInfoDomainService.validateAmount(realAmount, cookieItem.getAmount()); + paymentInfoDomainService.validateAmount(realAmount, paymentReq.amount()); + paymentInfoDomainService.validateImpUid(paymentReq); + paymentInfoDomainService.validateMerchantUid(paymentReq); } } diff --git a/module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoService.java b/module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoDomainService.java similarity index 83% rename from module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoService.java rename to module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoDomainService.java index 32bdc912..8c00b99a 100644 --- a/module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoService.java +++ b/module-domain/src/main/java/com/devtoon/jtoon/payment/service/PaymentInfoDomainService.java @@ -8,6 +8,7 @@ import com.devtoon.jtoon.error.exception.DuplicatedException; import com.devtoon.jtoon.error.exception.InvalidRequestException; import com.devtoon.jtoon.error.model.ErrorStatus; +import com.devtoon.jtoon.global.common.MemberThreadLocal; import com.devtoon.jtoon.member.entity.Member; import com.devtoon.jtoon.member.entity.MemberCookie; import com.devtoon.jtoon.payment.entity.CookieItem; @@ -15,21 +16,20 @@ import com.devtoon.jtoon.payment.repository.MemberCookieRepository; import com.devtoon.jtoon.payment.repository.PaymentInfoRepository; import com.devtoon.jtoon.payment.request.PaymentReq; -import com.siot.IamportRestClient.response.IamportResponse; -import com.siot.IamportRestClient.response.Payment; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor @Transactional(readOnly = true) -public class PaymentInfoService { +public class PaymentInfoDomainService { private final PaymentInfoRepository paymentInfoRepository; private final MemberCookieRepository memberCookieRepository; @Transactional - public BigDecimal createPayment(PaymentReq paymentReq, Member member) { + public BigDecimal createPayment(PaymentReq paymentReq) { + Member member = MemberThreadLocal.getMember(); PaymentInfo paymentInfo = paymentReq.toEntity(member); CookieItem cookieItem = CookieItem.from(paymentReq.cookieItem()); MemberCookie memberCookie = MemberCookie.create(cookieItem.getCount(), member); @@ -39,9 +39,7 @@ public BigDecimal createPayment(PaymentReq paymentReq, Member member) { return paymentInfo.getAmount(); } - public void validateAmount(IamportResponse iamportResponse, BigDecimal amount) { - BigDecimal realAmount = iamportResponse.getResponse().getAmount(); - + public void validateAmount(BigDecimal realAmount, BigDecimal amount) { if (!realAmount.equals(amount)) { throw new InvalidRequestException(ErrorStatus.PAYMENT_AMOUNT_INVALID); }