diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/util/UpiUriParser.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/util/UpiUriParser.kt index f36af72953..6f20cb1fb5 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/util/UpiUriParser.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/util/UpiUriParser.kt @@ -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.view.PayeeEntity 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.UpiUriResult 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 { val amount = (getQueryParameter("am") ?: "").let { if (it.isAmountValidForSendMoney()) it else "" } + val recurrencePattern = getQueryParameter("recur") return PayeeEntity( name = getQueryParameter("pn") ?: "", vpa = getQueryParameter("pa") ?: "", @@ -167,9 +169,17 @@ fun Uri.getPayeeEntity(isVerifiedVpa: Boolean = false): PayeeEntity { mandateValidityEndDate = getQueryParameter("validityend"), mandateAmountRule = getQueryParamValueOrDefault(getQueryParameter("amrule"), DEFAULT_MANDATE_AMOUNT_RULE), - mandateRecurrence = getQueryParameter("recur"), - mandateRecurrenceValue = getQueryParameter("recurvalue"), - mandateRecurrenceType = getQueryParameter("recurtype"), + mandateRecurrence = recurrencePattern, + mandateRecurrenceValue = + getValueBasedOnRecurrencePattern( + pattern = recurrencePattern, + value = getQueryParameter("recurvalue"), + ), + mandateRecurrenceType = + getValueBasedOnRecurrencePattern( + pattern = recurrencePattern, + value = getQueryParameter("recurtype"), + ), mandateRevocable = getQueryParameter("rev"), mandateShareToPayee = getQueryParameter("share"), 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 { if (notes == null) return "" return notes.filter { char -> NOTES_REGEX.matches(char.toString()) }.trim()