Add PayU settings and dynamic QR generation
Some checks failed
build-and-deploy / build-deploy (push) Failing after 29s

This commit is contained in:
androidlover5842
2026-01-30 05:27:04 +05:30
parent 3a2afa264f
commit 38c0a0ec9a
9 changed files with 531 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
package com.android.trisolarisserver.models.payment
import com.android.trisolarisserver.models.booking.Booking
import com.android.trisolarisserver.models.property.Property
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.EnumType
import jakarta.persistence.Enumerated
import jakarta.persistence.FetchType
import jakarta.persistence.GeneratedValue
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import jakarta.persistence.Table
import java.time.OffsetDateTime
import java.util.UUID
@Entity
@Table(name = "payu_qr_request")
class PayuQrRequest(
@Id
@GeneratedValue
@Column(columnDefinition = "uuid")
val id: UUID? = null,
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "property_id", nullable = false)
var property: Property,
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "booking_id", nullable = false)
var booking: Booking,
@Column(name = "txnid", nullable = false)
var txnid: String,
@Column(name = "amount", nullable = false)
var amount: Long,
@Column(name = "currency", nullable = false)
var currency: String,
@Enumerated(EnumType.STRING)
@Column(name = "status", nullable = false)
var status: PayuQrStatus = PayuQrStatus.CREATED,
@Column(name = "request_payload", columnDefinition = "text")
var requestPayload: String? = null,
@Column(name = "response_payload", columnDefinition = "text")
var responsePayload: String? = null,
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
val createdAt: OffsetDateTime = OffsetDateTime.now()
)
enum class PayuQrStatus {
CREATED,
SENT,
SUCCESS,
FAILED
}

View File

@@ -0,0 +1,48 @@
package com.android.trisolarisserver.models.payment
import com.android.trisolarisserver.models.property.Property
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.FetchType
import jakarta.persistence.GeneratedValue
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import jakarta.persistence.Table
import jakarta.persistence.UniqueConstraint
import java.time.OffsetDateTime
import java.util.UUID
@Entity
@Table(
name = "payu_settings",
uniqueConstraints = [UniqueConstraint(columnNames = ["property_id"])]
)
class PayuSettings(
@Id
@GeneratedValue
@Column(columnDefinition = "uuid")
val id: UUID? = null,
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "property_id", nullable = false)
var property: Property,
@Column(name = "merchant_key", nullable = false)
var merchantKey: String,
@Column(name = "salt_32")
var salt32: String? = null,
@Column(name = "salt_256")
var salt256: String? = null,
@Column(name = "base_url", nullable = false)
var baseUrl: String = "https://secure.payu.in/_payment",
@Column(name = "use_salt_256", nullable = false)
var useSalt256: Boolean = true,
@Column(name = "updated_at", nullable = false, columnDefinition = "timestamptz")
var updatedAt: OffsetDateTime = OffsetDateTime.now()
)