solución de Identificación & Servicios Biométricos
La información comprendida en esta descripción es confidencial y pertenece a ADO Technologies SAS & Scanovate.
Para una correcta interacción con el SDK, es necesario tener en cuenta las siguientes recomendaciones, al momento de interactuar con la app:
apply plugin: 'com.android.application' android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } compileSdkVersion 28 defaultConfig { applicationId "com.mabel_tech.scanovate_colombia_sdk_demo" minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } allprojects { repositories { jcenter() maven { url "https://maven.google.com" } maven { url 'http://maven.microblink.com' } flatDir { dirs 'libs' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:support-v4:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation(name: 'scanovate_colombia', ext: 'aar') implementation(name: 'ScanovateManualCapture_1_0_1', ext: 'aar') implementation(name: 'libScanovateImagingHybridLiveness_4_1_0', ext: 'aar') implementation 'com.google.android.gms:play-services-vision:17.0.2' implementation('io.socket:socket.io-client:1.0.0') { // excluding org.json which is provided by Android exclude group: 'org.json', module: 'json' } implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.14.0' implementation 'com.squareup.retrofit2:converter-gson:2.1.0' implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' }
public void capture() { ScanovateSdk.start(this, documentType: "String", productId: Int, projectName_Sdk: "String", apiKey_Sdk: "String", Url_Sdk: "String", numberIdentification: "String", verification: Bool, userName: "String", password: "String", riskId: Int, new ScanovateHandler() { @Override public void onSuccess(CloseResponse response, int code, String uuidDevice) { progress.show(); String calificacion = response.getExtras().getStateName(); btn_verificar.setVisibility(View.INVISIBLE); btn_enrolar.setVisibility(View.INVISIBLE); if (verification) { progress.dismiss(); tv.setText("Resultado de Transacción: " + calificacion); } else { evaluateTransaction(response.getTransactionId()); } } @Override public void onFailure(CloseResponse closeResponse) { String calificacion = closeResponse.getExtras().getStateName() + " " + closeResponse.getExtras().getAdditionalProp1(); btn_verificar.setVisibility(View.INVISIBLE); btn_enrolar.setVisibility(View.INVISIBLE); progress.dismiss(); tv.setText("Resultado de Transacción: " + calificacion); } }); }
Para esta forma de invocación se requiere enviar el tipo (documentType) y número (identification) del cliente que se quiere verificar, al igual que poner en true el parámetro “validation”.
Nombre | Tipo | Descripción |
---|---|---|
documentType | String | Id del tipo de documento. |
ProductId | Integer | Id del producto con el cual se va a realizar el proceso de valdiación de identidad |
projectName_Sdk | String | Nombre del projecto administrado por la plataforma ADO. |
apiKey_Sdk | String | Cadena alfa numérica creada y administrada desde la plataforma de ADO. |
Url_Sdk | String | Es la URL suministrada por ADO como plataforma para la prestación del servicio, lo que define el sitio final de interacción del SDK con un sitio web especifico. |
numberIdentification | String | Numero de Identificación con el que se va a verificar un clienbte previemante enrolado. |
verification | Boolean | Parametros que define la rutina que se va realizar, si este es false, se hara la rutina de enrolamiento y si es true se realizar la rutina de Verificación. |
userName | String | Nombre de usuario administrado por ADO, este paramentro debe ser enviado cuando el OAuth este encendido para obtener el Token. |
password | String | Cadena alfanumerica creada y administrada desde la plataforma ADO, este paramentro debe ser enviado cuando el OAuth este encendido para obtener el Token. |
riskId | Int | Identificador del nivel de riesgo de la transacción, en caso de no especificarlo se tomara el nivel 1 por defecto. |
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'SMSDKTest' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for SMSDKTest pod 'Socket.IO-Client-Swift', '~> 15.2.0' pod 'lottie-ios', '2.5.2' pod 'Alamofire', '4.8.2' pod 'SheetyColors' end
func callFaceViewController(documentType: String) { let params = SMParams(documentType: documentType, productId: String, projectName: String, apiKey: String, urlSdk: String, identification: String, validation: Boolean, userName: String, password: String, riskId: int) let smManagerVC = SMManager.initWith(delegate: self, params: params) present(smManagerVC, animated: true, completion: nil) }
Las variables de enrolamineto deben ser reemplazados por los suministrados.
Para esta forma de invocación se requiere enviar el tipo (documentType) y número (identification) del cliente que se quiere verificar, al igual que poner en true el parámetro “validation”.
En cualquiera de los dos escenarios se requiere implementar la siguiente extensión.
extension TestViewController: SMDelegate { func completedWithResult(result: Bool, response: TransactionResponse?) { dismiss(animated: true) { if result { self.showAlert(title: "Resultado", message: "Firstname: \(response?.FirstName ?? "")\nSurname: \(response?.FirstSurname ?? "")\nTransaction ID: \(response?.TransactionId ?? "")\nEstado: \(response?.Extras?.StateName ?? "")\nDescripción: \(response?.Extras?.additionalProp1 ?? "")\nTransacción: \(response?.TransactionTypeName ?? "")") }else { self.showAlert(title: "Resultado", message: "Firstname: \(response?.FirstName ?? "")\nSurname: \(response?.FirstSurname ?? "")\nTransaction ID: \(response?.TransactionId ?? "")\nEstado: \(response?.Extras?.StateName ?? "")\nDescripción: \(response?.Extras?.additionalProp1 ?? "")\nTransacción: \(response?.TransactionTypeName ?? "")") } } } }
Nombre | Tipo | Descripción |
---|---|---|
documentType | String | Id del tipo de documento. |
ProductId | Integer | Id del producto con el cual se va a realizar el proceso de valdiación de identidad |
projectName_Sdk | String | Nombre del projecto administrado por la plataforma ADO. |
apiKey_Sdk | String | Cadena alfa numérica creada y administrada desde la plataforma de ADO. |
Url_Sdk | String | Es la URL suministrada por ADO como plataforma para la prestación del servicio, lo que define el sitio final de interacción del SDK con un sitio web especifico. |
numberIdentification | String | Numero de Identificación con el que se va a verificar un clienbte previemante enrolado. |
verification | Boolean | Parametros que define la rutina que se va realizar, si este es false, se hara la rutina de enrolamiento y si es true se realizar la rutina de Verificación. |
userName | String | Nombre de usuario administrado por ADO, este paramentro debe ser enviado cuando el OAuth este encendido para obtener el Token. |
password | String | Cadena alfanumerica creada y administrada desde la plataforma ADO, este paramentro debe ser enviado cuando el OAuth este encendido para obtener el Token. |
riskId | Int | Identificador del nivel de riesgo de la transacción, en caso de no especificarlo se tomara el nivel 1 por defecto. |
Al finalizar cualquiera de las invocaciones documentadas en los apartado de INVOCACIÓN ANDROID o iOS y siempre y cuando el usuario final haya finalizado con la totalidad de imágenes solicitadas, cliente recibirá en su URL CallBack un objeto JSON con la siguiente estructura.
CÓDIGO | RESPUESTA | DESCRIPCIÓN |
---|---|---|
200 |
{
"Uid": "String", "StartingDate": "String", "CreationDate": "String", "CreationIP": "String", "DocumentType": "String", "IdNumber": "String", "FirstName": "String", "SecondName": "String", "FirstSurname": "String", "SecondSurname": "String", "Gender": "String", "BirthDate": "String", "Street": "String", "CedulateCondition": "String", "Spouse": "String", "Home": "String", "MaritalStatus": "String", "DateOfIdentification": "String", "DateOfDeath": "String", "MarriageDate": "String", "Instruction": "String", "PlaceBirth": "String", "Nationality": "String", "MotherName": "String", "FatherName": "String", "HouseNumber": "String", "Profession": "String", "ExpeditionCity": "String", "ExpeditionDepartment": "String", "BirthCity": "String", "BirthDepartment": "String", "TransactionType": 0, "TransactionTypeName": "String", "IssueDate": "String", "AdoProjectId": "String", "TransactionId": "String", "ProductId": "String", "Extras": { "additionalProp1": "String", "additionalProp2": "String", "additionalProp3": "String", "IdState": "String", "StateName":"String" }, "NumberPhone": "String", "DactilarCode": "String", "ReponseControlList": Bool, "Response_ANI": "String" } |
Objeto de formato JSON con la información de la transacción. |
Si el mecanismo de retorno pactado es GET, el resultado del proceso llegará con una cadena concatena a la URL de CallBack, en caso de que el mecanismo de respuesta pactado sea POST, se retornará como un Objeto JSON hacia URL_CallBack, que deberá estar en capacidad de digerir dicho objeto.
NOMBRE | TIPO | DESCRIPCIÓN |
---|---|---|
IdState | String | Indica en número el resultado de la transacción con base en el diccionario expuesto más adelante. |
StateName | String | Indica en texto el resultado de la transacción con base en el diccionario expuesto más adelante. |
additionalProp1 | String | Indica la descripción de la respuesta si es necesaria, se usa para la descripción de errores. |
IdState | StateName | Descripción |
---|---|---|
15 | Error | El usuario sobrepaso el número de intentos fallidos de Liveness. |
15 | Error | Documento no se encuentra enrolado. |
15 | Error | Los datos proporcionados no corresponden con los criterios esperados. |
15 | Error | El proceso de autorización no fue exitoso, valide el nombre de proyecto y/o el API Key. |
15 | Error | El proceso de autorización no fue exitoso. Error en API Key y/o token expirado. |
15 | Error | Los parametros enviados no existen en el servidor. |
15 | Error | Error interno. |
15 | Error | Las credenciales para obtener el Token no son correctas. |
17 | Proceso cancelado por el usuario | El usuario navego atras en los tips del selfie. |
17 | Proceso cancelado por el usuario | El usuario ha cerrado el SDK. |
17 | Proceso cancelado por el usuario | El usuario ha cerrado en SDK en la pantalla de fallo de conexion. |
Las respuestas se pueden validar en "DICCIONARIO DE RESPUESTAS".