这个版本已经过时了。要实现先前验证版本的签名,请使用efacturacolombia_v2.v2模块。
efacturacolombia。这是C#开发的非官方书店,它允许XML文档(发票和借记笔记)提供给哥伦比亚的Dian用于电子计费过程。
自2019年1月1日以来,哥伦比亚纳税人的电子计费将是强制性的,目前,许多公司和强制性人员尚未实施。
尽管Dian提供的技术信息应该足够了,但是为此过程中找到.NET资源非常困难。 XML文档和Web服务的产生可能会很费力,但可以毫无不便地完成,但是Dian所要求的公司可能非常困难,以至于获得昂贵的解决方案所必需的。
该书店的发布是为了促进.NET平台上的实施。
为了在Dian之前生成,签署和签发电子文件(借记/信用的发票和注释),必须满足以下要求:
有关更多信息,请参见Dian -Electronic Billing中可用的资源。
FirmaElectronica类包含一种简单的方法(以三种变体)来签署电子文档,该方法返回了字节的数组,结果:
using eFacturacionColombia ;
using eFacturacionColombia . Firma ;
// crear instancia
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here"
} ;
// usar horario colombiano
var fecha = DateTimeHelper . GetColombianDate ( ) ;
// variante 1:
// firmar archivo
var archivoXml = new FileInfo ( "path/to/unsigned-factura.xml" ) ;
var bytesArchivoFirmado = firma . Firmar ( archivoXml , TipoDocumento . FACTURA , fecha ) ;
// variante 2:
// firmar contenido
var contenidoXml = "<?xml ..." ;
var bytesContenidoFirmado = firma . Firmar ( contenidoXml , TipoDocumento . FACTURA , fecha ) ;
// variante 3:
// firmar bytes
var bytesXml = new byte [ 13042 ] ;
var bytesXmlFirmado = firma . Firmar ( bytesXml , TipoDocumento . FACTURA , fecha ) ;
// guardar xml (opcional)
File . WriteAllBytes ( "path/to/signed-factura.xml" , bytesXmlFirmado ) ;如果公司的技术验证会生成以下错误(来自Web服务):
com.indra.mmdd.signature.exceptions.ValidateException: xades4j.verification.CertRefUtils$1: Verification failed for property 'SigningCertificate': Invalid issue name
这意味着公司的证书和库的证书持有名称是无效的,在这种情况下,证书的提供商有效链条的提供者,并使用FirmaElectronica类的EmisorCertificado属性手动分配它:
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here" ,
EmisorCertificado = "C=CO,L=Bogota D.C.,O=..."
} ;注意:在保存或压缩它们以将它们发送到Dian之前,因此不应修改该过程的结果(将它们传递到另一个编码或将其加载到XmlDocument中),因为它们会使公司无效。
该项目使用以下书店:
尽管该存储库不是来自开放式贡献,但可以做出贡献:
Miguel Huertas [email protected]
在单身汉档案中查看详细信息。
出于时间原因,该项目的作者将不会为实施提供支持,除非它是简单的事情(而没有义务)。
另一方面,该项目的作者为您提供了整个电子计费流程的.NET支付解决方案,并为其实施提供了建议。