Modelo estadístico basado en variables contenidas en el historial crediticio del Cliente, calcula un puntaje matemático que mide el riesgo del Cliente de fallar en sus pagos en un lapso de 12 meses a partir del otorgamiento de un crédito.
- Java >= 1.7
- Maven >= 3.3
Prerrequisito: obtener token de acceso y configuración de las credenciales de acceso. Consulte el manual aquí.
Opción 1: En caso que la configuración se integró en el archivo settingsAPIHUB.xml (ubicado en la raíz del proyecto), instale las dependencias con siguiente comando:
mvn --settings settingsAPIHUB.xml clean install -Dmaven.test.skip=trueOpción 2: Si se integró la configuración en el settings.xml del .m2, instale las dependencias con siguiente comando:
mvn install -Dmaven.test.skip=trueAntes de lanzar la prueba se deberá tener un keystore para la llave privada y el certificado asociado a ésta. Para generar el keystore se ejecutan las instrucciones que se encuentran en src/main/security/createKeystore.sh ó con los siguientes comandos:
Opcional: Si desea cifrar su contenedor, coloque una contraseña en una variable de ambiente.
export KEY_PASSWORD=your_super_secure_passwordOpcional: Si desea cifrar su keystore, coloque una contraseña en una variable de ambiente.
export KEYSTORE_PASSWORD=your_super_secure_keystore_password- Definición de los nombres de archivos y alias.
export PRIVATE_KEY_FILE=pri_key.pem
export CERTIFICATE_FILE=certificate.pem
export SUBJECT=/C=MX/ST=MX/L=MX/O=CDC/CN=CDC
export PKCS12_FILE=keypair.p12
export KEYSTORE_FILE=keystore.jks
export ALIAS=cdc- Generar llave y certificado.
# Genera la llave privada.
openssl ecparam -name secp384r1 -genkey -out ${PRIVATE_KEY_FILE}
# Genera el certificado público
openssl req -new -x509 -days 365 \
-key ${PRIVATE_KEY_FILE} \
-out ${CERTIFICATE_FILE} \
-subj "${SUBJECT}"
- Generar contenedor PKCS12 a partir de la llave privada y el certificado
# Genera el archivo pkcs12 a partir de la llave privada y el certificado.
# Deberá empaquetar su llave privada y el certificado.
openssl pkcs12 -name ${ALIAS} \
-export -out ${PKCS12_FILE} \
-inkey ${PRIVATE_KEY_FILE} \
-in ${CERTIFICATE_FILE} \
-password pass:${KEY_PASSWORD}
- Generar un keystore dummy y eliminar su contenido.
#Genera un Keystore con un par de llaves dummy.
keytool -genkey -alias dummy -keyalg RSA \
-keysize 2048 -keystore ${KEYSTORE_FILE} \
-dname "CN=dummy, OU=, O=, L=, S=, C=" \
-storepass ${KEYSTORE_PASSWORD} -keypass ${KEY_PASSWORD}
#Elimina el par de llaves dummy.
keytool -delete -alias dummy \
-keystore ${KEYSTORE_FILE} \
-storepass ${KEYSTORE_PASSWORD}- Importar el contenedor PKCS12 al keystore
#Importamos el contenedor PKCS12
keytool -importkeystore -srckeystore ${PKCS12_FILE} \
-srcstoretype PKCS12 \
-srcstorepass ${KEY_PASSWORD} \
-destkeystore ${KEYSTORE_FILE} \
-deststoretype JKS -storepass ${KEYSTORE_PASSWORD} \
-alias ${ALIAS}
#Lista el contenido del Kesystore para verificar que
keytool -list -keystore ${KEYSTORE_FILE} \
-storepass ${KEYSTORE_PASSWORD}- Iniciar sesión.
- Dar clic en la sección "Mis aplicaciones".
- Seleccionar la aplicación.
- Ir a la pestaña de "Certificados para @tuApp".
- Al abrirse la ventana emergente, seleccionar el certificado previamente creado y dar clic en el botón "Cargar":
- Iniciar sesión.
- Dar clic en la sección "Mis aplicaciones".
- Seleccionar la aplicación.
- Ir a la pestaña de "Certificados para @tuApp".
- Al abrirse la ventana emergente, dar clic al botón "Descargar":
Para hacer uso del certificado que se descargó y el keystore que se creó se deberán modificar las rutas que se encuentran e
keystore_file=your_path_for_your_keystore/keystore.jks
cdc_cert_file=your_path_for_certificate_of_cdc/cdc_cert.pem
keystore_password=your_super_secure_keystore_password
key_alias=cdc
key_password=your_super_secure_passwordEn el archivo ApiTest.java, que se encuentra en src/test/java/com/cdc/apihub/mx/FS/test/. Se deberá modificar los datos de la petición y los datos de consumo:
-
Configurar ubicación y acceso de la llave creado en el paso 1 y el certificado descargado en el paso 2
- keystoreFile: ubicacion del archivo keystore.jks
- cdcCertFile: ubicacion del archivo cdc_cert.pem
- keystorePassword: contraseña de cifrado del keystore
- keyAlias: alias asignado al keystore
- keyPassword: contraseña de cifrado del contenedor
-
Credenciales de acceso dadas por Círculo de Crédito, obtenidas despues de la afiliación
- usernameCDC: usuario de Círculo de Crédito
- passwordCDC: contraseña de Círculo de Crédito
-
Datos de consumo del API
- url: URL de la exposicón del API
- xApiKey: Ubicada en la aplicación (creada en el paso 2) del portal y nombrada como Consumer Key
NOTA: Los datos de la siguiente petición son solo representativos.
package com.cdc.apihub.mx.FS.test;
...
public class ApiTest {
private Logger logger = LoggerFactory.getLogger(ApiTest.class.getName());
private final FSApi api = new FSApi();
private ApiClient apiClient;
private String keystoreFile = "your_path_for_your_keystore/keystore.jks";
private String cdcCertFile = "your_path_for_certificate_of_cdc/cdc_cert.pem";
private String keystorePassword = "your_super_secure_keystore_password";
private String keyAlias = "your_key_alias";
private String keyPassword = "your_super_secure_password";
private String usernameCDC = "your_username_otrorgante";
private String passwordCDC = "your_password_otorgante";
private String url = "the_url";
private String xApiKey = "X_Api_Key";
private SignerInterceptor interceptor;
@Before()
public void setUp() {
interceptor = new SignerInterceptor(keystoreFile, cdcCertFile, keystorePassword, keyAlias, keyPassword);
this.apiClient = api.getApiClient();
this.apiClient.setBasePath(url);
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.readTimeout(30, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
apiClient.setHttpClient(okHttpClient);
}
@Test
public void getReporteTest() throws ApiException {
Integer estatusOK = 200;
Integer estatusNoContent = 204;
Peticion peticion = new Peticion();
Domicilio domicilio = new Domicilio();
peticion.setFolio("XXXXXX");
Persona persona = new Persona();
persona.setNombres("NOMBRES");
persona.setApellidoPaterno("PATERNO");
persona.setApellidoMaterno("MATERNO");
persona.setFechaNacimiento("1952-05-13");
persona.setRFC("PAMP010101");
persona.setNacionalidad("MX");
domicilio.setDireccion("HIDALGO 32");
domicilio.setColoniaPoblacion("CENTRO");
domicilio.setDelegacionMunicipio("LA BARCA");
domicilio.setCiudad("BENITO JUAREZ");
domicilio.setEstado(CatalogoEstados.JAL);
domicilio.setCP("47917");
domicilio.setTipoAsentamiento(CatalogoTipoAsentamiento._28);
domicilio.setTipoDomicilio(CatalogoTipoDomicilio.C);
persona.setDomicilio(domicilio);
peticion.setPersona(persona);
try {
ApiResponse<?> response = api.getGenericReporte(xApiKey, usernameCDC, passwordCDC, peticion);
Assert.assertTrue(estatusOK.equals(response.getStatusCode()));
if (estatusOK.equals(response.getStatusCode())) {
Respuesta responseOK = (Respuesta) response.getData();
logger.info(responseOK.toString());
}
} catch (ApiException e) {
if (!estatusNoContent.equals(e.getCode())) {
logger.info("Response received from API: "+interceptor.getErrores().toString());
logger.info("Response processed by client:"+ e.getResponseBody());
} else {
logger.info("The response was a status 204 (NO CONTENT)");
}
Assert.assertTrue(estatusOK.equals(e.getCode()));
}
}
}Teniendo los pasos anteriores ya solo falta ejecutar la prueba unitaria, con el siguiente comando:
mvn test -Dmaven.install.skip=true

