generated from pricelees/issue-pr-template
feat: 결제 승인 / 취소 API 추가
This commit is contained in:
parent
7f4af4770d
commit
1c961803e0
35
src/main/kotlin/roomescape/payment/docs/PaymentAPI.kt
Normal file
35
src/main/kotlin/roomescape/payment/docs/PaymentAPI.kt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package roomescape.payment.docs
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.Operation
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses
|
||||||
|
import jakarta.validation.Valid
|
||||||
|
import org.springframework.http.ResponseEntity
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam
|
||||||
|
import roomescape.auth.web.support.LoginRequired
|
||||||
|
import roomescape.auth.web.support.MemberId
|
||||||
|
import roomescape.common.dto.response.CommonApiResponse
|
||||||
|
import roomescape.payment.web.PaymentCancelRequest
|
||||||
|
import roomescape.payment.web.PaymentConfirmRequest
|
||||||
|
import roomescape.payment.web.PaymentCreateResponse
|
||||||
|
|
||||||
|
interface PaymentAPI {
|
||||||
|
|
||||||
|
@LoginRequired
|
||||||
|
@Operation(summary = "결제 승인", tags = ["로그인이 필요한 API"])
|
||||||
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
||||||
|
fun confirmPayment(
|
||||||
|
@RequestParam(required = true) reservationId: Long,
|
||||||
|
@Valid @RequestBody request: PaymentConfirmRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<PaymentCreateResponse>>
|
||||||
|
|
||||||
|
@LoginRequired
|
||||||
|
@Operation(summary = "결제 취소", tags = ["로그인이 필요한 API"])
|
||||||
|
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
||||||
|
fun cancelPayment(
|
||||||
|
@MemberId @Parameter(hidden = true) memberId: Long,
|
||||||
|
@Valid @RequestBody request: PaymentCancelRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>>
|
||||||
|
}
|
||||||
39
src/main/kotlin/roomescape/payment/web/PaymentController.kt
Normal file
39
src/main/kotlin/roomescape/payment/web/PaymentController.kt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
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.MemberId
|
||||||
|
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<CommonApiResponse<PaymentCreateResponse>> {
|
||||||
|
val response = paymentService.confirm(reservationId, request)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse(response))
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/payments/cancel")
|
||||||
|
override fun cancelPayment(
|
||||||
|
@MemberId @Parameter(hidden = true) memberId: Long,
|
||||||
|
@Valid @RequestBody request: PaymentCancelRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
||||||
|
paymentService.cancel(memberId, request)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse())
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user