From 9ce66d8074d46f4ba7b0347ce756fcc909f170d2 Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 9 Sep 2025 09:11:30 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=86=A0=EC=8A=A4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=20=EC=9D=91=EB=8B=B5=20JSON=20=EA=B8=B0=EB=A1=9D?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=9C=20RestClient=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/client/TosspayClient.kt | 75 +++++++++++-------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt b/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt index 02e32c1c..dc1a3c89 100644 --- a/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt +++ b/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt @@ -52,7 +52,7 @@ class TosspayClient( } private class ConfirmClient( - objectMapper: ObjectMapper, + private val objectMapper: ObjectMapper, private val client: RestClient, ) { companion object { @@ -61,27 +61,33 @@ private class ConfirmClient( private val errorHandler: TosspayErrorHandler = TosspayErrorHandler(objectMapper) - fun request(paymentKey: String, orderId: String, amount: Int): PaymentClientConfirmResponse = client.post() - .uri(CONFIRM_URI) - .contentType(MediaType.APPLICATION_JSON) - .body( - mapOf( - "paymentKey" to paymentKey, - "orderId" to orderId, - "amount" to amount + fun request(paymentKey: String, orderId: String, amount: Int): PaymentClientConfirmResponse { + val response = client.post() + .uri(CONFIRM_URI) + .contentType(MediaType.APPLICATION_JSON) + .body( + mapOf( + "paymentKey" to paymentKey, + "orderId" to orderId, + "amount" to amount + ) ) - ) - .retrieve() - .onStatus(errorHandler) - .body(PaymentClientConfirmResponse::class.java) - ?: run { - log.error { "[TosspayConfirmClient.request] 응답 바디 변환 실패" } - throw PaymentException(PaymentErrorCode.PAYMENT_UNEXPECTED_ERROR) - } + .retrieve() + .onStatus(errorHandler) + .body(String::class.java) + ?: run { + log.error { "[TosspayClient] 응답 바디 변환 실패" } + throw PaymentException(PaymentErrorCode.PAYMENT_UNEXPECTED_ERROR) + } + + log.debug { "[TosspayClient.confirm] 응답 수신: json = $response" } + + return objectMapper.readValue(response, PaymentClientConfirmResponse::class.java) + } } private class CancelClient( - objectMapper: ObjectMapper, + private val objectMapper: ObjectMapper, private val client: RestClient, ) { companion object { @@ -94,21 +100,26 @@ private class CancelClient( paymentKey: String, amount: Int, cancelReason: String - ): PaymentClientCancelResponse = client.post() - .uri(CANCEL_URI, paymentKey) - .body( - mapOf( - "cancelReason" to cancelReason, - "cancelAmount" to amount, + ): PaymentClientCancelResponse { + val response = client.post() + .uri(CANCEL_URI, paymentKey) + .body( + mapOf( + "cancelReason" to cancelReason, + "cancelAmount" to amount, + ) ) - ) - .retrieve() - .onStatus(errorHandler) - .body(PaymentClientCancelResponse::class.java) - ?: run { - log.error { "[TosspayClient] 응답 바디 변환 실패" } - throw PaymentException(PaymentErrorCode.PAYMENT_UNEXPECTED_ERROR) - } + .retrieve() + .onStatus(errorHandler) + .body(String::class.java) + ?: run { + log.error { "[TosspayClient] 응답 바디 변환 실패" } + throw PaymentException(PaymentErrorCode.PAYMENT_UNEXPECTED_ERROR) + } + + log.debug { "[TosspayClient.cancel] 응답 수신: json = $response" } + return objectMapper.readValue(response, PaymentClientCancelResponse::class.java) + } } private class TosspayErrorHandler(