apihub-cdc/pld-client-php

2.0.0 2020-10-22 16:30 UTC

This package is auto-updated.

Last update: 2024-09-23 01:40:42 UTC


README

洗钱预防API(PLD)查询政治公众人物(PEPs)和与洗钱有关的人员名单。

要求

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 Signer\Manager\Interceptor\KeyHandler(
    "/example/route/keypair.p12",
    "/example/route/cdc_cert.pem",
    $password
);

注意:仅当容器加密时,才需要在环境变量中放置密码并指定名称,如上图所示。

步骤 4. 修改URL

如以下代码片段所示,修改 $config 对象的请求URL

    $config = new \pld\mx\Client\Configuration();
    $config->setHost('the_url');

步骤 5. 捕获请求数据

重要:setUp() 负责签名和验证请求。

<?php
public function setUp()
{
    $password = getenv('KEY_PASSWORD');
    $this->signer = new Signer\Manager\Interceptor\KeyHandler(null, null, $password);
    $events = new Signer\Manager\Interceptor\MiddlewareEvents($this->signer);
    $handler = \GuzzleHttp\HandlerStack::create();
    $handler->push($events->add_signature_header('x-signature'));
    $handler->push($events->verify_signature_header('x-signature'));

    $config = new \pld\mx\Client\Configuration();
    $config->setHost('the_url');
    $client = new \GuzzleHttp\Client(['handler' => $handler]);
    $this->apiInstance = new \pld\mx\Client\Api\PLDApi($client, $config);
}    
<?php
/**
* Este es el método que se será ejecutado en la prueba ubicado en path/to/repository/test/Api/SegmentadorApiTest.php
*/
public function testGetPLD()
{
  $x_api_key = "your_api_key";
  $username = "your_username";
  $password = "your_password";
  $body = new Peticion();

  $body->setNombres("JUAN");
  $body->setApellidoPaterno("PRUEBA");
  $body->setApellidoMaterno("CUATRO");

  try {
    $result = $this->apiInstance->getPLD($x_api_key, $username, $password, $body);
    $this->assertTrue($result->getFolioConsulta()!==null);
    $this->signer->close();
    print_r($result);
  } catch (Exception | ApiException $e) {
    echo 'Exception when calling PLDApi->getPLD: ', $e->getMessage(), PHP_EOL;
  }
}
?>

单元测试

要执行单元测试

./vendor/bin/phpunit