diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/RazorpayRefundsController.kt b/src/main/kotlin/com/android/trisolarisserver/controller/RazorpayRefundsController.kt index 5d55acf..e1a0266 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/RazorpayRefundsController.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/RazorpayRefundsController.kt @@ -53,27 +53,23 @@ class RazorpayRefundsController( } val paymentId = request.paymentId - val razorpayPaymentId = request.razorpayPaymentId?.trim()?.ifBlank { null } - if ((paymentId == null && razorpayPaymentId == null) || (paymentId != null && razorpayPaymentId != null)) { - throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Provide exactly one of paymentId or razorpayPaymentId") - } + ?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "paymentId is required") - val gatewayPaymentId = if (razorpayPaymentId != null) { - razorpayPaymentId - } else { - val payment = paymentRepo.findById(paymentId!!).orElseThrow { - ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found") + val payment = paymentRepo.findById(paymentId).orElseThrow { + ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found") + } + if (payment.booking.id != bookingId || payment.property.id != propertyId) { + throw ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found for booking") + } + request.amount?.let { + if (it > payment.amount) { + throw ResponseStatusException(HttpStatus.BAD_REQUEST, "amount must be <= payment amount") } - if (payment.booking.id != bookingId || payment.property.id != propertyId) { - throw ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found for booking") - } - request.amount?.let { - if (it > payment.amount) { - throw ResponseStatusException(HttpStatus.BAD_REQUEST, "amount must be <= payment amount") - } - } - payment.gatewayPaymentId - ?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is missing gateway id") + } + val gatewayPaymentId = payment.gatewayPaymentId + ?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is missing gateway id") + if (!gatewayPaymentId.startsWith("pay_")) { + throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is not a Razorpay payment") } val settings = settingsRepo.findByPropertyId(propertyId) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt index 8583916..e63c3d3 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt @@ -109,7 +109,6 @@ data class RazorpayPaymentRequestCloseResponse( data class RazorpayRefundRequest( val paymentId: UUID? = null, - val razorpayPaymentId: String? = null, val amount: Long? = null, val notes: String? = null )