Digio and Razorpay SDK Integration (#7957)
This commit is contained in:
@@ -18,8 +18,14 @@ import com.navi.ap.common.models.lambdamodels.ConsentResponse
|
||||
import com.navi.ap.common.sdk.helper.FinarkeinHelper
|
||||
import com.navi.ap.common.ui.ApplicationPlatformActivity
|
||||
import com.navi.ap.common.viewmodel.LambdaVM
|
||||
import com.navi.ap.utils.constants.DEV_DIGIO_E_SIGN
|
||||
import com.navi.ap.utils.constants.DEV_RAZORPAY_START_PAYMENT
|
||||
import com.navi.ap.utils.constants.FINARKEIN_CONSENT_DATA
|
||||
import com.navi.ap.utils.logApEvent
|
||||
import com.navi.common.managers.UserManager
|
||||
import com.navi.common.uitron.model.action.DigioSDKAction
|
||||
import com.navi.common.uitron.model.action.FinarkeinSDKAction
|
||||
import com.navi.common.uitron.model.action.RazorpaySDKAction
|
||||
import com.navi.common.uitron.model.action.SDKType
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import getInputId
|
||||
@@ -75,6 +81,40 @@ private fun handleThirdPartySdkAction(
|
||||
?.let { finarkeinHelper.openFinarkein(it) }
|
||||
}
|
||||
}
|
||||
SDKType.DIGIO.name -> {
|
||||
(action.value as? DigioSDKAction)?.let { actionData ->
|
||||
activity.sdkHandler.digioHandler.getDigioHelper().let { helper ->
|
||||
logApEvent(eventName = DEV_DIGIO_E_SIGN)
|
||||
helper.eSign(
|
||||
documentId = actionData.mandateId.orEmpty(),
|
||||
identifier = UserManager.getPhoneNumber(),
|
||||
accessToken = actionData.accessToken,
|
||||
logo = actionData.logo,
|
||||
preferredAuthtype = actionData.preferredAuthType
|
||||
)
|
||||
activity.sdkHandler.digioHandler.postDigioSdkResultAction(
|
||||
viewModel = viewModel,
|
||||
action = actionData
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
SDKType.RAZORPAY.name -> {
|
||||
(action.value as? RazorpaySDKAction)?.let { actionData ->
|
||||
activity.sdkHandler.razorpayHandler.getRazorpayHelper().let { helper ->
|
||||
logApEvent(eventName = DEV_RAZORPAY_START_PAYMENT)
|
||||
helper.startPayment(
|
||||
actionData.razorpayData,
|
||||
activity,
|
||||
actionData.accountKey.orEmpty()
|
||||
)
|
||||
activity.sdkHandler.razorpayHandler.postRazorpaySdkResultAction(
|
||||
viewModel = viewModel,
|
||||
action = actionData
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.common.sdk.handler
|
||||
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.navi.ap.common.sdk.helper.DigioHelper
|
||||
import com.navi.ap.common.ui.ApplicationPlatformActivity
|
||||
import com.navi.ap.common.viewmodel.LambdaVM
|
||||
import com.navi.ap.utils.constants.DIGIO_RESPONSE
|
||||
import com.navi.ap.utils.constants.DIGIO_STATUS_CODE
|
||||
import com.navi.ap.utils.constants.DIGIO_STATUS_KEY
|
||||
import com.navi.ap.utils.constants.FAILURE
|
||||
import com.navi.ap.utils.constants.SUCCESS
|
||||
import com.navi.common.uitron.model.action.DigioSDKAction
|
||||
import `in`.digio.sdk.esign.DigioResponse
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* This class is responsible for handling Digio SDK related actions
|
||||
*/
|
||||
class DigioHandler @Inject constructor(private val digioHelper: DigioHelper) {
|
||||
|
||||
fun init(activity: ApplicationPlatformActivity) {
|
||||
digioHelper.initConfig(activity)
|
||||
}
|
||||
|
||||
fun getDigioHelper(): DigioHelper {
|
||||
return digioHelper
|
||||
}
|
||||
|
||||
fun postDigioSdkResultAction(action: DigioSDKAction, viewModel: LambdaVM) {
|
||||
viewModel.viewModelScope.launch {
|
||||
if (viewModel.digioCallback == null) {
|
||||
viewModel.digioCallback =
|
||||
viewModel.handle.getStateFlow<String?>(DIGIO_STATUS_KEY, null)
|
||||
viewModel.digioCallback?.collect {
|
||||
if (it == SUCCESS) {
|
||||
viewModel.handleActions(action.onSuccess)
|
||||
} else if (it == FAILURE) {
|
||||
viewModel.handleActions(action.onFailure)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun handleDigioSdkResult(digioStatus: String, data: DigioResponse, viewModel: LambdaVM?) {
|
||||
viewModel?.handle?.apply {
|
||||
set(DIGIO_STATUS_CODE, data.code.toString())
|
||||
set(DIGIO_RESPONSE, data.toString())
|
||||
set(DIGIO_STATUS_KEY, digioStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.common.sdk.handler
|
||||
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.navi.ap.common.ui.ApplicationPlatformActivity
|
||||
import com.navi.ap.common.viewmodel.LambdaVM
|
||||
import com.navi.ap.utils.constants.FAILURE
|
||||
import com.navi.ap.utils.constants.RAZORPAY_RESPONSE
|
||||
import com.navi.ap.utils.constants.RAZORPAY_STATUS_CODE
|
||||
import com.navi.ap.utils.constants.RAZORPAY_STATUS_KEY
|
||||
import com.navi.ap.utils.constants.SUCCESS
|
||||
import com.navi.common.uitron.model.action.RazorpaySDKAction
|
||||
import com.navi.payment.razorpay.RazorpayHelper
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* This class is responsible for handling Razorpay SDK related actions
|
||||
*/
|
||||
class RazorpayHandler @Inject constructor(private val razorpayHelper: RazorpayHelper) {
|
||||
|
||||
fun init(activity: ApplicationPlatformActivity) {
|
||||
razorpayHelper.initializeRazorpay(activity)
|
||||
}
|
||||
|
||||
fun getRazorpayHelper(): RazorpayHelper {
|
||||
return razorpayHelper
|
||||
}
|
||||
|
||||
fun postRazorpaySdkResultAction(action: RazorpaySDKAction, viewModel: LambdaVM) {
|
||||
viewModel.viewModelScope.launch {
|
||||
if (viewModel.razorpayCallback == null) {
|
||||
viewModel.razorpayCallback = viewModel.handle.getStateFlow<String?>(
|
||||
RAZORPAY_STATUS_KEY, null
|
||||
)
|
||||
viewModel.razorpayCallback?.collect {
|
||||
if (it == SUCCESS) {
|
||||
viewModel.handleActions(action.onSuccess)
|
||||
} else if (it == FAILURE) {
|
||||
viewModel.handleActions(action.onFailure)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun handleRazorpaySdkResult(
|
||||
code: Int,
|
||||
razorpayStatus: String,
|
||||
responseString: String?,
|
||||
viewModel: LambdaVM?
|
||||
) {
|
||||
viewModel?.handle?.apply {
|
||||
set(RAZORPAY_STATUS_CODE, code.toString())
|
||||
set(RAZORPAY_RESPONSE, responseString)
|
||||
set(RAZORPAY_STATUS_KEY, razorpayStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,10 @@ package com.navi.ap.common.sdk.handler
|
||||
|
||||
import javax.inject.Inject
|
||||
|
||||
class SdkHandler @Inject constructor(val finoramicHandler: FinoramicHandler)
|
||||
class SdkHandler
|
||||
@Inject
|
||||
constructor(
|
||||
val finoramicHandler: FinoramicHandler,
|
||||
val digioHandler: DigioHandler,
|
||||
val razorpayHandler: RazorpayHandler
|
||||
)
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2020-2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.common.sdk.helper
|
||||
|
||||
import android.app.Activity
|
||||
import android.text.TextUtils
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.navi.ap.utils.constants.DEV_DIGIO_INIT_FAILURE
|
||||
import com.navi.ap.utils.constants.DIGIO_PREFERRED_AUTH_TYPE
|
||||
import com.navi.ap.utils.constants.FAILURE_REASON
|
||||
import com.navi.ap.utils.logApEvent
|
||||
import com.navi.base.utils.PROD
|
||||
import com.navi.common.CommonLibManager
|
||||
import com.navi.common.utils.log
|
||||
import `in`.digio.sdk.esign.Digio
|
||||
import `in`.digio.sdk.gateway.enums.DigioEnvironment
|
||||
import `in`.digio.sdk.gateway.model.DigioConfig
|
||||
|
||||
class DigioHelper {
|
||||
|
||||
private var digio: Digio? = null
|
||||
|
||||
fun initConfig(activity: Activity) {
|
||||
init(activity)
|
||||
}
|
||||
|
||||
private fun init(activity: Activity) {
|
||||
digio = Digio()
|
||||
val digioConfig = DigioConfig()
|
||||
if (TextUtils.equals(CommonLibManager.buildConfigDetails.flavor, PROD))
|
||||
digioConfig.environment = DigioEnvironment.PRODUCTION
|
||||
else digioConfig.environment = DigioEnvironment.SANDBOX
|
||||
try {
|
||||
digio?.init(activity as AppCompatActivity, digioConfig)
|
||||
} catch (e: Exception) {
|
||||
e.log()
|
||||
logApEvent(
|
||||
Pair(FAILURE_REASON, e.message.orEmpty()),
|
||||
eventName = DEV_DIGIO_INIT_FAILURE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun eSign(
|
||||
documentId: String?,
|
||||
identifier: String?,
|
||||
accessToken: String? = null,
|
||||
logo: String? = null,
|
||||
preferredAuthtype: String? = null
|
||||
) {
|
||||
val digioConfig = DigioConfig()
|
||||
logo?.let { digioConfig.logo = logo }
|
||||
if (TextUtils.equals(CommonLibManager.buildConfigDetails.flavor, PROD))
|
||||
digioConfig.environment = DigioEnvironment.PRODUCTION
|
||||
else digioConfig.environment = DigioEnvironment.SANDBOX
|
||||
digio?.setConfig(digioConfig)
|
||||
|
||||
val additionalData = getAdditionalData(preferredAuthtype)
|
||||
accessToken?.let { token ->
|
||||
additionalData?.let {
|
||||
digio?.start(documentId.orEmpty(), identifier.orEmpty(), token, additionalData)
|
||||
} ?: run { digio?.start(documentId.orEmpty(), identifier.orEmpty(), token) }
|
||||
} ?: run { digio?.start(documentId.orEmpty(), identifier.orEmpty()) }
|
||||
}
|
||||
|
||||
private fun getAdditionalData(
|
||||
preferredAuthType: String?
|
||||
): HashMap<String, String>? {
|
||||
var additionalData: HashMap<String, String>? = null
|
||||
preferredAuthType?.let {
|
||||
additionalData = hashMapOf(Pair(DIGIO_PREFERRED_AUTH_TYPE, it))
|
||||
}
|
||||
return additionalData
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.viewModels
|
||||
import androidx.navigation.NavHostController
|
||||
import com.navi.ap.common.sdk.handler.SdkHandler
|
||||
import com.navi.ap.common.viewmodel.ApSharedVM
|
||||
import com.navi.ap.common.viewmodel.LambdaVM
|
||||
import com.navi.ap.navigator.ApDeepLinkNavigator
|
||||
@@ -20,7 +19,6 @@ import com.navi.ap.utils.constants.FINORAMIC_USER_ID
|
||||
import com.navi.ap.utils.handler.UtilsHandler
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import com.navi.design.theme.NaviMaterialTheme
|
||||
import com.ramcosta.composedestinations.rememberNavHostEngine
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
@@ -28,16 +26,12 @@ import java.lang.ref.WeakReference
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class ApplicationPlatformActivity : BaseActivity() {
|
||||
class ApplicationPlatformActivity : SdkHandlingActivity() {
|
||||
|
||||
@Inject lateinit var navigator: ApDeepLinkNavigator
|
||||
|
||||
@Inject lateinit var sdkHandler: SdkHandler
|
||||
|
||||
@Inject lateinit var utilsHandler: UtilsHandler
|
||||
|
||||
private var apScreenVM: WeakReference<LambdaVM>? = null
|
||||
|
||||
private val apSharedVM by viewModels<ApSharedVM>()
|
||||
|
||||
lateinit var navController: NavHostController
|
||||
@@ -45,9 +39,15 @@ class ApplicationPlatformActivity : BaseActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
super.initContent()
|
||||
initSdk()
|
||||
initComposableContent()
|
||||
}
|
||||
|
||||
private fun initSdk() {
|
||||
sdkHandler.digioHandler.init(this)
|
||||
sdkHandler.razorpayHandler.init(this)
|
||||
}
|
||||
|
||||
private fun initComposableContent() {
|
||||
setContent {
|
||||
NaviMaterialTheme {
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.common.ui
|
||||
|
||||
import com.navi.ap.common.sdk.handler.SdkHandler
|
||||
import com.navi.ap.common.viewmodel.LambdaVM
|
||||
import com.navi.ap.utils.constants.CODE
|
||||
import com.navi.ap.utils.constants.DATA
|
||||
import com.navi.ap.utils.constants.DESCRIPTION
|
||||
import com.navi.ap.utils.constants.FAILURE
|
||||
import com.navi.ap.utils.constants.RAZORPAY_DATA
|
||||
import com.navi.ap.utils.constants.SUCCESS
|
||||
import com.navi.ap.utils.constants.SUCCESS_CODE
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import com.razorpay.PaymentData
|
||||
import com.razorpay.PaymentResultWithDataListener
|
||||
import `in`.digio.sdk.esign.DigioResponse
|
||||
import `in`.digio.sdk.esign.DigioResponseListener
|
||||
import `in`.digio.sdk.gateway.event.model.GatewayEvent
|
||||
import org.json.JSONObject
|
||||
import java.lang.ref.WeakReference
|
||||
import javax.inject.Inject
|
||||
|
||||
abstract class SdkHandlingActivity :
|
||||
BaseActivity(), DigioResponseListener, PaymentResultWithDataListener {
|
||||
|
||||
@Inject lateinit var sdkHandler: SdkHandler
|
||||
|
||||
protected var apScreenVM: WeakReference<LambdaVM>? = null
|
||||
|
||||
override fun onDigioSuccess(digioResponse: DigioResponse) {
|
||||
sdkHandler.digioHandler.handleDigioSdkResult(
|
||||
digioStatus = SUCCESS,
|
||||
data = digioResponse,
|
||||
viewModel = apScreenVM?.get()
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDigioFailure(digioResponse: DigioResponse) {
|
||||
sdkHandler.digioHandler.handleDigioSdkResult(
|
||||
digioStatus = FAILURE,
|
||||
data = digioResponse,
|
||||
viewModel = apScreenVM?.get()
|
||||
)
|
||||
}
|
||||
|
||||
override fun onGatewayEvent(gatewayEvent: GatewayEvent) {}
|
||||
|
||||
override fun onPaymentSuccess(description: String?, data: PaymentData?) {
|
||||
sdkHandler.razorpayHandler.handleRazorpaySdkResult(
|
||||
code = SUCCESS_CODE,
|
||||
razorpayStatus = SUCCESS,
|
||||
responseString =
|
||||
JSONObject(mapOf(Pair(DESCRIPTION, description), Pair(DATA, data))).toString(),
|
||||
viewModel = apScreenVM?.get()
|
||||
)
|
||||
}
|
||||
|
||||
override fun onPaymentError(code: Int, description: String?, data: PaymentData?) {
|
||||
apScreenVM?.get()?.handle?.set(RAZORPAY_DATA, false)
|
||||
sdkHandler.razorpayHandler.handleRazorpaySdkResult(
|
||||
code = code,
|
||||
razorpayStatus = FAILURE,
|
||||
responseString =
|
||||
JSONObject(
|
||||
mapOf(Pair(CODE, code), Pair(DESCRIPTION, description), Pair(DATA, data))
|
||||
)
|
||||
.toString(),
|
||||
viewModel = apScreenVM?.get()
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -83,6 +83,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -94,6 +95,9 @@ open class LambdaVM constructor(val repository: LambdaRepository) :
|
||||
private val _lambdaState = MutableStateFlow<LambdaState>(LambdaState.Nothing)
|
||||
val lambdaState = _lambdaState.asStateFlow()
|
||||
|
||||
var digioCallback: StateFlow<String?>? = null
|
||||
var razorpayCallback: StateFlow<String?>? = null
|
||||
|
||||
private val _clonedScreenDefinitionState = MutableStateFlow<ApScreenDefinitionStructure?>(null)
|
||||
|
||||
private var bankDataResponse: BankDataResponse? = null
|
||||
|
||||
@@ -7,11 +7,15 @@
|
||||
|
||||
package com.navi.ap.di
|
||||
|
||||
import com.navi.ap.common.sdk.handler.DigioHandler
|
||||
import com.navi.ap.common.sdk.handler.FinoramicHandler
|
||||
import com.navi.ap.common.sdk.handler.RazorpayHandler
|
||||
import com.navi.ap.common.sdk.handler.SdkHandler
|
||||
import com.navi.ap.common.sdk.helper.DigioHelper
|
||||
import com.navi.ap.navigator.ApDeepLinkNavigator
|
||||
import com.navi.ap.utils.handler.UtilsHandler
|
||||
import com.navi.common.permission.CommonSmsUtil
|
||||
import com.navi.payment.razorpay.RazorpayHelper
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
@@ -24,9 +28,24 @@ object ProviderModule {
|
||||
|
||||
@Singleton @Provides fun getApNavigator(): ApDeepLinkNavigator = ApDeepLinkNavigator()
|
||||
|
||||
@Singleton @Provides fun getFinoramicHandler(): FinoramicHandler = FinoramicHandler()
|
||||
|
||||
@Singleton @Provides fun getDigioHelper(): DigioHelper = DigioHelper()
|
||||
|
||||
@Singleton @Provides fun getDigioHandler(digioHelper: DigioHelper): DigioHandler = DigioHandler(digioHelper = digioHelper)
|
||||
|
||||
@Singleton @Provides fun getRazorpayHelper(): RazorpayHelper = RazorpayHelper()
|
||||
|
||||
@Singleton @Provides fun getRazorpayHandler(razorpayHelper: RazorpayHelper): RazorpayHandler = RazorpayHandler(razorpayHelper = razorpayHelper)
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun getSdkHandler(): SdkHandler = SdkHandler(finoramicHandler = FinoramicHandler())
|
||||
fun getSdkHandler(finoramicHandler: FinoramicHandler, digioHandler: DigioHandler, razorpayHandler: RazorpayHandler): SdkHandler =
|
||||
SdkHandler(
|
||||
finoramicHandler,
|
||||
digioHandler,
|
||||
razorpayHandler
|
||||
)
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
|
||||
@@ -17,9 +17,11 @@ import com.navi.ap.network.utils.getNetworkInfo
|
||||
import com.navi.ap.utils.registerApUiTronDeSerializers
|
||||
import com.navi.common.CommonLibManager
|
||||
import com.navi.common.model.NetworkInfo
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import com.navi.common.uitron.model.action.UploadDataConfig
|
||||
import com.navi.common.uitron.serializer.AnySerializer
|
||||
import com.navi.common.uitron.serializer.UiTronActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronSDKActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronTriggerApiActionSerializer
|
||||
import com.navi.common.uitron.serializer.UiTronUploadDataSerializer
|
||||
import com.navi.naviwidgets.models.NaviWidget
|
||||
@@ -83,6 +85,7 @@ object APNetworkModule {
|
||||
VisualTransformationData::class.java,
|
||||
VisualTransformationDataSerializer()
|
||||
)
|
||||
.registerTypeAdapter(ThirdPartySdkAction::class.java, UiTronSDKActionSerializer())
|
||||
.registerTypeAdapter(Any::class.java, AnySerializer())
|
||||
.create()
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.navi.ap.utils.constants.APP_PLATFORM_SCREEN_ID
|
||||
import com.navi.ap.utils.constants.APP_PLATFORM_SHORT_FORM
|
||||
import com.navi.ap.utils.getGsonBuilders
|
||||
import com.navi.common.CommonLibManager
|
||||
import com.navi.common.model.ModuleName
|
||||
import com.navi.common.model.NetworkInfo
|
||||
import com.navi.common.network.ApiConstants
|
||||
import com.navi.common.network.getGlobalErrorType
|
||||
@@ -34,7 +35,7 @@ fun getNetworkInfo(timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VAL
|
||||
baseUrl = CommonLibManager.buildConfigDetails.baseUrl,
|
||||
appVersionName = CommonLibManager.buildConfigDetails.appVersionName,
|
||||
appVersionCode = CommonLibManager.buildConfigDetails.appVersionCode,
|
||||
moduleName = null,
|
||||
moduleName = ModuleName.AP,
|
||||
timeoutInSec = timeOutInSeconds
|
||||
)
|
||||
}
|
||||
|
||||
@@ -33,13 +33,6 @@ const val DEFAULT_SOURCE_SCREEN = SUPER_APP_HOME
|
||||
const val SCREEN_VISIBILITY = "screenVisibility"
|
||||
const val BOTTOM_SHEET_VISIBILITY = "bottomSheetVisibility"
|
||||
const val BOTTOMSHEET = "BOTTOMSHEET"
|
||||
const val FINORAMIC = "FINORAMIC"
|
||||
const val FINORAMIC_USER_ID = "user_id"
|
||||
const val FINORAMIC_USER_ID_KEY = "finoramicUserId"
|
||||
const val FINORAMIC_LOGIN_STATUS = "login"
|
||||
const val FINORAMIC_LOGIN_STATUS_KEY = "finoramicLoginStatus"
|
||||
const val FINORAMIC_EMAIL = "email"
|
||||
const val FINORAMIC_EMAIL_KEY = "finoramicEmail"
|
||||
const val SUCCESS = "success"
|
||||
const val CUSTOMER = "customer"
|
||||
const val APPLICANT_TYPE = "APPLICANT_TYPE"
|
||||
@@ -72,4 +65,6 @@ val noLoaderScreenTypes: MutableSet<String> = mutableSetOf(
|
||||
ScreenType.LOADER_SCREEN.name,
|
||||
ScreenType.ERROR_TRANSIENT_SCREEN.name,
|
||||
ScreenType.SUCCESS_TRANSIENT_SCREEN.name
|
||||
)
|
||||
)
|
||||
const val SUCCESS_CODE = 200
|
||||
const val FAILURE = "failure"
|
||||
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.utils.constants
|
||||
|
||||
const val DEV_NETWORK_FAILURE_RESPONSE = "dev_network_failure_response"
|
||||
@@ -8,3 +15,9 @@ const val DEV_NETWORK_SSL_HANDSHAKE_EXCEPTION = "dev_network_ssl_handshake_excep
|
||||
const val DEV_NETWORK_API_CODE_ERROR = "dev_network_api_code_error"
|
||||
const val JOURNEY_SOURCE = "journey_source"
|
||||
const val SOURCE_AP = "AP"
|
||||
|
||||
// DIGIO
|
||||
const val DEV_DIGIO_INIT_FAILURE = "dev_digio_init_failure"
|
||||
const val FAILURE_REASON = "reason"
|
||||
const val DEV_DIGIO_E_SIGN = "dev_digio_e_sign"
|
||||
const val DEV_RAZORPAY_START_PAYMENT = "dev_razorpay_start_payment"
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.ap.utils.constants
|
||||
|
||||
const val FINORAMIC_USER_ID = "user_id"
|
||||
const val FINORAMIC_USER_ID_KEY = "finoramicUserId"
|
||||
const val FINORAMIC_LOGIN_STATUS = "login"
|
||||
const val FINORAMIC_LOGIN_STATUS_KEY = "finoramicLoginStatus"
|
||||
const val FINORAMIC_EMAIL = "email"
|
||||
const val FINORAMIC_EMAIL_KEY = "finoramicEmail"
|
||||
const val DIGIO_STATUS_KEY = "digioStatus"
|
||||
const val DIGIO_STATUS_CODE = "digioStatusCode"
|
||||
const val DIGIO_RESPONSE = "digioResponseString"
|
||||
const val RAZORPAY_STATUS_KEY = "razorpayStatus"
|
||||
const val RAZORPAY_STATUS_CODE = "razorpayStatusCode"
|
||||
const val RAZORPAY_RESPONSE = "razorpayResponseString"
|
||||
const val RAZORPAY_DATA = "razorpayData"
|
||||
const val DIGIO_PREFERRED_AUTH_TYPE = "dg_preferred_auth_type"
|
||||
const val CODE = "code"
|
||||
const val DATA = "data"
|
||||
const val DESCRIPTION = "description"
|
||||
@@ -10,8 +10,10 @@ package com.navi.common.uitron.deserializer
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonDeserializer
|
||||
import com.google.gson.JsonElement
|
||||
import com.navi.common.uitron.model.action.DigioSDKAction
|
||||
import com.navi.common.uitron.model.action.FinarkeinSDKAction
|
||||
import com.navi.common.uitron.model.action.FinoramicSDKAction
|
||||
import com.navi.common.uitron.model.action.RazorpaySDKAction
|
||||
import com.navi.common.uitron.model.action.SDKType
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import java.lang.reflect.Type
|
||||
@@ -26,8 +28,13 @@ class UiTronSDKActionDeserializer : JsonDeserializer<ThirdPartySdkAction> {
|
||||
val jsonObject = it.asJsonObject
|
||||
val type = jsonObject["sdkName"] ?: return null
|
||||
return when (type.asString) {
|
||||
SDKType.FINARKEIN.name -> context?.deserialize(jsonObject, FinarkeinSDKAction::class.java)
|
||||
SDKType.FINORAMIC.name -> context?.deserialize(jsonObject, FinoramicSDKAction::class.java)
|
||||
SDKType.FINARKEIN.name ->
|
||||
context?.deserialize(jsonObject, FinarkeinSDKAction::class.java)
|
||||
SDKType.FINORAMIC.name ->
|
||||
context?.deserialize(jsonObject, FinoramicSDKAction::class.java)
|
||||
SDKType.DIGIO.name -> context?.deserialize(jsonObject, DigioSDKAction::class.java)
|
||||
SDKType.RAZORPAY.name ->
|
||||
context?.deserialize(jsonObject, RazorpaySDKAction::class.java)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,9 +30,30 @@ open class ThirdPartySdkAction(
|
||||
|
||||
class FinarkeinSDKAction() : ThirdPartySdkAction()
|
||||
|
||||
class FinoramicSDKAction(): ThirdPartySdkAction()
|
||||
class FinoramicSDKAction() : ThirdPartySdkAction()
|
||||
|
||||
data class DigioSDKAction(
|
||||
@SerializedName("mandateId") val mandateId: String? = null,
|
||||
@SerializedName("accessToken") val accessToken: String? = null,
|
||||
@SerializedName("logo") val logo: String? = null,
|
||||
@SerializedName("redirectUrl") val redirectUrl: String? = null,
|
||||
@SerializedName("preferredAuthType") val preferredAuthType: String? = null,
|
||||
) : ThirdPartySdkAction()
|
||||
|
||||
data class RazorpaySDKAction(
|
||||
@SerializedName("razorpayData") val razorpayData: RazorpayData? = null,
|
||||
@SerializedName("accountKey") val accountKey: String? = null,
|
||||
) : ThirdPartySdkAction()
|
||||
|
||||
data class RazorpayData(
|
||||
@SerializedName("mandateId") val mandateId: String? = null,
|
||||
@SerializedName("razorpayCustomerId") val razorpayCustomerId: String? = null,
|
||||
@SerializedName("recurring") val recurring: Int? = 1 // default value for razorpay mandate
|
||||
)
|
||||
|
||||
enum class SDKType {
|
||||
FINORAMIC,
|
||||
FINARKEIN
|
||||
FINARKEIN,
|
||||
DIGIO,
|
||||
RAZORPAY
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.common.uitron.serializer
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonSerializationContext
|
||||
import com.google.gson.JsonSerializer
|
||||
import com.navi.common.uitron.model.action.DigioSDKAction
|
||||
import com.navi.common.uitron.model.action.FinarkeinSDKAction
|
||||
import com.navi.common.uitron.model.action.FinoramicSDKAction
|
||||
import com.navi.common.uitron.model.action.RazorpaySDKAction
|
||||
import com.navi.common.uitron.model.action.SDKType
|
||||
import com.navi.common.uitron.model.action.ThirdPartySdkAction
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class UiTronSDKActionSerializer : JsonSerializer<ThirdPartySdkAction> {
|
||||
override fun serialize(
|
||||
src: ThirdPartySdkAction?,
|
||||
typeOfSrc: Type?,
|
||||
context: JsonSerializationContext?
|
||||
): JsonElement? {
|
||||
return when (src?.sdkName) {
|
||||
SDKType.FINARKEIN.name ->
|
||||
context?.serialize(src as FinarkeinSDKAction, FinarkeinSDKAction::class.java)
|
||||
SDKType.FINORAMIC.name ->
|
||||
context?.serialize(src as FinoramicSDKAction, FinoramicSDKAction::class.java)
|
||||
SDKType.DIGIO.name ->
|
||||
context?.serialize(src as DigioSDKAction, DigioSDKAction::class.java)
|
||||
SDKType.RAZORPAY.name ->
|
||||
context?.serialize(src as RazorpaySDKAction, RazorpaySDKAction::class.java)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user