Use isTest flag for PayU base URL
All checks were successful
build-and-deploy / build-deploy (push) Successful in 37s
All checks were successful
build-and-deploy / build-deploy (push) Successful in 37s
This commit is contained in:
@@ -28,11 +28,25 @@ class PayuSettingsSchemaFix(
|
|||||||
salt_32 varchar,
|
salt_32 varchar,
|
||||||
salt_256 varchar,
|
salt_256 varchar,
|
||||||
base_url varchar not null,
|
base_url varchar not null,
|
||||||
|
is_test boolean not null default false,
|
||||||
use_salt_256 boolean not null default true,
|
use_salt_256 boolean not null default true,
|
||||||
updated_at timestamptz not null
|
updated_at timestamptz not null
|
||||||
)
|
)
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
val hasIsTest = jdbcTemplate.queryForObject(
|
||||||
|
"""
|
||||||
|
select count(*)
|
||||||
|
from information_schema.columns
|
||||||
|
where table_name = 'payu_settings'
|
||||||
|
and column_name = 'is_test'
|
||||||
|
""".trimIndent(),
|
||||||
|
Int::class.java
|
||||||
|
) ?: 0
|
||||||
|
if (hasIsTest == 0) {
|
||||||
|
logger.info("Adding payu_settings.is_test column")
|
||||||
|
jdbcTemplate.execute("alter table payu_settings add column is_test boolean not null default false")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ class PayuQrPayments(
|
|||||||
contentType = MediaType.APPLICATION_FORM_URLENCODED
|
contentType = MediaType.APPLICATION_FORM_URLENCODED
|
||||||
}
|
}
|
||||||
val entity = org.springframework.http.HttpEntity(form, headers)
|
val entity = org.springframework.http.HttpEntity(form, headers)
|
||||||
val response = restTemplate.postForEntity(settings.baseUrl, entity, String::class.java)
|
val response = restTemplate.postForEntity(resolveBaseUrl(settings), entity, String::class.java)
|
||||||
val responseBody = response.body ?: ""
|
val responseBody = response.body ?: ""
|
||||||
|
|
||||||
record.responsePayload = responseBody
|
record.responsePayload = responseBody
|
||||||
@@ -196,6 +196,14 @@ class PayuQrPayments(
|
|||||||
return "https://api.hoteltrisolaris.in/properties/$propertyId/payu/return/$path"
|
return "https://api.hoteltrisolaris.in/properties/$propertyId/payu/return/$path"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun resolveBaseUrl(settings: com.android.trisolarisserver.models.payment.PayuSettings): String {
|
||||||
|
return if (settings.isTest) {
|
||||||
|
"https://test.payu.in/_payment"
|
||||||
|
} else {
|
||||||
|
"https://secure.payu.in/_payment"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun sha512(input: String): String {
|
private fun sha512(input: String): String {
|
||||||
val bytes = MessageDigest.getInstance("SHA-512").digest(input.toByteArray())
|
val bytes = MessageDigest.getInstance("SHA-512").digest(input.toByteArray())
|
||||||
return bytes.joinToString("") { "%02x".format(it) }
|
return bytes.joinToString("") { "%02x".format(it) }
|
||||||
|
|||||||
@@ -52,7 +52,12 @@ class PayuSettingsController(
|
|||||||
val key = request.merchantKey.trim().ifBlank {
|
val key = request.merchantKey.trim().ifBlank {
|
||||||
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "merchantKey required")
|
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "merchantKey required")
|
||||||
}
|
}
|
||||||
val baseUrl = request.baseUrl?.trim()?.ifBlank { null } ?: "https://secure.payu.in/_payment"
|
val isTest = request.isTest ?: false
|
||||||
|
val baseUrl = if (isTest) {
|
||||||
|
"https://test.payu.in/_payment"
|
||||||
|
} else {
|
||||||
|
"https://secure.payu.in/_payment"
|
||||||
|
}
|
||||||
val existing = payuSettingsRepo.findByPropertyId(propertyId)
|
val existing = payuSettingsRepo.findByPropertyId(propertyId)
|
||||||
val updated = if (existing == null) {
|
val updated = if (existing == null) {
|
||||||
PayuSettings(
|
PayuSettings(
|
||||||
@@ -61,6 +66,7 @@ class PayuSettingsController(
|
|||||||
salt32 = request.salt32?.trim()?.ifBlank { null },
|
salt32 = request.salt32?.trim()?.ifBlank { null },
|
||||||
salt256 = request.salt256?.trim()?.ifBlank { null },
|
salt256 = request.salt256?.trim()?.ifBlank { null },
|
||||||
baseUrl = baseUrl,
|
baseUrl = baseUrl,
|
||||||
|
isTest = isTest,
|
||||||
useSalt256 = request.useSalt256 ?: true,
|
useSalt256 = request.useSalt256 ?: true,
|
||||||
updatedAt = OffsetDateTime.now()
|
updatedAt = OffsetDateTime.now()
|
||||||
)
|
)
|
||||||
@@ -69,6 +75,7 @@ class PayuSettingsController(
|
|||||||
if (request.salt32 != null) existing.salt32 = request.salt32.trim().ifBlank { null }
|
if (request.salt32 != null) existing.salt32 = request.salt32.trim().ifBlank { null }
|
||||||
if (request.salt256 != null) existing.salt256 = request.salt256.trim().ifBlank { null }
|
if (request.salt256 != null) existing.salt256 = request.salt256.trim().ifBlank { null }
|
||||||
existing.baseUrl = baseUrl
|
existing.baseUrl = baseUrl
|
||||||
|
existing.isTest = isTest
|
||||||
if (request.useSalt256 != null) existing.useSalt256 = request.useSalt256
|
if (request.useSalt256 != null) existing.useSalt256 = request.useSalt256
|
||||||
existing.updatedAt = OffsetDateTime.now()
|
existing.updatedAt = OffsetDateTime.now()
|
||||||
existing
|
existing
|
||||||
@@ -82,7 +89,7 @@ private fun PayuSettings.toResponse(): PayuSettingsResponse {
|
|||||||
return PayuSettingsResponse(
|
return PayuSettingsResponse(
|
||||||
propertyId = propertyId,
|
propertyId = propertyId,
|
||||||
merchantKey = merchantKey,
|
merchantKey = merchantKey,
|
||||||
baseUrl = baseUrl,
|
isTest = isTest,
|
||||||
useSalt256 = useSalt256,
|
useSalt256 = useSalt256,
|
||||||
hasSalt32 = !salt32.isNullOrBlank(),
|
hasSalt32 = !salt32.isNullOrBlank(),
|
||||||
hasSalt256 = !salt256.isNullOrBlank()
|
hasSalt256 = !salt256.isNullOrBlank()
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ data class PayuSettingsUpsertRequest(
|
|||||||
val merchantKey: String,
|
val merchantKey: String,
|
||||||
val salt32: String? = null,
|
val salt32: String? = null,
|
||||||
val salt256: String? = null,
|
val salt256: String? = null,
|
||||||
val baseUrl: String? = null,
|
val isTest: Boolean? = null,
|
||||||
val useSalt256: Boolean? = null
|
val useSalt256: Boolean? = null
|
||||||
)
|
)
|
||||||
|
|
||||||
data class PayuSettingsResponse(
|
data class PayuSettingsResponse(
|
||||||
val propertyId: UUID,
|
val propertyId: UUID,
|
||||||
val merchantKey: String,
|
val merchantKey: String,
|
||||||
val baseUrl: String,
|
val isTest: Boolean,
|
||||||
val useSalt256: Boolean,
|
val useSalt256: Boolean,
|
||||||
val hasSalt32: Boolean,
|
val hasSalt32: Boolean,
|
||||||
val hasSalt256: Boolean
|
val hasSalt256: Boolean
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ class PayuSettings(
|
|||||||
@Column(name = "base_url", nullable = false)
|
@Column(name = "base_url", nullable = false)
|
||||||
var baseUrl: String = "https://secure.payu.in/_payment",
|
var baseUrl: String = "https://secure.payu.in/_payment",
|
||||||
|
|
||||||
|
@Column(name = "is_test", nullable = false)
|
||||||
|
var isTest: Boolean = false,
|
||||||
|
|
||||||
@Column(name = "use_salt_256", nullable = false)
|
@Column(name = "use_salt_256", nullable = false)
|
||||||
var useSalt256: Boolean = true,
|
var useSalt256: Boolean = true,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user