NTP-55511 | PS | removed card details from clickstream and added additional logging (#15755)
This commit is contained in:
@@ -26,6 +26,7 @@ import com.navi.payment.nativepayment.presentation.reducer.ImageSource
|
||||
import com.navi.payment.nativepayment.utils.NaviPaymentErrorConfig
|
||||
import com.navi.payment.nativepayment.viewmodel.ScanCardResult
|
||||
import com.navi.payment.paymentscreen.model.ErrorReason
|
||||
import com.navi.payment.paymentscreen.model.NaviUpiTransactionInfo
|
||||
import com.navi.payment.utils.putIfNotNullAndNotEmpty
|
||||
import com.navi.payment.utils.usecases.CardValidator
|
||||
import com.navi.payment.utils.usecases.ExpiryDateValidator
|
||||
@@ -822,7 +823,10 @@ class NaviPaymentAnalytics private constructor() {
|
||||
payload?.optString("bankErrorMessage", EMPTY),
|
||||
)
|
||||
putIfNotNullAndNotEmpty("juspayOrderId", payload?.optString("orderId", EMPTY))
|
||||
put("response", response.toString())
|
||||
put(
|
||||
"response",
|
||||
if (response.toString().contains("card")) "cardTxn" else response.toString(),
|
||||
)
|
||||
}
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviPMT_Juspay_ProcessSdkResponse",
|
||||
@@ -833,7 +837,11 @@ class NaviPaymentAnalytics private constructor() {
|
||||
fun onJuspaySdkLogs(log: String, logPayload: String) {
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviPMT_Juspay_SdkLogs",
|
||||
eventValues = mapOf("log" to log, "log_payload" to logPayload),
|
||||
eventValues =
|
||||
mapOf(
|
||||
"log" to log,
|
||||
"log_payload" to if (logPayload.contains("card")) "cardTxn" else logPayload,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1984,6 +1992,47 @@ class NaviPaymentAnalytics private constructor() {
|
||||
}
|
||||
|
||||
inner class SendMoneyErrorBottomSheet {
|
||||
fun onSendMoneyError(
|
||||
code: String,
|
||||
localError: ErrorMessage? = null,
|
||||
networkError: GenericErrorResponse? = null,
|
||||
naviUpiTransactionInfo: NaviUpiTransactionInfo,
|
||||
sourceDestination: String,
|
||||
) {
|
||||
val eventAttributes = buildMap {
|
||||
put("error_code", code)
|
||||
put("local_error", localError.toString())
|
||||
put("network_error", networkError.toString())
|
||||
put("navi_upi_transaction_info", naviUpiTransactionInfo.toString())
|
||||
put("source_destination", sourceDestination)
|
||||
}
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviPMT_SendMoneyErrorBottomSheet_ErrorReceivedDuringSendMoney",
|
||||
eventValues = eventAttributes,
|
||||
)
|
||||
}
|
||||
|
||||
fun sendMoneyFailedRetryBottomSheetTriggered(
|
||||
screenName: String,
|
||||
errorCode: String,
|
||||
isRetryExperienceEnabled: String,
|
||||
upiRequestId: String,
|
||||
isAmountReadOnly: Boolean = true,
|
||||
baseAttributes: Map<String, String> = emptyMap(),
|
||||
) {
|
||||
val eventAttributes = buildMap {
|
||||
put("error_code", errorCode)
|
||||
put("upi_request_id", upiRequestId)
|
||||
put("is_amount_read_only", isAmountReadOnly.toString())
|
||||
put("is_retry_experience_enabled", isRetryExperienceEnabled)
|
||||
putAll(baseAttributes)
|
||||
}
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviPMT_${screenName}_SendMoneyFailedRetryBottomSheetTriggered",
|
||||
eventValues = eventAttributes,
|
||||
)
|
||||
}
|
||||
|
||||
fun bottomSheetShown(
|
||||
screenName: String,
|
||||
errorCode: String,
|
||||
@@ -2000,7 +2049,7 @@ class NaviPaymentAnalytics private constructor() {
|
||||
putAll(baseAttributes)
|
||||
}
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviPMT_${screenName}_SendMoneyErrorBottomSheet_Shown",
|
||||
eventName = "NaviPMT_${screenName}_SendMoneyErrorBottomSheetShown",
|
||||
eventValues = eventAttributes,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -759,6 +759,7 @@ fun MPSScreen(
|
||||
)
|
||||
onBackClick(PaymentCancelSource.ERROR_CANCEL_BTN_CLICKED)
|
||||
},
|
||||
showPayButtonLoader = showPayNowLoader,
|
||||
onPayViaOtherMethodsClicked = {
|
||||
sendMoneyErrorAnalytics.onPayViaOtherMethodsClicked(
|
||||
screenName =
|
||||
@@ -789,6 +790,16 @@ fun MPSScreen(
|
||||
)
|
||||
onResetUpiPinClick()
|
||||
},
|
||||
onPayButtonClick = {
|
||||
sendMoneyErrorAnalytics.onPayButtonClicked(
|
||||
screenName =
|
||||
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
|
||||
isRetryExperienceEnabled = true,
|
||||
selectedBankAccountId = selectedBankAccount?.accountId.orEmpty(),
|
||||
baseAttributes = mpsViewModel.getAnalyticsParams(),
|
||||
)
|
||||
mpsViewModel.startPayAmount()
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,11 +384,18 @@ constructor(
|
||||
sendMoneyErrorAnalytics.bottomSheetShown(
|
||||
screenName = NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
|
||||
errorCode = errorCode,
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.toString(),
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.value.toString(),
|
||||
baseAttributes = getAnalyticsParams(),
|
||||
upiRequestId = event.response.data?.upiRequestId.orEmpty(),
|
||||
)
|
||||
if (shouldShowPaymentRetryExperienceBottomSheet(errorBucket = errorBucket)) {
|
||||
sendMoneyErrorAnalytics.sendMoneyFailedRetryBottomSheetTriggered(
|
||||
screenName = NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
|
||||
errorCode = errorCode,
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.value.toString(),
|
||||
baseAttributes = getAnalyticsParams(),
|
||||
upiRequestId = event.response.data?.upiRequestId.orEmpty(),
|
||||
)
|
||||
updateBottomSheetUIState(
|
||||
showBottomSheet = true,
|
||||
bottomSheetUIState =
|
||||
|
||||
@@ -348,6 +348,13 @@ constructor(
|
||||
)
|
||||
if (shouldShowPaymentRetryExperienceBottomSheet(errorBucket = errorBucket)) {
|
||||
delay(SCREEN_TRANSITION_DURATION_IN_MILLIS.toLong())
|
||||
sendMoneyErrorAnalytics.sendMoneyFailedRetryBottomSheetTriggered(
|
||||
screenName = NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName,
|
||||
errorCode = errorCode,
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.toString(),
|
||||
baseAttributes = getAnalyticsParams(),
|
||||
upiRequestId = event.response.data?.upiRequestId.orEmpty(),
|
||||
)
|
||||
updateBottomSheetUIState(
|
||||
showBottomSheet = true,
|
||||
bottomSheetStateChange = true,
|
||||
|
||||
@@ -67,10 +67,12 @@ import com.navi.payment.utils.Constants.COINS_AMOUNT
|
||||
import com.navi.payment.utils.Constants.COINS_CURRENCY
|
||||
import com.navi.payment.utils.Constants.COINS_VALUE
|
||||
import com.navi.payment.utils.Constants.IS_AMOUNT_READ_ONLY
|
||||
import com.navi.payment.utils.Constants.SCREEN_TRANSITION_DURATION_IN_MILLIS
|
||||
import com.navi.payment.utils.getPMSMetricInfo
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
@@ -153,11 +155,21 @@ constructor(
|
||||
screenName = NaviPaymentAnalyticScreenName.ONE_CLICK_CHECKOUT_SCREEN.screenName,
|
||||
errorCode = errorCode,
|
||||
isAmountReadOnly = isAmountReadOnly,
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.toString(),
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.value.toString(),
|
||||
baseAttributes = getAnalyticsParams(),
|
||||
upiRequestId = event.response.data?.upiRequestId.orEmpty(),
|
||||
)
|
||||
if (shouldShowPaymentRetryExperienceBottomSheet(errorBucket = errorBucket)) {
|
||||
delay(SCREEN_TRANSITION_DURATION_IN_MILLIS.toLong())
|
||||
sendMoneyErrorAnalytics.sendMoneyFailedRetryBottomSheetTriggered(
|
||||
screenName =
|
||||
NaviPaymentAnalyticScreenName.ONE_CLICK_CHECKOUT_SCREEN.screenName,
|
||||
errorCode = errorCode,
|
||||
isAmountReadOnly = isAmountReadOnly,
|
||||
isRetryExperienceEnabled = isPaymentRetryExperienceEnabled.value.toString(),
|
||||
baseAttributes = getAnalyticsParams(),
|
||||
upiRequestId = event.response.data?.upiRequestId.orEmpty(),
|
||||
)
|
||||
updateBottomSheetUIState(
|
||||
showBottomSheet = true,
|
||||
bottomSheetUIState =
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.navi.pay.utils.isAccountIdOfTypeUpiLite
|
||||
import com.navi.payment.model.common.SignalPaymentData
|
||||
import com.navi.payment.model.paymentmethod.Amount
|
||||
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
|
||||
import com.navi.payment.nativepayment.NaviPaymentAnalytics
|
||||
import com.navi.payment.nativepayment.common.usecase.TransactionStatusUseCase
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider
|
||||
import com.navi.payment.nativepayment.dataprovider.PaymentDataProvider.Companion.ERROR_RESPONSE
|
||||
@@ -134,6 +135,7 @@ constructor(
|
||||
val paymentTransactionStatus = _paymentTransactionStatus.asStateFlow()
|
||||
|
||||
private val pollingStartTime = System.currentTimeMillis()
|
||||
private val naviPaymentAnalytics = NaviPaymentAnalytics.INSTANCE.SendMoneyErrorBottomSheet()
|
||||
|
||||
init {
|
||||
if (naviUpiTransactionInfo.isNull()) pollTransactionStatus() else executeSendMoney()
|
||||
@@ -221,6 +223,14 @@ constructor(
|
||||
.orEmpty(),
|
||||
)
|
||||
|
||||
val errorCode = sendMoneyResponse.errors?.firstOrNull()?.code.orEmpty()
|
||||
naviPaymentAnalytics.onSendMoneyError(
|
||||
code = errorCode,
|
||||
localError = sendMoneyResponse.error,
|
||||
networkError = sendMoneyResponse.errors?.firstOrNull(),
|
||||
naviUpiTransactionInfo = naviUpiTransactionInfo,
|
||||
sourceDestination = sourceDestination,
|
||||
)
|
||||
eventHandler
|
||||
.get()
|
||||
.postSendMoneyErrorEvent(
|
||||
|
||||
Reference in New Issue
Block a user