Sei sulla pagina 1di 12

DOCUMENTO DE INTEGRACIÓN

PAQUETE III – API REST

Contenido
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Contenido .................................................................................... 1
Histórico de versiones ................................................................ 3
Introducción ................................................................................ 4
Método de integración ................................................................ 5
personData .................................................................................. 6
Códigos Generales de Retorno .................................................. 8
Anexo verificación comunicación Gateway .............................. 9
Servicio /status ............................................................................ 9
Servicio / .................................................................................... 10
Anexo ejemplo práctico de implementación ........................... 10
PHP............................................................................................. 10
.NET ............................................................................................ 12
Workflow del proceso ................................................................. 5

2
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Histórico de versiones

Nro Fecha Autor / Quien Modificó el Comentarios de Revisión


Documento
1 6/09/2018 VU Agregado de control de versiones
2 11/10/2018 VU Se incorporan los datos de Lugar de
Nacimiento y Nacionalidad en la
respuesta del método endOperation
3 18/06/2019 VU Se actualiza versión de API (v 1.1.12)
4 18/06/2019 VU Se actualiza versión de API (v 1.1.12)
5 21/11/2019 VU Se actualiza versión de API (v 1.1.12.2)

3
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Introducción

La solución SID ofrece tres paquetes:


 Paquete 1: Identificación con documento de identidad y biometría facial
Si la identidad es validada retorna: Número de DNI, Nombres y Apellido,
Género, Fecha de nacimiento, Vencimiento del documento, Emisión del
documento, CUIL, Domicilio, Código postal, Ciudad Municipio, Provincia, País,
Mensaje de fallecimiento y porcentaje de matcheo biométrico
 Paquete 2: Identificación con biometría facial
Si la identidad es validada retorna: Porcentaje de matcheo biométrico.
 Paquete 3: Validación del DNI
Si el DNI es el ejemplar vigente retorna: Ejemplar, Vencimiento del documento,
Emisión del documento, Nombre y Apellido, Fecha de nacimiento, CUIL,
Domicilio, Código postal, Ciudad, Municipio, Provincia, País, Mensaje de
fallecimiento.

El presente documento hace referencia al consumo del Paquete 3 vía Web, el


cual permite realizar la integración por API Rest del paquete de consumo.

4
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Workflow del proceso

El siguiente flujo representa la implementación del servicio.

1. El usuario ingresa el número de documento, número de trámite y género.


2. Se realiza la llamada al servicio de datos de Renaper desde la aplicación
getPersonData.
3. Si es VIGENTE, Se retorna la respuesta con los datos personales del usuario.
Caso contrario, no devuelve los datos de la persona.

Método de integración
A continuación, se detallan los métodos de integración correspondientes al paquete
de consumo III de SID, por el canal web.
Los parámetros subrayados son obligatorios.
El dominio a utilizar para consumir los servicios es el siguiente:

https://renaper.dnm.gob.ar/

La APIKey se debe enviar en el header del request, al igual que la URL del método,
de la siguiente manera:

$apiKey='APIKey proporcionada por RENAPER';


$dominio='https://renaper.dnm.gob.ar/';

$url="http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/information/personData";
$type="application/json";

$ch = curl_init($dominio);

5
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

curl_setopt($ch, CURLOPT_VERBOSE, true);


curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url,
)
);

Para obtener la APIKey de acceso, ingresar al portal de autogestión, y en la opción


de menú Administración > API Key.

personData
Este método permite la identificación del ciudadano con vigencia del documento.
La operación se realiza mediante un POST HTTPS y el servidor entrega mediante
context-type: application/json el resultado de la operación.

URL del servicio:

http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/information/personData

Parámetros de entrada:
number: número de documento de identidad del usuario
gender: género del usuario:
 M: Masculino
 F: Femenino
order: número de trámite del documento de identidad.

Para obtener el número de trámite del documento de identidad, revisar en el


documento de identidad lo siguiente:

Ejemplo de llamada al servicio:

{
"number": "31680554",

6
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

"gender": "M",
"order": "23345655"
}

Parámetros de respuesta:
code: código de retorno de la llamada.
message: mensaje de descripción del código de retorno.
valid: string que representa la vigencia del documento. Los valores posibles de
retorno son “Vigente” o “No Vigente”.
person: datos obtenidos de la persona:
Estos datos son retornados, siempre y cuando el DNI sea vigente.
 number: número de ID.
 names: nombres de la persona obtenidos del ID.
 lastNames: apellidos de la persona obtenidos del ID.
 gender: género de la persona obtenido del ID.
 birthdate: fecha de nacimiento obtenida del ID.
 copy: ejemplar del documento.
 expirationDate: fecha de vencimiento del documento.
 creationDate: fecha de emisión del documento.
 cuil: CUIL de la persona.
 streetAddress: calle del domicilio de la persona.
 numberStreet: número de la calle del domicilio de la persona.
 floor: piso del domicilio de la persona.
 department: departamento del domicilio de la persona.
 zipCode: código postal del domicilio de la persona.
 city: ciudad del domicilio de la persona.
 municipality: municipio del domicilio de la persona.
 province: provincia del domicilio de la persona.
 country: país del domicilio de la persona.
 nationality: nacionalidad de la persona.
 countryBirth: país de nacimiento de la persona.
 messageOfDeath: mensaje de fallecimiento de la persona.

Ejemplo de la respuesta:
{
"code": 10001,
"message": "Exito",
"person":"{\"number\":\"19XXXX47\",\"gender\":\"M\",\"names\":\"Homero
Abraham\",\"lastNames\":\"Simpson\",\"birthdate\":\"1900-01-
01\",\"copy\":\"A\",\"expirationDate\":\"03/07/2032\",\"creationDate\":\"03/07/2017\",\"c
uil\":\"0\",\"streetAddress\":\"calle\",\"numberStreet\":\"13\",\"floor\":null,\"department\":
null,\"zipCode\":\"SAxxxAG\",\"city\":\"SIN_INFORMAR\",\"municipality\":\"SIN_INFOR
MAR\",\"province\":\"SIN_INFORMAR\",\"country\":\"NARNIA\",\"messageOfDeath\":\"
Sin Aviso de Fallecimiento\",\"nationality\":\"\",\"countryBirth\":\"\"}",
"valid": "Vigente"
}

7
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Códigos Generales de Retorno

966: OPERATION_ENDPOINT_BUSINESS_POST_FAILED;
967: FACE_ENDPOINT_BUSINESS_POST_FAILED;
968: INFORMATION_ENDPOINT_BUSINESS_POST_FAILED;
981: APIKEY_REST_FAILED;
1000: INCORRECT_PARAMETERS;
1013: ENCRYPTION_FAIL;
1014: APIKEY_FILTER_INVALID;
1015: APIKEY_FILTER_MISSING;
1016: APIKEY_FILTER_UNDEFINED;
1017: APIKEY_FILTER_DISABLED;
1018: APIKEY_All_RETURNED;
1019: APIKEY_RETURNED;
1020: APIKEY_ID_NOT_SENT
1021: APIKEY_ID_NOT_EXIST;
1022: APIKEY_UPDATED;
1023: APIKEY_ACTIVE_INVALID;
1024: APIKEY_ACTIVE_REQUIRED;
1025: APIKEY_KEY_REQUIRED;
1026: APIKEY_DESCRIPTION_REQUIRED;
1027: APIKEY_CREATED;
4001: SERVICE_OK;
4002: USERS_OK;
9100: IMAGE_SANITIZATION_FAILURE;
9200: BUSINESS_CONFIGURATION_EMPTY;
9201: BUSINESS_CONFIGURATION_SCORE_ONBOARDING_OK;
9202: BUSINESS_CONFIGURATION_SCORE_ONBOARDING_EMPTY;
9203: BUSINESS_CONFIGURATION_SCORE_FACE_OK;
9204: BUSINESS_CONFIGURATION_SCORE_FACE_EMPTY;
9205: BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_ONE_OK;
9206: BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_ONE_EMPTY;
9207: BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_TWO_OK;
9208: BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_TWO_EMPTY;
9209: BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_THREE_OK;
9210:
BUSINESS_CONFIGURATION_URL_ENDPOINT_PACKAGE_THREE_EMPTY;
9220: INFORMATION_RENAPER_FAILED;
10001: RENAPER_OK_EXITO;
Aclaración: este código de error significa que la operación contra el backend de
validación de datos de Renaper fue Exitosa, sin perjuicio de la validación de los datos
propios validados. Teniendo en cuenta la información validada, hay dos posibles
respuestas, identificadas por el valor del campo “valid”:
 Vigente: DNI, sexo y número de tramite válidos.
 No vigente: DNI y sexo válidos, número de trámite no válido.
10002: RENAPER_OK_DNIPAS_FIRMADO;
10003: RENAPER_ERROR_PROBLEMA_DB;
10004: RENAPER_ERROR_SIN_DNI_DIGITAL;

8
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

10005: RENAPER_ERROR_PROBLEMAS_INTERNOS;
10006: RENAPER_ERROR_PERSONA_NO_ENCONTRADA;
10007: RENAPER_ERROR_BUSCAR_DATOS
10008: RENAPER_ERROR_NO_ENCONTRO_INFORMACION;
Aclaración: este código de error indica la imposibilidad de validar la combinación de
DNI y sexo.
10009: RENAPER_ERROR_SEXO_INCORRECTO;
10010: RENAPER_ERROR_DNI_INCORRECTO;
10011: RENAPER_ERROR_NO_DEFINIDO;
10012: RENAPER_ERROR_DNI_INVALIDO;
10013: RENAPER_ERROR_GENERO_INVALIDO;
10014: RENAPER_ERROR_IMAGEN_INVALIDA;
10015: RENAPER_ERROR_SERVICIO_FACEMATCH_NO_RESPONDE;
10016: RENAPER_ERROR_SERVICIO_DATOS_NO_RESPONDE;

Anexo verificación comunicación Gateway


A continuación, se detallan dos métodos de verificación de interacción con el
Gateway.

Servicio /status
Este servicio permite verificar la conexión y llegada con el Gateway.

URL del servicio:


/status
Parámetros de entrada:

El método no tiene requerimientos


Parámetros de respuesta:
Código: código de retorno

Códigos de respuesta posibles:

200: Requerimiento procesado con éxito, se pudo alcanzar al Gateway.


444: Requerimiento filtrado por geolocalización o blacklist. Si la IP no se encuentra
entre los paises permitidos. Se encuentra únicamente habilitado Argentina. Si la IP
se encuentra en la blacklist de IP's fraudulentas o estar usando un agente de pentest
conocido o ser un spider de un buscador conocido para búsqueda de sitios
vulnerables.

Ejemplo de llamada al servicio:

curl "https://renaper.dnm.gob.ar/status" -vvv

Respuesta esperada:
Codigo: 200
Cuerpo: null

9
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

Servicio /

Este servicio permite verificar acceso de APIKey a una determinada URL del
Gateway.
URL del servicio:
/
Parámetros de entrada:

El método necesita de forma mandatoria:


apikey: llave de acceso proporcionada por canal al organismo, por medio del
portal de autogestión.
url: ruta del servicio a testear.

Parámetros de respuesta:
Código: código de retorno
Códigos de respuesta posibles:

444: Requerimiento filtrado por geolocalización o blacklist. Si la IP no se encuentra


entre los paises permitidos. Se encuentra únicamente habilitado Argentina. Si la IP
se encuentra en la blacklist de IP's fraudulentas o estar usando un agente de pentest
conocido o ser un spider de un buscador conocido para búsqueda de sitios vulnerables.
501: URL o dominio inválido.
511: Revela la no existencia del api key utilizada en el dominio.
555: El mismo es generado si el canal por el cual se utiliza una api key no corresponde
al mismo. Cualquier otra respuesta obtenida, corresponderá a la respuesta del
servicio que se consumió. Este retorno se retorna en el body de la respuesta.
Ejemplo de llamada al servicio:

curl "https://renaper.dnm.gob.ar/" -H "apikey:XXXXXXXX-XXXX-XXXX-XXXX-


XXXXXXXXXXXX" -H "url:http://onboarding.renaper.prod.vusecurity.com:8080/vu-
onboarding-rest/" -vvv

Respuesta esperada:

Codigo: 200
Cuerpo: {"code":0,"message":"VU Onboarding API","data":{"version":"1.1.0"}}

NOTA: estos códigos de error deberán contemplarse además dentro del listado de
errores HTTP según RFC 2616 https://tools.ietf.org/html/rfc2616

Anexo ejemplo práctico de implementación


PHP

10
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

A continuación, se ejemplifica un script en el lenguaje PHP para realizar el consumo


del paquete III por medio del canal web:

PHP (modificar líneas 6,10,11,12)


<?php
ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);

$apiKey='';
$dominio='https://renaper.dnm.gob.ar/';
$datos=array(
"number"=> "",
"gender"=> "",
"order"=> ""
);

$data_string = json_encode($datos);

$url="http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/information/personData";
$type="application/json";
$ch = curl_init($dominio);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'apikey: ' . $apiKey,
'Content-Type:'.$type,
'url:'.$url
)
);

$result = curl_exec($ch);
echo "RESULTADO<br>";
var_dump($result);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200:
echo "OK";
echo "<br>";
var_dump($result);
/*
$respuesta=(json_decode($result));
var_dump($respuesta);

11
SID Documentación Técnica – API – Paquete II – Versión 1.1.12.2

*/
break;
default:
echo 'Código HTTP inesperado: ', $http_code, "\n";
}
}
curl_close($ch);
?>

.NET
A continuación, se ejemplifica un script en el lenguaje .NET para realizar el consumo
del paquete III por medio del canal web:

El ejemplo esta armado con una librería que se llama RestSharp, se debe instalar
ejecutando el siguiente comando en nuget:
Install-Package RestSharp

Codigo ejemplo:
var request = new RestRequest(Method.POST);
request.AddHeader("url",
"http://onboarding.renaper.prod.vusecurity.com:8080/vu-onboarding-
rest/information/personData");
request.AddHeader("apikey", "{{apikey}}");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{\"gender\": \"M\",\"number\":
\"12345678\",\"order\": \"12345678\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

12

Potrebbero piacerti anche