Return payment link in API response
Some checks failed
build-and-deploy / build-deploy (push) Failing after 28s
Some checks failed
build-and-deploy / build-deploy (push) Failing after 28s
This commit is contained in:
@@ -10,6 +10,7 @@ import com.android.trisolarisserver.repo.PaymentRepo
|
|||||||
import com.android.trisolarisserver.repo.PayuPaymentLinkSettingsRepo
|
import com.android.trisolarisserver.repo.PayuPaymentLinkSettingsRepo
|
||||||
import com.android.trisolarisserver.repo.RoomStayRepo
|
import com.android.trisolarisserver.repo.RoomStayRepo
|
||||||
import com.android.trisolarisserver.security.MyPrincipal
|
import com.android.trisolarisserver.security.MyPrincipal
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
import org.springframework.http.HttpEntity
|
import org.springframework.http.HttpEntity
|
||||||
import org.springframework.http.HttpHeaders
|
import org.springframework.http.HttpHeaders
|
||||||
import org.springframework.http.HttpStatus
|
import org.springframework.http.HttpStatus
|
||||||
@@ -32,7 +33,8 @@ class PayuPaymentLinksController(
|
|||||||
private val roomStayRepo: RoomStayRepo,
|
private val roomStayRepo: RoomStayRepo,
|
||||||
private val paymentRepo: PaymentRepo,
|
private val paymentRepo: PaymentRepo,
|
||||||
private val settingsRepo: PayuPaymentLinkSettingsRepo,
|
private val settingsRepo: PayuPaymentLinkSettingsRepo,
|
||||||
private val restTemplate: RestTemplate
|
private val restTemplate: RestTemplate,
|
||||||
|
private val objectMapper: ObjectMapper
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@PostMapping("/link")
|
@PostMapping("/link")
|
||||||
@@ -126,9 +128,11 @@ class PayuPaymentLinksController(
|
|||||||
throw ResponseStatusException(HttpStatus.BAD_GATEWAY, "PayU request failed")
|
throw ResponseStatusException(HttpStatus.BAD_GATEWAY, "PayU request failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val paymentLink = extractPaymentLink(responseBody)
|
||||||
return PayuPaymentLinkCreateResponse(
|
return PayuPaymentLinkCreateResponse(
|
||||||
amount = amountLong ?: pending,
|
amount = amountLong ?: pending,
|
||||||
currency = booking.property.currency,
|
currency = booking.property.currency,
|
||||||
|
paymentLink = paymentLink,
|
||||||
payuResponse = responseBody
|
payuResponse = responseBody
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -141,6 +145,17 @@ class PayuPaymentLinksController(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun extractPaymentLink(body: String): String? {
|
||||||
|
if (body.isBlank()) return null
|
||||||
|
return try {
|
||||||
|
val node = objectMapper.readTree(body)
|
||||||
|
val link = node.path("result").path("paymentLink").asText(null)
|
||||||
|
link?.takeIf { it.isNotBlank() }
|
||||||
|
} catch (_: Exception) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun buildReturnUrl(propertyId: UUID, success: Boolean): String {
|
private fun buildReturnUrl(propertyId: UUID, success: Boolean): String {
|
||||||
val path = if (success) "success" else "failure"
|
val path = if (success) "success" else "failure"
|
||||||
return "https://api.hoteltrisolaris.in/properties/$propertyId/payu/return/$path"
|
return "https://api.hoteltrisolaris.in/properties/$propertyId/payu/return/$path"
|
||||||
|
|||||||
@@ -80,5 +80,6 @@ data class PayuPaymentLinkCreateRequest(
|
|||||||
data class PayuPaymentLinkCreateResponse(
|
data class PayuPaymentLinkCreateResponse(
|
||||||
val amount: Long,
|
val amount: Long,
|
||||||
val currency: String,
|
val currency: String,
|
||||||
|
val paymentLink: String?,
|
||||||
val payuResponse: String
|
val payuResponse: String
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user