NTP-35135 | Anmol Agrawal | Added events for better logging (#14851)

This commit is contained in:
Anmol Agrawal
2025-02-04 19:02:09 +05:30
committed by GitHub
parent 88bf283ec8
commit df285218f4
3 changed files with 48 additions and 21 deletions

View File

@@ -61,6 +61,8 @@ object JusPayUtil {
const val FLAVOR_PROD = "prod"
const val LOG_LEVEL = 1
private val juspayAnalytics = NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
fun getProcessSDKPayload(payload: JSONObject?, requestId: String): JSONObject {
val sdkPayload = JSONObject()
sdkPayload.put(ARG_REQUEST_ID, requestId)
@@ -77,8 +79,10 @@ object JusPayUtil {
if (HyperServicesHolder.isSDKInitialized().not()) {
getJuspayInitPayload()?.let { payload ->
NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
.onJuspayInitStarted(payload.toString(), activity::class.java.simpleName)
juspayAnalytics.onJuspayInitStarted(
payload.toString(),
activity::class.java.simpleName,
)
HyperServicesHolder.initiateSDK(
activity = activity,
initiatePayload = payload,
@@ -92,8 +96,7 @@ object JusPayUtil {
data: JSONObject?,
hander: JuspayResponseHandler?,
) {
NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
.onJuspayInitResponse(response = data.toString())
juspayAnalytics.onJuspayInitResponse(response = data.toString())
paymentsCallback?.onEvent(data, hander)
}
@@ -123,8 +126,9 @@ object JusPayUtil {
payload: JSONObject,
juspayCallbackWrapper: JuspayCallbackWrapper? = null,
) {
NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
.onJuspayProcessSdkCalled(sourceActivityName = activity::class.java.simpleName)
juspayAnalytics.onJuspayProcessSdkCalled(
sourceActivityName = activity::class.java.simpleName
)
HyperServicesHolder.processSDK(
activity = activity,
processPayload = payload,
@@ -135,8 +139,7 @@ object JusPayUtil {
}
override fun onEvent(data: JSONObject?, hander: JuspayResponseHandler?) {
NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
.onJuspayProcessSdkResponse(data.toString())
juspayAnalytics.onJuspayProcessSdkResponse(data)
juspayCallbackWrapper?.onEvent(data, hander)
}
@@ -149,8 +152,7 @@ object JusPayUtil {
}
},
merchantLogger = { log, processPayload ->
NaviPaymentAnalytics.INSTANCE.JuspayAnalytics()
.onJuspaySdkLogs(log = log, processPayload.toString())
juspayAnalytics.onJuspaySdkLogs(log = log, processPayload.toString())
},
)
}

View File

@@ -24,6 +24,7 @@ import com.navi.payment.nativepayment.presentation.reducer.ImageSource
import com.navi.payment.nativepayment.viewmodel.ScanCardResult
import com.navi.payment.paymentscreen.model.ErrorReason
import com.navi.payment.paymentscreen.model.TransactionStatusRequest
import com.navi.payment.utils.putIfNotNullAndNotEmpty
import com.navi.payment.utils.usecases.CardValidator
import com.navi.payment.utils.usecases.ExpiryDateValidator
import com.navi.payment.utils.usecases.ValidationResult
@@ -592,17 +593,25 @@ class NaviPaymentAnalytics private constructor() {
fun onJuspayPaymentCallbackReceived(juspayJsonResponse: JSONObject) {
val payload = juspayJsonResponse.optJSONObject("payload")
val eventAttributes = buildMap {
putIfNotNullAndNotEmpty(
"errorMessage",
juspayJsonResponse.optString("errorMessage", EMPTY),
)
putIfNotNullAndNotEmpty(
"errorCode",
juspayJsonResponse.optString("errorCode", EMPTY),
)
putIfNotNullAndNotEmpty("bankErrorCode", payload?.optString("bankErrorCode", EMPTY))
putIfNotNullAndNotEmpty(
"bankErrorMessage",
(payload?.optString("bankErrorMessage", EMPTY)),
)
put("juspayResponse", juspayJsonResponse.toString())
}
NaviTrackEvent.trackEventOnClickStream(
eventName = "NaviPMT_CardScreen_JuspayPaymentCallbackReceived",
eventValues =
mapOf(
"errorMessage" to juspayJsonResponse.optString("errorMessage", EMPTY),
"errorCode" to juspayJsonResponse.optString("errorCode", EMPTY),
"bankErrorCode" to (payload?.optString("bankErrorCode", EMPTY) ?: EMPTY),
"bankErrorMessage" to
(payload?.optString("bankErrorMessage", EMPTY) ?: EMPTY),
"juspayResponse" to juspayJsonResponse.toString(),
),
eventValues = eventAttributes,
)
}
@@ -774,10 +783,22 @@ class NaviPaymentAnalytics private constructor() {
)
}
fun onJuspayProcessSdkResponse(response: String) {
fun onJuspayProcessSdkResponse(response: JSONObject?) {
val payload = response?.optJSONObject("payload")
val eventAttributes = buildMap {
putIfNotNullAndNotEmpty("errorMessage", response?.optString("errorMessage", EMPTY))
putIfNotNullAndNotEmpty("errorCode", response?.optString("errorCode", EMPTY))
putIfNotNullAndNotEmpty("bankErrorCode", payload?.optString("bankErrorCode", EMPTY))
putIfNotNullAndNotEmpty(
"bankErrorMessage",
payload?.optString("bankErrorMessage", EMPTY),
)
putIfNotNullAndNotEmpty("juspayOrderId", payload?.optString("orderId", EMPTY))
put("response", response.toString())
}
NaviTrackEvent.trackEventOnClickStream(
eventName = "NaviPMT_Juspay_ProcessSdkResponse",
eventValues = mapOf("response" to response),
eventValues = eventAttributes,
)
}

View File

@@ -328,3 +328,7 @@ fun String.ifNotEmpty(block: (String) -> Unit) {
block(this)
}
}
fun MutableMap<String, String>.putIfNotNullAndNotEmpty(key: String, value: String?) {
value?.takeIf { it.isNotEmpty() }?.let { put(key, it) }
}