Verificacion expediente client php

Overview

verificacion-expediente-client-php

API Verificación Expediente.

Requisitos

PHP >= 7.2

Dependencias adicionales

  • Composer vea como instalar
  • Se debe contar con las siguientes dependencias de PHP:
    • ext-curl
    • ext-mbstring
# RHEL distros
yum install php-mbstring
yum install curl

# Debian distros
apt-get install php-mbstring
apt-get install php-curl

Instalación

Ejecutar: composer install

Guía de inicio

Paso 1. Generar llave y certificado

  • Se tiene que tener un contenedor en formato PKCS12.
  • En caso de no contar con uno, ejecutar las instrucciones contenidas en lib/Interceptor/key_pair_gen.sh o con los siguientes comandos.

Opcional: Para cifrar el contenedor, colocar una contraseña en una variable de ambiente.

export KEY_PASSWORD=your_password
  • Definir 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 ALIAS=circulo_de_credito
  • 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 en formato 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}

Paso 2. Cargar el 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".

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

Paso 3. Descargar el 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".

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

Es importante que este contenedor sea almacenado en la siguiente ruta: /path/to/repository/lib/Interceptor/keypair.p12

Así mismo el certificado proporcionado por Círculo de Crédito en la siguiente ruta: /path/to/repository/lib/Interceptor/cdc_cert.pem

  • En caso de que no se almacene así, se debe especificar la ruta donde se encuentra el contenedor y el certificado. Ver el siguiente ejemplo:
$password = getenv('KEY_PASSWORD');
$this->signer = new KeyHandler(
    "/example/route/keypair.p12",
    "/example/route/cdc_cert.pem",
    $password
);

NOTA: Solamente en caso de que el contenedor se haya cifrado, debe colocarse la contraseña en una variable de ambiente e indicar el nombre de la misma, como se ve en la imagen anterior.

Paso 4. Modificar URL y credenciales

Modificar la URL y las credenciales de acceso a la petición en test/Api/VerificacionDeExpedienteApiTest.php, como se muestra en el siguiente fragmento de código:

username = "your-cdc-username"; $this->password = "your-cdc-password"; $apiUrl = "https://api-url"; $keystorePassword = "your-keystore-password"; $keystore = 'your-keystore-pkcs.p12'; $cdcCertificate = 'circulo-credito-certificate.pem'; $signer = new KeyHandler($keystore, $cdcCertificate, $keystorePassword); $events = new MiddlewareEvents($signer); $handler = HandlerStack::create(); $handler->push($events->add_signature_header('x-signature')); $handler->push($events->verify_signature_header('x-signature')); $this->config = new Configuration(); $this->config->setHost($apiUrl); $this->httpClient = new HttpClient([ 'handler' => $handler ]); } ...">
...
public  function setUp():  void {

    $this->apiKey   =  "your-api-key";
    $this->username =  "your-cdc-username";
    $this->password =  "your-cdc-password";

    $apiUrl            =  "https://api-url";
    $keystorePassword  =  "your-keystore-password";
    $keystore          =  'your-keystore-pkcs.p12';
    $cdcCertificate    =  'circulo-credito-certificate.pem';
    
    $signer  = new KeyHandler($keystore, $cdcCertificate, $keystorePassword);
    $events  = new MiddlewareEvents($signer);
    $handler = HandlerStack::create();
    $handler->push($events->add_signature_header('x-signature'));
    $handler->push($events->verify_signature_header('x-signature'));

    $this->config =  new Configuration();
    $this->config->setHost($apiUrl);
    
    $this->httpClient =  new HttpClient([
        'handler'  =>  $handler
    ]);
}
...

Paso 5. Capturar los datos y realizar la petición

Es importante contar con el setUp() que se encargará de firmar y verificar la petición.

NOTA: Los datos de la siguiente petición son solo representativos.

setDelegacionMunicipio("Miguel Hidalgo"); $domicilio->setCiudad("Mexico"); $domicilio->setEstado(CatalogoEstados::CDMX); $domicilio->setCodigoPostal("37576"); $domicilio->setNumeroTelefono("55100000"); $persona = new Persona(); $persona->setNombres("Juan"); $persona->setApellidoPaterno("Prueba"); $persona->setApellidoMaterno("Prueba"); $persona->setFechaNacimiento("1990-04-04"); $persona->setRFC("PUSJ800107"); $persona->setCURP("PUSJ80010722JUYTRD"); $persona->setClaveElectorIFE("PUSJ800107"); $persona->setSexo(CatalogoSexo::M); $persona->addDomicilio($domicilio); $personas = new Personas(); $personas->setFolio("1003"); $personas->addPersona($persona); $payload = new PayloadRequest(); $payload->setPersonas($personas); $payload->setFolioOtorgante("1003"); $response = null; try { $client = new ApiClient($this->httpClient, $this->config); $response = $client->getReporte($this->apiKey, $this->username, $this->password, $payload); print("\n".$response); } catch (ApiException $exception) { print("\nThe HTTP request failed, an error occurred: ".($exception->getMessage())); print("\n".$exception->getResponseObject()); } $this->assertNotNull($response); } ...">
...
public  function testGetReporte()  {

    $domicilio  =  new Domicilio();
    $domicilio->setDireccion("Insurgentes Sur 100007");
    $domicilio->setDelegacionMunicipio("Miguel Hidalgo");
    $domicilio->setCiudad("Mexico");
    $domicilio->setEstado(CatalogoEstados::CDMX);
    $domicilio->setCodigoPostal("37576");
    $domicilio->setNumeroTelefono("55100000");

    $persona  =  new Persona();
    $persona->setNombres("Juan");
    $persona->setApellidoPaterno("Prueba");
    $persona->setApellidoMaterno("Prueba");
    $persona->setFechaNacimiento("1990-04-04");
    $persona->setRFC("PUSJ800107");
    $persona->setCURP("PUSJ80010722JUYTRD");
    $persona->setClaveElectorIFE("PUSJ800107");
    $persona->setSexo(CatalogoSexo::M);
    $persona->addDomicilio($domicilio);

    $personas  =  new Personas();
    $personas->setFolio("1003");
    $personas->addPersona($persona);

    $payload  =  new PayloadRequest();
    $payload->setPersonas($personas);
    $payload->setFolioOtorgante("1003");

    $response = null;

    try  {
        $client = new ApiClient($this->httpClient, $this->config);
        $response = $client->getReporte($this->apiKey, $this->username, $this->password, $payload);
        print("\n".$response);
        
    }  catch  (ApiException $exception)  {
        print("\nThe HTTP request failed, an error occurred: ".($exception->getMessage()));
        print("\n".$exception->getResponseObject());
    }

    $this->assertNotNull($response);
}
...

Pruebas unitarias

Para ejecutar las pruebas unitarias:

./vendor/bin/phpunit

CONDICIONES DE USO, REPRODUCCIÓN Y DISTRIBUCIÓN

You might also like...
AltiriaSmsPhpClient, the official PHP client of Altiria
AltiriaSmsPhpClient, the official PHP client of Altiria

Altiria, cliente SMS PHP Altiria SMS PHP es un cliente que simplifica al máximo la integración de nuestro API para PHP. Por el momento, esta librería

PHP Client for the GoFlink API

GoFlink PHP API Client This project is an unofficial library to communicate with the GoFlink API from your PHP project. Documentation about the API is

A PHP client for the official Kizeo Forms API V3+. 📌

Kizeo Forms API V3+ - PHP This is a Swagger generated doc for Kizeo REST API 3. You can find additionnal documentation here : Online documentation. Th

Client for the Tenant Security Proxy in PHP

Tenant Security Client PHP Library A PHP client for implementing CMK within a vendor's infrastructure. Makes requests through an IronCore Tenant Secur

Shopee Open API v2 Client build with php

Shopee PHP Client This is a Shopee PHP Client, currently supported for API V2 in ShopeeOpenPlatform Composer Install composer require haistar/shopee-p

The official Previewify.app PHP Client
The official Previewify.app PHP Client

Previewify for PHP This is the official Previewify client for PHP. Support us Like our work? You can support us by purchasing one of our products. Ins

Production-ready, stable Kafka client for PHP

PHP Kafka client - php-rdkafka PHP-rdkafka is a stable, production-ready, long term support, and fast Kafka client for PHP based on librdkafka. It sup

VideoColor PHP Search Client
VideoColor PHP Search Client

This library is designed to find information about a movie and get the frame position using a screenshot from a video.

GitLab PHP API Client
GitLab PHP API Client

GitLab PHP API Client We present a modern GitLab API v4 client for PHP. This is strongly based on php-github-api by KnpLabs. With this in mind, we now

Owner
API Hub
La cuenta oficial de API Hub, Círculo de Crédito
API Hub
PHP JSON-RPC 2.0 Server/Client Implementation with Automatic Client Class Generation via SMD

PHP JSON-RPC 2.0 Server/Client Implementation with Automatic Client Class Generation via SMD

Sergey Bykov 63 Feb 14, 2022
OpenAI API Client is a component-oriented, extensible client library for the OpenAI API. It's designed to be faster and more memory efficient than traditional PHP libraries.

OpenAI API Client in PHP (community-maintained) This library is a component-oriented, extensible client library for the OpenAI API. It's designed to b

Mounir R'Quiba 6 Jun 14, 2023
⚡️ Web3 PHP is a supercharged PHP API client that allows you to interact with a generic Ethereum RPC.

Web3 PHP is a supercharged PHP API client that allows you to interact with a generic Ethereum RPC. This project is a work-in-progress. Code and docume

Web3 PHP 665 Dec 23, 2022
A simple PHP GitHub API client, Object Oriented, tested and documented.

PHP GitHub API A simple Object Oriented wrapper for GitHub API, written with PHP. Uses GitHub API v3 & supports GitHub API v4. The object API (v3) is

KNP Labs 2k Jan 7, 2023
A simple Object Oriented PHP Client for Termii SMS API

Termii Client A simple Object Oriented PHP Client for Termii SMS API. Uses Termii API. Requirements PHP >= 7.2 Guzzlehttp ~6|~7 Installation Via Compo

Ilesanmi Olawale Adedotun 5 Feb 24, 2022
Xendit REST API Client for PHP - Card, Virtual Account, Invoice, Disbursement, Recurring Payments, Payout, EWallet, Balance, Retail Outlets Services

Xendit REST API Client for PHP - Card, Virtual Account, Invoice, Disbursement, Recurring Payments, Payout, EWallet, Balance, Retail Outlets Services

Xendit 96 Jan 6, 2023
PHP client for Kafka

A library to allow people to communicate to Kafka using plain PHP, compatible with Kafka v0.11+ (due to the way the protocol works).

Luís Cobucci 52 Dec 23, 2022
php 8 client for the lemon.markets api

lemon.markets php client This repository contains a php 8+ compatible client for the https://lemon.markets API. The documentation of the API can be fo

Daniel Freudenberger 4 Nov 17, 2022
PHP client for Microsoft Azure Face API.

Microsoft Azure Face API PHP client A PHP library that utilizes Azure Face REST API. Requirements PHP >= 7.4 Installation composer require darmen/php-

Darmen Amanbayev 6 Sep 14, 2022
Google PHP API Client Services

Google PHP API Client Services

Google APIs 1.1k Dec 22, 2022