Migration Guide

This is a guide for existing oneKYC SDK partners who needs to migrate to Enterprise SDK.

Digital Identity White Label flow - Migration Guide: DigitalIdentity SDK → GoPayEnterprise SDK

This guide covers the breaking changes and updated APIs when migrating from the DigitalIdentitySdk to GoPayEnterpriseSdk.

Overview of Changes

AreaOldNew
SDK initializationDigitalIdentityProvider.getInstance(...)GoPayEnterpriseFactory.createEnterpriseSdk(...)
KYC entry pointDirect on shared instanceVia KycManager obtained from SDK instance
Config type — KTP ScanDigitalIdentityKTPScanConfigEnterpriseKTPScanConfig
Config type — Selfie LivenessDigitalIdentitySelfieLivenessConfigEnterpriseSelfieLivenessConfig
Config type — Face VerificationDigitalIdentitySelfieVerificationConfigEnterpriseSelfieVerificationConfig
Config type — Identity VerificationDigitalIdentityKYCVerificationConfigEnterpriseKYCVerificationConfig
Helpcenter InterfaceDigitalIdentityHelpCenterEnterpriseHelpCenter
Helpcenter EnumDigitalIdentityHelpCenterTypeEnterpriseHelpCenterType
Result callback dataDocumentVerificationResultEnterpriseDocumentVerificationResult
Result statusDocumentVerificationResultStatusEnterpriseDocumentVerificationResultStatus
Extra dataDigitalIdentityExtraDataEnterpriseExtraData
Extra error codeDigitalIdentityFlowErrorCodeEnterpriseFlowErrorCode

1. SDK Initialization

Before

private val myClientConfig: DigitalIdentityClientConfig = DigitalIdentityClientConfig(
	userId = <user_id_string>,
	userName = <optional_user_name_string>,
	environment = ClientEnvironment.PRODUCTION // or ClientEnvironment.STAGING
)

private val myEventTracker: IDigitalIdentityEventTracker = object: IDigitalIdentityEventTracker {
	override fun track(
		eventName: String,
    eventProperties: Map<String, Any?>,
    productName: String?
	) {
			// Callback is triggered by SDK with event and data to be tracked if required
	}
}

val sdkInstance: DigitalIdentitySdk = DigitalIdentityProvider.getInstance(
	appContext = applicationContext,
  clientConfig = myClientConfig,
  eventTracker = myEventTracker
)

After

val configuration = GoPayEnterpriseConfiguration(
	clientID = <client_id_string>,
  environment = GoPayEnterpriseEnvironment.PRODUCTION, // or .GoPayEnterpriseEnvironment.STAGING
  enableDebugLogs = true,	// or false
  additionalData = emptymap(),
  locale = GoPayEnterpriseLocale.en	// or GoPayEnterpriseLocale.id
)

val sdk = GoPayEnterpriseFactory.createEnterpriseSdk(
	context = applicationContext,
  configuration = configuration,
  callbackDelegate = <GoPayEnterpriseCallbackDelegate>
)

// Obtain KycManager from the initialized SDK instance
val kycManager = sdk.getKycManager()

Key changes:

  • The singleton DigitalIdentityProvider is replaced with the Enterprise sdk instance. GoPayEnterpriseFactory.createEnterpriseSdk(...) returns an SDK instance you own.
  • All Whitelabel flows are now accessed through a KycManager instance retrieved viasdk.getKycManager().

2. KTP Scan

Before

val config = DigitalIdentityKTPScanConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentityKTPScanFlowTheme>
)

val helpCenter: DigitalIdentityHelpCenter = object : DigitalIdentityHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: HelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: HelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

sdkInstance.launchKTPScan(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

sdkInstance.observeKTPScan(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

After

val config = EnterpriseKTPScanConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentityKTPScanFlowTheme>
)

val helpCenter: EnterpriseHelpCenter = object : EnterpriseHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: EnterpriseHelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: EnterpriseHelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

kycManager.launchKTPScan(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

kycManager.observeKTPScan(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

Key changes:

  • Config type renamed from DigitalIdentityKTPScanConfigEnterpriseKTPScanConfig
  • Call site moved from sdkInstancekycManager
  • HelpCenter changed from DigitalIdentityHelpCenterEnterpriseHelpCenter
  • Result Callback changed from DocumentVerificationResultEnterpriseDocumentVerificationResult

No changes:

  • baseUrl
  • token
  • correlationId
  • theme

3. Selfie Liveness

Before

val config = DigitalIdentitySelfieLivenessConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentitySelfieLivenessFlowTheme>
)

val helpCenter: DigitalIdentityHelpCenter = object : DigitalIdentityHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: HelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: HelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

sdkInstance.launchSelfieLiveness(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

sdkInstance.observeSelfieLiveness(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

After

val config = EnterpriseSelfieLivenessConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentitySelfieLivenessFlowTheme>
)

val helpCenter: EnterpriseHelpCenter = object : EnterpriseHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: EnterpriseHelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: EnterpriseHelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

kycManager.launchSelfieLiveness(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

kycManager.observeSelfieLiveness(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

Key changes:

  • Config type renamed from DigitalIdentitySelfieLivenessConfigEnterpriseSelfieLivenessConfig
  • Call site moved from sdkInstancekycManager
  • HelpCenter changed from DigitalIdentityHelpCenterEnterpriseHelpCenter
  • Result Callback changed from DocumentVerificationResultEnterpriseDocumentVerificationResult

No changes:

  • baseUrl
  • token
  • correlationId
  • theme

4. Face Verification

Before

val config = DigitalIdentitySelfieVerificationConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentitySelfieVerificationFlowTheme>
)

val helpCenter: DigitalIdentityHelpCenter = object : DigitalIdentityHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: HelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: HelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

sdkInstance.launchSelfieVerification(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

sdkInstance.observeSelfieVerification(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

After

val config = EnterpriseSelfieVerificationConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentitySelfieVerificationFlowTheme>
)

val helpCenter: EnterpriseHelpCenter = object : EnterpriseHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: EnterpriseHelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: EnterpriseHelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

kycManager.launchSelfieVerification(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

kycManager.observeSelfieVerification(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

Key changes:

  • Config type renamed from DigitalIdentitySelfieVerificationConfigEnterpriseSelfieVerificationConfig
  • Call site moved from sdkInstancekycManager
  • HelpCenter changed from DigitalIdentityHelpCenterEnterpriseHelpCenter
  • Result Callback changed from DocumentVerificationResultEnterpriseDocumentVerificationResult

No changes:

  • baseUrl
  • token
  • correlationId
  • theme

5. Identity Verification (KYC Verification)

Before

val config = DigitalIdentityKYCVerificationConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentityKYCVerificationFlowTheme>
)

val helpCenter: DigitalIdentityHelpCenter = object : DigitalIdentityHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: HelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: HelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

sdkInstance.launchKYCVerification(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

sdkInstance.observeKYCVerification(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

After

val config = EnterpriseKYCVerificationConfig(
	baseUrl = <base_url_string>,
  token = <token_string>,
  correlationId = <correlation_id_string>,
  theme = <DigitalIdentitySelfieVerificationFlowTheme>
)

val helpCenter: EnterpriseHelpCenter = object : EnterpriseHelpCenter {
	override fun isHelpCTAVisible(helpCenterType: EnterpriseHelpCenterType): Boolean {
    return when(helpCentertype) { ... } // true or false
	}

  override fun onHelpCTAClicked(helpCenterType: EnterpriseHelpCenterType): Boolean {
		// Handle helpcenter loading
    return false // or true
	}
}

kycManager.launchKYCVerification(
	activity = <Activity>,
	config = config,
	helpCenter = helpCenter
)

kycManager.observeKYCVerification(
	owner = <Activity as LifeCycleOwner>
) { result ->
		// Handle Completion
}

Key changes:

  • Config type renamed from DigitalIdentityKYCVerificationConfigEnterpriseKYCVerificationConfig
  • Call site moved from sdkInstancekycManager
  • HelpCenter changed from DigitalIdentityHelpCenterEnterpriseHelpCenter
  • Result Callback changed from DocumentVerificationResultEnterpriseDocumentVerificationResult

No changes:

  • baseUrl
  • token
  • correlationId
  • theme