Librería totalmente open source para firma SOAP (Binary Security Token) y XML (XAdES).
La librería requiere un certificado en formato .p12, deberá ser expedido por una entidad de certificación abierta acreditada por la ONAC.
Actualizaciones:
2019-06-20
- Se añaden el algoritmo CUFE y el algoritmo de código de seguridad del software, rama dev-master.
Algoritmos:
La firma SOAP usa el algoritmo sha256 y XAdES usa tres algoritmos opcionales por defecto sha256, sha1 y sha512.
Ejemplos Stenfrank/ubl21dian:
Soap:
$pathCertificate = 'PATH_CERTIFICATE.p12';
$passwors = 'PASSWORS_CERTIFICATE';
$xmlString = <<<XML
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">
<soap:Header/>
<soap:Body>
<wcf:GetStatus>
<!--Optional:-->
<wcf:trackId>123456666</wcf:trackId>
</wcf:GetStatus>
</soap:Body>
</soap:Envelope>
XML;
$domDocument = new DOMDocument();
$domDocument->loadXML($xmlString);
$soapdian21 = new SOAPDIAN21($pathCertificate, $passwors);
$soapdian21->Action = 'http://wcf.dian.colombia/IWcfDianCustomerServices/GetStatus';
$soapdian21->sign($domDocument->saveXML());
file_put_contents('./SOAPDIAN21.xml', $soapdian21->xml);
XAdES sha1:
$pathCertificate = 'PATH_CERTIFICATE.p12';
$passwors = 'PASSWORS_CERTIFICATE';
$xmlString = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
</Invoice>
XML;
$domDocument = new DOMDocument();
$domDocument->loadXML($xmlString);
$xadesDIAN = new XAdESDIAN($pathCertificate, $passwors, $this->xmlString, XAdESDIAN::ALGO_SHA1);
file_put_contents('./SING1.xml', $xadesDIAN->xml);
XAdES sha256:
$pathCertificate = 'PATH_CERTIFICATE.p12';
$passwors = 'PASSWORS_CERTIFICATE';
$xmlString = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
</Invoice>
XML;
$domDocument = new DOMDocument();
$domDocument->loadXML($xmlString);
$xadesDIAN = new XAdESDIAN($pathCertificate, $passwors, $this->xmlString);
file_put_contents('./SING256.xml', $xadesDIAN->xml);
XAdES sha512:
$pathCertificate = 'PATH_CERTIFICATE.p12';
$passwors = 'PASSWORS_CERTIFICATE';
$xmlString = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
</Invoice>
XML;
$domDocument = new DOMDocument();
$domDocument->loadXML($xmlString);
$xadesDIAN = new XAdESDIAN($pathCertificate, $passwors, $this->xmlString, XAdESDIAN::ALGO_SHA512);
file_put_contents('./SING512.xml', $xadesDIAN->xml);
Quieres mantener actualizado, únete a nuestro grupo en Telegram.
Quieres unirte a nuestro Slack.
Quieres unirte a nuestro Slack.