apihub-cdc/vectores-saldos-client-php

1.0.1 2019-11-05 22:28 UTC

README

Vectores de Saldos devuelve un vector con los saldos de la persona en cuestión. La información es mensual, comprende un periodo de 12 meses más el mes en curso e incluye el monto a pagar y los saldos actual y vencido.

Requisitos

PHP 7.1 ó superior

Dependencias adicionales

  • Las siguientes dependencias de PHP son requeridas:
    • ext-curl
    • ext-mbstring
  • Ejemplo de instalación (Linux):
apt-get install php7.3-curl
apt-get install php7.3-mbstring

Instalación

composer install

Guía de inicio

Paso 1. Generación de llave y certificado

  • Es necesario contar con un contenedor en formato PKCS12; en caso de no contar con uno, ejecutar el script lib/Interceptor/key_pair_gen.sh ó llevar a cabo los siguientes pasos:
# Definición de 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 ALIAS=circulo_de_credito
# Opcionalmente, para cifrar el contenedor, colocar una contraseña en una variable de ambiente.
export KEY_PASSWORD=your_password
#Generación de llave privada.
openssl ecparam -name secp384r1 -genkey -out ${PRIVATE_KEY_FILE}
#Generación de certificado público.
openssl req -new -x509 -days 365 \
    -key ${PRIVATE_KEY_FILE} \
    -out ${CERTIFICATE_FILE} \
    -subj "${SUBJECT}"
# Generación de archivo pkcs12 a partir de llave privada y certificado.
# Se deberá empaquetar la llave privada y el certificado.
openssl pkcs12 -name ${ALIAS} \
    -export -out ${PKCS12_FILE} \
    -inkey ${PRIVATE_KEY_FILE} \
    -in ${CERTIFICATE_FILE} -password pass:${KEY_PASSWORD}

Paso 2. Carga del certificado dentro del portal de desarrolladores

  1. Iniciar sesión.
  2. Dar clic en la sección "Mis aplicaciones".
  3. Seleccionar la aplicación.
  4. Ir a la pestaña de "Certificados para @tuApp".

    applications.png

  5. Al abrirse la ventana emergente, seleccionar el certificado previamente creado y dar clic en el botón "Cargar":

    upload_cert.png

Paso 3. Descarga del certificado de Círculo de Crédito dentro del portal de desarrolladores

  1. Iniciar sesión.
  2. Dar clic en la sección "Mis aplicaciones".
  3. Seleccionar la aplicación.
  4. Ir a la pestaña de "Certificados para @tuApp".

    applications.png

  5. Al abrirse la ventana emergente, dar clic al botón "Descargar":

    download_cert.png

  • Es importante que tanto el contenedor, como el certificado proporcionado por Círculo de Crédito, sean almacenados en las siguientes rutas:
  • /path/to/repository/lib/Interceptor/keypair.p12
  • /path/to/repository/lib/Interceptor/cdc_cert.pem
  • En caso de que no sean almacenados de esta forma, es necesario especificar la ruta en la que se encuentra el contenedor y el certificado (véase el ejemplo siguiente):
  $password = getenv('KEY_PASSWORD');
  $this->signer = new \VectoresSaldos\Client\Interceptor\KeyHandler(
    "/example/route/keypair.p12",
    "/example/route/cdc_cert.pem",
    $password
  );

NOTA: Solo en caso de que el contenedor se haya cifrado, deberá colocarse la contraseña en una variable de ambiente e indicarse el nombre de la misma.

Paso 4. Capturar los datos de la petición

Los siguientes datos a modificar se encuentran en test/Api/VectoresSaldosApiTest.php

Es importante contar con el setUp() que se encargará de inicializar la url, firmar y verificar la petición. Modificar la URL de la petición del objeto $config, como se muestra en el siguiente fragmento de código:

  public function setUp()
  {
      $password = getenv('KEY_PASSWORD');
      $this->signer = new \VectoresSaldos\Client\Interceptor\KeyHandler(null, null, $password);
      $events = new \VectoresSaldos\Client\Interceptor\MiddlewareEvents($this->signer);
      $handler = \GuzzleHttp\HandlerStack::create();
      $handler->push($events->add_signature_header('x-signature'));
      $handler->push($events->verify_signature_header('x-signature'));
      $client = new \GuzzleHttp\Client([
          'handler' => $handler,
          'verify' => false
      ]);

      $config = new \VectoresSaldos\Client\Configuration();
      $config->setHost('the_url');
      
      $this->apiInstance = new \VectoresSaldos\Client\Api\VectoresSaldosApi($client);
  }
public function testGetVectorSaldos()
{
    $x_api_key = "your_api_key";
    $username = "your_username";
    $password = "your_password";
    $body = new \VectoresSaldos\Client\Model\Persona();
    $body->setPrimerNombre("XXXXX");
    $body->setSegundoNombre("XXXXX");
    $body->setApellidoPaterno("XXXXX");
    $body->setApellidoMaterno("XXXXX");
    $body->setApellidoAdicional("XXXXX");
    $body->setFechaNacimiento("YYY-MM-DD");
    $body->setRfc("XXXXX");
    $body->setCurp("XXXXX");
    $domicilio = new \VectoresSaldos\Client\Model\Domicilio();
    $domicilio->setDireccion("XXXXX");
    $domicilio->setColonia("XXXXX");
    $domicilio->setCiudad("XXXXX");
    $domicilio->setCodigoPostal("XXXXX");
    $domicilio->setMunicipio("XXXXX");
    $domicilio->setEstado("XXXX");
    $body->setDomicilio($domicilio);
    try {
        $result = $this->apiInstance->getVectorSaldos($x_api_key, $username, $password, $body);
        $this->signer->close();
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling VectoresSaldosApi->getVectorSaldos: ', $e->getMessage(), PHP_EOL;
    }
}
?>

Pruebas unitarias

  • Para ejecutar las pruebas unitarias:
./vendor/bin/phpunit