Este paquete te permite encriptar, validar y convertir archivos .cer y .key en .pem para la facturacion electronica en méxico.
Csd provee un mecanismo para convertir tus archivos .cer y .key a .pem, los necesarios para poder facturar electronicamente en méxico.
Asi mismo te permite encriptar tus llaves (.key) a .der pasando la contraseña que necesites.
require 'vendor/autoload.php';
use JorgeAndrade\Csd;
use JorgeAndrade\Exceptions\CsdException;
$cer = getcwd() . "/csds/aad990814bp7_1210261233s.cer";
$key = getcwd() . "/csds/aad990814bp7_1210261233s.key";
$rfc = "AAD990814BP7";
$pass = "12345678a";
$validar = new Csd($cer, $key, $rfc, $pass, $path = getcwd() . "/csds/");
try {
$validar->convertCerToPem();
$validar->convertKeyToPem();
} catch (CsdException $e) {
var_dump($e->getMessage());
}
Simplemente instala el paquete con composer:
composer require jorgeandrade/csd
Una vez composer termine de instalar el paquete simplemente importa el paquete y crea una nueva instancia pasando los parametros correspondientes:
require 'vendor/autoload.php';
use JorgeAndrade\Csd;
use JorgeAndrade\Exceptions\CsdException;
$cer = getcwd() . "/csds/aad990814bp7_1210261233s.cer";
$key = getcwd() . "/csds/aad990814bp7_1210261233s.key";
$rfc = "AAD990814BP7";
$pass = "12345678a"; //contraseña de la llave privada
$path = getcwd() . "/csds/"; //este parametro es opcional, por defecto usa **getcwd() . "/csds/"**
$validar = new Csd($cer, $key, $rfc, $pass, $path);
Convertir, encryptar, validar y obtener es extremadamente facil. Si algo sale mal las funciones arrojaran una exception de tipo JorgeAndrade\Exceptions\CsdException.
$validar->convertCerToPem();
$validar->convertKeyToPem();
Si todo sale bien retornara un array con la fecha inicial y la final de validez del certificado, cada uno extiende de la clase DateTime.
$periodo = $validar->verifyValidityPeriod();
var_dump($periodo);
/**
array(2) {
["fecha_inicial"]=>
object(DateTime)#4 (3) {
["date"]=>
string(26) "2012-10-26 19:22:43.000000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(3) "GMT"
}
["fecha_final"]=>
object(DateTime)#5 (3) {
["date"]=>
string(26) "2016-10-26 19:22:43.000000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(3) "GMT"
}
}
**/
Para poder encryptar, primero necesitas convertir de key en pem
$validar->convertKeyToPem();
$validar->encryptPemInToDer($pass);
$check = $validar->verifyValidCsd(); //(bool)
$no_certificado = $validar->getNoCertificado();
Csd programa de codigo abierto bajo la licencia MIT license