package roomescape.payment.web import io.swagger.v3.oas.annotations.Parameter import jakarta.validation.Valid import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.MemberId import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.response.CommonApiResponse import roomescape.payment.business.PaymentService import roomescape.payment.docs.PaymentAPI @RestController class PaymentController( private val paymentService: PaymentService ) : PaymentAPI { @PostMapping("/payments") override fun confirmPayment( @RequestParam(required = true) reservationId: Long, @Valid @RequestBody request: PaymentConfirmRequest ): ResponseEntity> { val response = paymentService.confirm(reservationId, request) return ResponseEntity.ok(CommonApiResponse(response)) } @PostMapping("/payments/cancel") override fun cancelPayment( @CurrentUser user: CurrentUserContext, @Valid @RequestBody request: PaymentCancelRequest ): ResponseEntity> { paymentService.cancel(user.id, request) return ResponseEntity.ok(CommonApiResponse()) } }