IEOS-driven onboarding journeys
As part of GBG IDscan enterprise onboarding suite, the mobile journey capture service (MJCS) supports end-to-end customer onboarding journeys. The onboarding journey includes the following steps:
- Front Document Scan
- Back Document Scan
- Proof of address A4 [4]Scan
- Selfie Scan
- Active Liveness
- Passive Liveness
- Triple Scan/Rescan
The set of journey actions will depend on your backend server configurations. You’ll need a Journey ID to access any journey.
Required actions
he following actions are confirmed and supported by the backend:
- Front (Initial scan)
- INITIAL // Send initial front of the document to get next action.
- FRONTSIDE:SECONDSCAN
- FRONTSIDE:THIRDSCAN
- BACK Side scan actions
- BACKSIDE
- BACKSIDE:SECONDSCAN
- BACKSIDE:THIRDSCAN
- CAPTURESELFIE scan actions
- SELFIE
- SELFIE:SECONDSCAN
- SELFIE:THIRDSCAN
- LIVENESS scan action
- LIVENESS (Face match upload)
- LIVENESS (Liveness result upload)
- NFC scan action
- NFC
- ADDRESSDOCUMENT scan actions
- ADDRESSDOCUMENT
- ADDRESSDOCUMENT:SECONDSCAN
- ADDRESSDOCUMENT:THIRDSCAN
- PASSIVE LIVENESS scan actions
- PASSIVE_LIVENESS
- PASSIVE_LIVENESS:SECONDSCAN
- PASSIVE_LIVENESS:THIRDSCAN
- Journey Finished action
- NONE
Contact your GBG Technical Account Manager for information about your specific journey and actions available to you (supportcase@idscan.com).
Create or implement an instance of CustomerJourneyEventListener
The journey is defined by the IEOS Customer Journey configuration. It’s as easy as implementing a listener and then calling another activity.
Java
private
CustomerJourneyEventListener customerJourneyEventListener = new
CustomerJourneyEventListener() {
/**
* Provides version information
*
*/
@Override
public
void
onServerInfo(@NotNull
ResponseVersionInfo info) {
}
/**
* Called back if customer clicked back or exits Customer Journey.
*/
@Override
public
void
onJourneyCanceled(@NotNull
CustomerJourneyError customerJourneyError) {
}
/**
* Callback for failure from which we dit not succeed to restore our self.
*/
@Override
public
void
onJourneyFailed(@NotNull
CustomerJourneyError customerJourneyError) {
}
/**
* Callback if journey was successfully completed.
*/
@Override
public
void
onJourneyCompleted(@NotNull
ResponseJourney responseJourney) {
}
};
Kotlin
private
val customerJourneyEventListener = object : CustomerJourneyEventListener {
/**
* Callback if journey was successfully completed.
*/
override fun onJourneyCompleted(responseJourney: ResponseJourney) {
}
/**
* Callback for failure from which we dit not succeed to restore our self.
*/
override fun onJourneyFailed(customerJourneyError: CustomerJourneyError) {
}
/**
* Called back if customer clicked back or exits Customer Journey.
*/
override fun onJourneyCanceled(customerJourneyError: CustomerJourneyError) {
}
/**
* Provides version information
*
*/
override fun onServerInfo(info: ResponseVersionInfo) {
}
}
Register your implementation using
Please note: Kotlin registers before and unregisters after response as register would create a new instance and not override old.
To register the listener:
//Start the service in onStart and attach the listener
@Override
protected void onStart() {
super.onStart();
MjcsEventService.registerService(this, mjcsEventService -> {
service = mjcsEventService;
service.setCustomerJourneyEventListener(customerJourneyEventListener);
return null;
});
}
//Detach listener in onStop and stop the service
@Override
protected void onStop() {
service.setCustomerJourneyEventListener(null);
service.unregisterService(this);
super.onStop();
}
kotlin
//Start the service in onStart and attach the listener
override fun onStart() {
super.onStart()
registerService(this) {
service = it
service.customerJourneyEventListener = customerJourneyEventListener
}
}
//Detach listener in onStop and stop the service
override fun onStop() {
service.customerJourneyEventListener = null
service.unregisterService(this)
super.onStop()
}
Create an intent wit Customer journey configuration:
Kotlin
val config = CustomerJourneyConfig.Builder(
baseUrl = baseUrl, // Add server base URL if POC server provided by GBG IDscan its most likely https://company.idscan.cloud
credentials = Credentials(username, password), // Add Scanning Area credentials or use parameter name token and add it.
certificates = emptyList(), // Reffer to section: SSL pinning CustomerJourney
).build()
// Call to open Customer Journey
val customerJourney = Intent(this, CustomerJourneyActivity::class.java)
customerJourney.putExtra(CustomerJourneyActivity.EXTRA_CONFIG, config)
startActivity(customerJourney)
Please note: For security reasons ensure that credentials provided from a mobile device are scanning are and don’t have other permissions as this could compromise the security of your IEOS instance.
Don’t forget to add a check for camera permissions!
Possible onJourneyFailed(CustomerJourneyError) codes.
Code | Description |
---|---|
EnterpriseService.EXCEPTION_ERROR | Returns when Web service experienced an unrecoverable situation and returns a localized exception message. |
500 | Internal server error, more information on the server side. |
408 | Server time out |
401 | Unauthorized, possibly bad credentials. |
400 | Bad Request |
… | Other error HTTP status codes possible https://en.wikipedia.org/wiki/List_of_HTTP_status_codes |
CustomerJourneyError | Errors from customer journey itself |
NONE | No error. |
GENERAL | General error check message |
NO_SERVER_RESPONSE | Journey Failed server didn’t respond. |
UNKNOWN_REQUIRED_ACTION | Journey Failed because of unknown action |
CAMERA | Journey Failed because of camera failure |
WEB_INITIALIZING | Creating a webservice instance failed |
WEB_INITIALIZING_BAD_URL | Creating Retrofit instance failed with IllegalArgumentException |
EXECUTION | Execution error, most likely exceptions from which we are not recovering, will send exception localized message. |
For more information check JavaDocs on possible call exceptions. |