From a81da8caee3bf449dca34a4972482e2f78a1f625 Mon Sep 17 00:00:00 2001 From: junekyu02 Date: Fri, 15 Aug 2025 18:46:32 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EC=BB=A8=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20null=20=EA=B0=80=EB=8A=A5=ED=95=98=EA=B2=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/sumte/review/dto/ReviewRequestDto.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/sumte/review/dto/ReviewRequestDto.java b/src/main/java/com/sumte/review/dto/ReviewRequestDto.java index d85c5b7..96bf8d7 100644 --- a/src/main/java/com/sumte/review/dto/ReviewRequestDto.java +++ b/src/main/java/com/sumte/review/dto/ReviewRequestDto.java @@ -2,7 +2,6 @@ import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; @@ -18,7 +17,6 @@ public class ReviewRequestDto { @NotNull private Long roomId; - @NotBlank private String contents; @Min(1) From 0418400bb8da99be3a751b2b5dce72acc0ef01f4 Mon Sep 17 00:00:00 2001 From: hyowon Date: Fri, 15 Aug 2025 21:15:26 +0900 Subject: [PATCH 2/4] =?UTF-8?q?intent=20wrap=20=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/KakaoRedirectController.java | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/sumte/payment/controller/KakaoRedirectController.java b/src/main/java/com/sumte/payment/controller/KakaoRedirectController.java index 078d584..d5b329a 100644 --- a/src/main/java/com/sumte/payment/controller/KakaoRedirectController.java +++ b/src/main/java/com/sumte/payment/controller/KakaoRedirectController.java @@ -41,20 +41,38 @@ public ResponseEntity> success( log.info("[KAKAO SUCCESS] paymentId={}, pg_token={}", paymentId, pgToken); - String deepLink = UriComponentsBuilder.newInstance() - .scheme("myapp").host("pay").path("/success") - .queryParam("paymentId", paymentId) - .queryParam("pg_token", pgToken) - .build(true).toUriString(); + String query = "paymentId=" + paymentId + + "&pg_token=" + java.net.URLEncoder.encode(pgToken, java.nio.charset.StandardCharsets.UTF_8); - log.info("DeepLink constructed: {}", deepLink); + String intentUrl = "intent://pay/success?" + query + + "#Intent;scheme=myapp;package=com.example.sumte;end"; + + log.info("Intent URL constructed: {}", intentUrl); HttpHeaders headers = new HttpHeaders(); - headers.setLocation(URI.create(deepLink)); + headers.setLocation(java.net.URI.create(intentUrl)); log.info("Responding 302 with Location: {}", headers.getLocation()); + + // 바디엔 확인용으로 동일 문자열 내려줌 return ResponseEntity.status(HttpStatus.FOUND) .headers(headers) - .body(ApiResponse.success(deepLink)); + .body(ApiResponse.success(intentUrl)); + +// String deepLink = UriComponentsBuilder.newInstance() +// .scheme("myapp").host("pay").path("/success") +// .queryParam("paymentId", paymentId) +// .queryParam("pg_token", pgToken) +// .build(true).toUriString(); +// +// log.info("DeepLink constructed: {}", deepLink); + +// HttpHeaders headers = new HttpHeaders(); +// headers.setLocation(URI.create(deepLink)); +// log.info("Responding 302 with Location: {}", headers.getLocation()); +// +// return ResponseEntity.status(HttpStatus.FOUND) +// .headers(headers) +// .body(ApiResponse.success(deepLink)); } @GetMapping("/pay/cancel") From aa65b274b364c0c7634f4dec57995152637e8c47 Mon Sep 17 00:00:00 2001 From: hyowon Date: Fri, 15 Aug 2025 21:57:49 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=98=88=EC=95=BD=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=EC=9D=91=EB=8B=B5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sumte/reservation/converter/ReservationConverter.java | 1 + .../java/com/sumte/reservation/dto/ReservationResponseDTO.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/sumte/reservation/converter/ReservationConverter.java b/src/main/java/com/sumte/reservation/converter/ReservationConverter.java index 27c92b6..a725a82 100644 --- a/src/main/java/com/sumte/reservation/converter/ReservationConverter.java +++ b/src/main/java/com/sumte/reservation/converter/ReservationConverter.java @@ -45,6 +45,7 @@ public ReservationResponseDTO.MyReservationDTO toMyReservationDTO(Reservation re .guestHouseName(guestHouse.getName()) .roomName(room.getName()) .roomId(room.getId()) + .reservedAt(reservation.getCreatedAt()) .imageUrl(firstRoomImageUrl) .startDate(reservation.getStartDate()) .endDate(reservation.getEndDate()) diff --git a/src/main/java/com/sumte/reservation/dto/ReservationResponseDTO.java b/src/main/java/com/sumte/reservation/dto/ReservationResponseDTO.java index bd43ac8..bd19e68 100644 --- a/src/main/java/com/sumte/reservation/dto/ReservationResponseDTO.java +++ b/src/main/java/com/sumte/reservation/dto/ReservationResponseDTO.java @@ -27,6 +27,7 @@ public static class MyReservationDTO { private String guestHouseName; private String roomName; private Long roomId; + private LocalDateTime reservedAt; private String imageUrl; private LocalDate startDate; private LocalDate endDate; From 53e37560361883a839c510eec05eefc3e8daa3a3 Mon Sep 17 00:00:00 2001 From: hyowon Date: Tue, 19 Aug 2025 11:45:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[fix]=20=EC=9E=84=EC=9D=98=EC=9D=98=20?= =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20=EC=8A=B9=EC=9D=B8=20api=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sumte/payment/controller/PaymentController.java | 10 ++++++++++ .../java/com/sumte/payment/service/PaymentService.java | 1 + .../com/sumte/payment/service/PaymentServiceImpl.java | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/src/main/java/com/sumte/payment/controller/PaymentController.java b/src/main/java/com/sumte/payment/controller/PaymentController.java index e0374be..b89d4e0 100644 --- a/src/main/java/com/sumte/payment/controller/PaymentController.java +++ b/src/main/java/com/sumte/payment/controller/PaymentController.java @@ -49,4 +49,14 @@ public ResponseEntity> approvePayment( KakaoPayApproveResponseDTO response = paymentService.approvePayment(id, pgToken); return ResponseEntity.ok(ApiResponse.success(response)); } + + @PatchMapping("/{id}/approve/manual") + @Operation( + summary = "임의 결제 승인 API (테스트/관리자용)", + description = "paymentId로 결제를 강제 승인(PAID) 처리합니다." + ) + public ResponseEntity> approvePaymentManually(@PathVariable("id") Long id) { + paymentService.approvePaymentManually(id); + return ResponseEntity.ok(ApiResponse.success("PAID")); + } } diff --git a/src/main/java/com/sumte/payment/service/PaymentService.java b/src/main/java/com/sumte/payment/service/PaymentService.java index b29f545..2877953 100644 --- a/src/main/java/com/sumte/payment/service/PaymentService.java +++ b/src/main/java/com/sumte/payment/service/PaymentService.java @@ -7,4 +7,5 @@ public interface PaymentService { PaymentResponseDTO.PaymentReadyResponse requestPayment(PaymentRequestDTO.PaymentRequestCreate dto); KakaoPayApproveResponseDTO approvePayment(Long paymentId, String pgToken); + void approvePaymentManually(Long paymentId); } diff --git a/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java b/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java index 5269e58..fa274e3 100644 --- a/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java +++ b/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java @@ -91,4 +91,11 @@ public KakaoPayApproveResponseDTO approvePayment(Long paymentId, String pgToken) return response; } + + @Override + @Transactional + public void approvePaymentManually(Long paymentId) { + paymentRepository.findById(paymentId) + .ifPresent(Payment::markAsPaid); // 없으면 아무 것도 안 함 (예외 X) + } }