NTP-60702 | Added check for recurrencePattern (#16773)

This commit is contained in:
Balrambhai Sharma
2025-06-30 16:01:09 +05:30
committed by GitHub
parent baaddc3189
commit 8dc7c830e9

View File

@@ -15,6 +15,7 @@ import com.navi.pay.analytics.NaviPayAnalytics
import com.navi.pay.management.common.sendmoney.model.network.SplitDetailsItem import com.navi.pay.management.common.sendmoney.model.network.SplitDetailsItem
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
import com.navi.pay.management.common.sendmoney.model.view.SplitDetailsType import com.navi.pay.management.common.sendmoney.model.view.SplitDetailsType
import com.navi.pay.management.mandate.model.view.MandateRecurrence
import com.navi.pay.management.moneytransfer.scanpay.model.view.QrError import com.navi.pay.management.moneytransfer.scanpay.model.view.QrError
import com.navi.pay.management.moneytransfer.scanpay.model.view.UpiUriResult import com.navi.pay.management.moneytransfer.scanpay.model.view.UpiUriResult
import com.navi.pay.management.moneytransfer.scanpay.model.view.UriType import com.navi.pay.management.moneytransfer.scanpay.model.view.UriType
@@ -121,6 +122,7 @@ class UpiUriParser @Inject constructor() {
fun Uri.getPayeeEntity(isVerifiedVpa: Boolean = false): PayeeEntity { fun Uri.getPayeeEntity(isVerifiedVpa: Boolean = false): PayeeEntity {
val amount = val amount =
(getQueryParameter("am") ?: "").let { if (it.isAmountValidForSendMoney()) it else "" } (getQueryParameter("am") ?: "").let { if (it.isAmountValidForSendMoney()) it else "" }
val recurrencePattern = getQueryParameter("recur")
return PayeeEntity( return PayeeEntity(
name = getQueryParameter("pn") ?: "", name = getQueryParameter("pn") ?: "",
vpa = getQueryParameter("pa") ?: "", vpa = getQueryParameter("pa") ?: "",
@@ -167,9 +169,17 @@ fun Uri.getPayeeEntity(isVerifiedVpa: Boolean = false): PayeeEntity {
mandateValidityEndDate = getQueryParameter("validityend"), mandateValidityEndDate = getQueryParameter("validityend"),
mandateAmountRule = mandateAmountRule =
getQueryParamValueOrDefault(getQueryParameter("amrule"), DEFAULT_MANDATE_AMOUNT_RULE), getQueryParamValueOrDefault(getQueryParameter("amrule"), DEFAULT_MANDATE_AMOUNT_RULE),
mandateRecurrence = getQueryParameter("recur"), mandateRecurrence = recurrencePattern,
mandateRecurrenceValue = getQueryParameter("recurvalue"), mandateRecurrenceValue =
mandateRecurrenceType = getQueryParameter("recurtype"), getValueBasedOnRecurrencePattern(
pattern = recurrencePattern,
value = getQueryParameter("recurvalue"),
),
mandateRecurrenceType =
getValueBasedOnRecurrencePattern(
pattern = recurrencePattern,
value = getQueryParameter("recurtype"),
),
mandateRevocable = getQueryParameter("rev"), mandateRevocable = getQueryParameter("rev"),
mandateShareToPayee = getQueryParameter("share"), mandateShareToPayee = getQueryParameter("share"),
mandateBlock = getQueryParameter("block"), mandateBlock = getQueryParameter("block"),
@@ -180,6 +190,19 @@ fun Uri.getPayeeEntity(isVerifiedVpa: Boolean = false): PayeeEntity {
) )
} }
private fun getValueBasedOnRecurrencePattern(pattern: String?, value: String?): String? {
val recurringPatterns =
setOf(
MandateRecurrence.ONETIME.name,
MandateRecurrence.DAILY.name,
MandateRecurrence.ASPRESENTED.name,
)
return when {
pattern in recurringPatterns -> null
else -> value
}
}
private fun getValidatedNote(notes: String?): String { private fun getValidatedNote(notes: String?): String {
if (notes == null) return "" if (notes == null) return ""
return notes.filter { char -> NOTES_REGEX.matches(char.toString()) }.trim() return notes.filter { char -> NOTES_REGEX.matches(char.toString()) }.trim()