apihub-cdc/reportar-en-linea-client-php

dev-master 2019-10-17 14:21 UTC

This package is auto-updated.

Last update: 2024-09-10 03:29:25 UTC


README

个人账户的加载。

要求

PHP 7.1 或更高版本

额外依赖

  • 必须具备以下PHP依赖项
    • ext-curl
    • ext-mbstring
  • 如果没有,Linux下请使用以下命令
#ejemplo con php en versión 7.3 para otra versión colocar php{version}-curl
apt-get install php7.3-curl
apt-get install php7.3-mbstring

安装

执行: composer install

入门指南

步骤1. 生成密钥和证书

  • 必须有一个PKCS12格式的容器。
  • 如果没有,请执行 lib/Interceptor/key_pair_gen.sh 中的说明或以下命令。
  • 可选:为了加密容器,将密码放在环境变量中。
export KEY_PASSWORD=your_password
  • 定义文件名和别名。
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
  • 生成密钥和证书。
#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}"
  • 生成PKCS12格式的容器。
# Genera el archivo pkcs12 a partir de la llave privada y el certificado.
# 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}

步骤2. 在开发者门户中加载证书

  1. 登录。
  2. 点击“我的应用”部分。
  3. 选择应用。
  4. 转到“tuApp的证书”标签页。

  5. 在弹出的窗口中选择之前创建的证书,然后点击“加载”按钮

步骤3. 在开发者门户中下载信用循环证书

  1. 登录。
  2. 点击“我的应用”部分。
  3. 选择应用。
  4. 转到“tuApp的证书”标签页。

  5. 在弹出的窗口中,点击“下载”按钮

重要的是,此容器必须存储在以下路径: /path/to/repository/lib/Interceptor/keypair.p12

同样,信用循环提供的证书在以下路径: /path/to/repository/lib/Interceptor/cdc_cert.pem

  • 如果没有按照这种方式存储,则必须指定容器和证书的路径。查看以下示例
/**
* Esto es parte del setUp() de las pruebas unitarias.
*/
$password = getenv('KEY_PASSWORD');
$this->signer = new \APIHub\Client\Interceptor\KeyHandler(
    "/example/route/keypair.p12",
    "/example/route/cdc_cert.pem",
    $password
);

注意: 只有在容器加密的情况下,才需要在环境变量中放置密码并指明名称,如上图所示。

步骤4. 捕获请求数据

以下要修改的数据位于 test/Api/CargaDeCuentasDePersonasFsicasApiTest.php

必须有一个负责初始化URL、签名和验证请求的 setUp()。修改 $config 对象的请求数据URL,如下代码片段所示

<?php
public function setUp()
{
    $password = getenv('KEY_PASSWORD');
    $this->signer = new \APIHub\Client\Interceptor\KeyHandler(null, null, $password);
    $events = new \APIHub\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]);
    $config = new \ReportarEnLinea\Client\Configuration();
    $config->setHost('the_url');
    $this->apiInstance = new \ReportarEnLinea\Client\Api\CargaDeCuentasDePersonasFsicasApi($client,$config);
}    
<?php
/**
* Este es el método que se será ejecutado en la prueba ubicado en path/to/repository/test/Api/CargaDeCuentasDePersonasFsicasApiTest.php 

*/
public function testRegistrar()
{
    $x_api_key = "your_api_key";
    $username = "your_username";
    $password = "your_password";

    $requestNombre = new \APIHub\Client\Model\Nombre();
    $requestNombre->setApellidoPaterno("PATERNO");
    $requestNombre->setApellidoMaterno("MATERNO");
    $requestNombre->setApellidoAdicional(null);
    $requestNombre->setNombres("NOMBRE");
    $requestNombre->setFechaNacimiento("YYYYMMDD");
    $requestNombre->setRfc("PAPN860627");
    $requestNombre->setCurp("PAPN860627MOCNSB02");
    $requestNombre->setNumeroSeguridadSocial(null);
    $requestNombre->setNacionalidad("MX");
    $requestNombre->setResidencia("1");
    $requestNombre->setNumeroLicenciaConducir(null);
    $requestNombre->setEstadoCivil("S");
    $requestNombre->setSexo("F");
    $requestNombre->setClaveElectorIfe(null);
    $requestNombre->setNumeroDependientes("0");
    $requestNombre->setFechaDefuncion("YYYYMMDD");
    $requestNombre->setTipoPersona("PF");
    $requestNombre->setIndicadorDefuncion("1");

    $requestDomicilio = new \APIHub\Client\Model\Domicilio();
    $requestDomicilio->setDireccion("CONOCIDA S/N");
    $requestDomicilio->setColoniaPoblacion("CONOCIDA");
    $requestDomicilio->setDelegacionMunicipio("MUNICIPIO");
    $requestDomicilio->setCiudad("CIUDAD");
    $requestDomicilio->setEstado("MEX");
    $requestDomicilio->setEstadoExtranjero(null);
    $requestDomicilio->setCp("55010");
    $requestDomicilio->setFechaResidencia("YYYYMMDD");
    $requestDomicilio->setNumeroCelular(null);
    $requestDomicilio->setNumeroTelefono(null);
    $requestDomicilio->setExtension(null);
    $requestDomicilio->setFax(null);
    $requestDomicilio->setTipoDomicilio("C");
    $requestDomicilio->setTipoAsentamiento("2");
    $requestDomicilio->setOrigenDomicilio("2");

    $requestEmpleo = new \APIHub\Client\Model\Empleo();
    $requestEmpleo->setNombreEmpresa("VTA DE PRODUCTOS");
    $requestEmpleo->setDireccion("CONOCIDA S/N");
    $requestEmpleo->setColoniaPoblacion("CONOCIDA");
    $requestEmpleo->setDelegacionMunicipio("MUNICIPIO");
    $requestEmpleo->setCiudad("CIUDAD");
    $requestEmpleo->setEstado("MX");
    $requestEmpleo->setCp("55010");
    $requestEmpleo->setNumeroTelefono(null);
    $requestEmpleo->setExtension(null);
    $requestEmpleo->setFax(null);
    $requestEmpleo->setPuesto(null);
    $requestEmpleo->setFechaContratacion("YYYYMMDD");
    $requestEmpleo->setClaveMoneda("MX");
    $requestEmpleo->setSalarioMensual("5600");
    $requestEmpleo->setFechaUltimoDiaEmpleo("YYYYMMDD");
    $requestEmpleo->setFechaVerificacionEmpleo("YYYYMMDD");
    $requestEmpleo->setOrigenRazonSocialDomicilio("2");

    $requestCuenta = new \APIHub\Client\Model\Cuenta();
    $requestCuenta->setClaveActualOtorgante("0000080008");
    $requestCuenta->setNombreOtorgante("OTORGANTE");
    $requestCuenta->setCuentaActual("TCDC000001");
    $requestCuenta->setTipoResponsabilidad("O");
    $requestCuenta->setTipoCuenta("F");
    $requestCuenta->setTipoContrato("BC");
    $requestCuenta->setClaveUnidadMonetaria("MX");
    $requestCuenta->setValorActivoValuacion(null);
    $requestCuenta->setNumeroPagos("17");
    $requestCuenta->setFrecuenciaPagos("S");
    $requestCuenta->setMontoPagar("0");
    $requestCuenta->setFechaAperturaCuenta("YYYYMMDD");
    $requestCuenta->setFechaUltimoPago("YYYYMMDD");
    $requestCuenta->setFechaUltimaCompra("YYYYMMDD");
    $requestCuenta->setFechaCierreCuenta("YYYYMMDD");
    $requestCuenta->setFechaCorte("YYYYMMDD");
    $requestCuenta->setGarantia(null);
    $requestCuenta->setCreditoMaximo("10000");
    $requestCuenta->setSaldoActual("0");
    $requestCuenta->setLimiteCredito("0");
    $requestCuenta->setSaldoVencido("0");
    $requestCuenta->setNumeroPagosVencidos("2");
    $requestCuenta->setPagoActual(" V");
    $requestCuenta->setHistoricoPagos(null);
    $requestCuenta->setClavePrevencion("1");
    $requestCuenta->setTotalPagosreportados("0");
    $requestCuenta->setClaveAnteriorOtorgante(null);
    $requestCuenta->setNombreAnteriorOtorgante(null);
    $requestCuenta->setNumeroCuentaAnterior(null);
    $requestCuenta->setFechaPrimerIncumplimiento("YYYYMMDD");
    $requestCuenta->setSaldoInsoluto(null);
    $requestCuenta->setMontoUltimoPago(null);
    $requestCuenta->setFechaIngresoCarteraVencida("YYYYMMDD");
    $requestCuenta->setMontoCorrespondienteIntereses("2");
    $requestCuenta->setFormaPagoActualIntereses("2");
    $requestCuenta->setDiasVencimiento("3");
    $requestCuenta->setPlazoMeses(null);
    $requestCuenta->setMontoCreditoOriginacion(null);
    $requestCuenta->setCorreoElectronicoConsumidor(null);
    $requestCuenta->setEstatusCan("01");
    $requestCuenta->setOrdenPrelacionOrigen("01");
    $requestCuenta->setOrdenPrelacionActual("01");
    $requestCuenta->setFechaAperturaCan("YYYYMMDD");
    $requestCuenta->setFechaCancelacionCan("null");    

    $requestPersona = new \APIHub\Client\Model\Persona();
    $requestPersona->setNombre($requestNombre);
    $requestPersona->setDomicilio($requestDomicilio);
    $requestPersona->setEmpleo($requestEmpleo);
    $requestPersona->setCuenta($requestCuenta);

    $requestEncabezado = new \APIHub\Client\Model\Encabezado();
    $requestEncabezado->setNombreOtorgante("OTORGANTE");
    $requestEncabezado->setClaveOtorgante("100000");

    $request = new \APIHub\Client\Model\CargasPFRegistrarRequest();
    $request->setEncabezado($requestEncabezado);
    $request->setPersona($requestPersona);
    try {
        $result = $this->apiInstance->registrar($x_api_key, $username, $password, $request);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling CargaDeCuentasDePersonasFsicasApi->registrar: ', $e->getMessage(), PHP_EOL;
    }
}
?>

单元测试

要执行单元测试

./vendor/bin/phpunit