這個版本已經過時了。要實現先前驗證版本的簽名,請使用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支付解決方案,並為其實施提供了建議。