greenterose / xmldsig
Libreria para firmar XML según normativa de SUNAT en Facturación Electrónica
v5.0.2
2019-05-29 21:00 UTC
Requires
- php: >=5.5.9
- ext-dom: *
- ext-openssl: *
This package is auto-updated.
Last update: 2025-03-16 03:06:13 UTC
README
Esta libreria se emplea para firmar comprobantes electrónicos según las normas de SUNAT.
Se requiere el certificado en formato .PEM, puede utilizar el siguiente ejemplo para convertir el certificado .PFX al otros formatos.
Instalar:
Empleando composer desde packagist.
composer require greenter/xmldsig
Ejemplo
use Greenter\XMLSecLibs\Sunat\SignedXml; require 'vendor/autoload.php'; $xmlPath = '20600995805-01-F001-1.xml'; $certPath = 'certifcate.pem'; // Convertir pfx to pem (public+private key) $signer = new SignedXml(); $signer->setCertificateFromFile($certPath); $xmlSigned = $signer->signFromFile($xmlPath); file_put_contents("signed.xml", $xmlSigned);
Resultado:
Before:
<ext:UBLExtensions> <ext:UBLExtension> <ext:ExtensionContent></ext:ExtensionContent> </ext:UBLExtension> </ext:UBLExtensions>
After:
<ext:UBLExtensions> <ext:UBLExtension> <ext:ExtensionContent> <ds:Signature Id="SignIMM"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI=""> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>IwJuNQGQaHmmm3iv2jj8JDv70Ow=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> nLaghokzMNrmrfPnbIg9b........wzZ2CgLTVjWQUAQ4wDAYDVQQIEwVNYWluZTE1UiLFwZXXXPUlf2o= </ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate> MIIFhzCCA3OgAwI......MIIEVDCCAzygAwIBAgIJAPTrkMJbCOr1MA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTVQQIEwVNYWluZTEgMOiRJ00nE= </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </ext:ExtensionContent> </ext:UBLExtension> </ext:UBLExtensions>