Require paymentId for Razorpay refunds
All checks were successful
build-and-deploy / build-deploy (push) Successful in 34s

This commit is contained in:
androidlover5842
2026-02-01 16:59:59 +05:30
parent 5d4748043f
commit d98f634f02
2 changed files with 15 additions and 20 deletions

View File

@@ -53,27 +53,23 @@ class RazorpayRefundsController(
} }
val paymentId = request.paymentId val paymentId = request.paymentId
val razorpayPaymentId = request.razorpayPaymentId?.trim()?.ifBlank { null } ?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "paymentId is required")
if ((paymentId == null && razorpayPaymentId == null) || (paymentId != null && razorpayPaymentId != null)) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Provide exactly one of paymentId or razorpayPaymentId")
}
val gatewayPaymentId = if (razorpayPaymentId != null) { val payment = paymentRepo.findById(paymentId).orElseThrow {
razorpayPaymentId ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found")
} else { }
val payment = paymentRepo.findById(paymentId!!).orElseThrow { if (payment.booking.id != bookingId || payment.property.id != propertyId) {
ResponseStatusException(HttpStatus.NOT_FOUND, "Payment not found") 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") val gatewayPaymentId = payment.gatewayPaymentId
} ?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is missing gateway id")
request.amount?.let { if (!gatewayPaymentId.startsWith("pay_")) {
if (it > payment.amount) { throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is not a Razorpay payment")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "amount must be <= payment amount")
}
}
payment.gatewayPaymentId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Payment is missing gateway id")
} }
val settings = settingsRepo.findByPropertyId(propertyId) val settings = settingsRepo.findByPropertyId(propertyId)

View File

@@ -109,7 +109,6 @@ data class RazorpayPaymentRequestCloseResponse(
data class RazorpayRefundRequest( data class RazorpayRefundRequest(
val paymentId: UUID? = null, val paymentId: UUID? = null,
val razorpayPaymentId: String? = null,
val amount: Long? = null, val amount: Long? = null,
val notes: String? = null val notes: String? = null
) )