Align PayU QR request with docs
Some checks failed
build-and-deploy / build-deploy (push) Failing after 29s

This commit is contained in:
androidlover5842
2026-01-30 05:30:08 +05:30
parent 38c0a0ec9a
commit e5c2abc317
5 changed files with 87 additions and 8 deletions

View File

@@ -77,14 +77,15 @@ class PayuQrPayments(
val productInfo = "Booking $bookingId"
val firstname = request.customerName?.trim()?.ifBlank { null } ?: "Guest"
val email = request.customerEmail?.trim()?.ifBlank { null } ?: "guest@example.com"
val phone = request.customerPhone?.trim()?.ifBlank { null } ?: ""
val phone = request.customerPhone?.trim()?.ifBlank { null }
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "customerPhone required")
val amount = String.format("%.2f", pending.toDouble())
val udf1 = bookingId.toString()
val udf2 = propertyId.toString()
val udf3 = ""
val udf4 = ""
val udf5 = ""
val udf3 = request.udf3?.trim()?.ifBlank { "" } ?: ""
val udf4 = request.udf4?.trim()?.ifBlank { "" } ?: ""
val udf5 = request.udf5?.trim()?.ifBlank { "" } ?: ""
val hash = sha512(
listOf(
settings.merchantKey,
@@ -116,15 +117,32 @@ class PayuQrPayments(
add("firstname", firstname)
add("email", email)
add("phone", phone)
add("surl", settings.successUrl)
add("furl", settings.failureUrl)
add("pg", "DBQR")
add("bankcode", "UPIDBQR")
add("hash", hash)
add("udf1", udf1)
add("udf2", udf2)
if (udf3.isNotBlank()) add("udf3", udf3)
if (udf4.isNotBlank()) add("udf4", udf4)
if (udf5.isNotBlank()) add("udf5", udf5)
add("txn_s2s_flow", "4")
add("s2s_client_ip", "127.0.0.1")
add("s2s_device_info", "TrisolarisServer")
request.expiryMinutes?.let { add("expiry_time", it.toString()) }
val clientIp = request.clientIp?.trim()?.ifBlank { null }
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "clientIp required")
val deviceInfo = request.deviceInfo?.trim()?.ifBlank { null }
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "deviceInfo required")
add("s2s_client_ip", clientIp)
add("s2s_device_info", deviceInfo)
val expirySeconds = request.expirySeconds
?: request.expiryMinutes?.let { it * 60 }
expirySeconds?.let { add("expiry_time", it.toString()) }
request.address1?.trim()?.ifBlank { null }?.let { add("address1", it) }
request.address2?.trim()?.ifBlank { null }?.let { add("address2", it) }
request.city?.trim()?.ifBlank { null }?.let { add("city", it) }
request.state?.trim()?.ifBlank { null }?.let { add("state", it) }
request.country?.trim()?.ifBlank { null }?.let { add("country", it) }
request.zipcode?.trim()?.ifBlank { null }?.let { add("zipcode", it) }
}
val requestPayload = form.entries.joinToString("&") { entry ->