Esta versão tornou -se obsoleta; Para implementar a assinatura da versão de validação anterior, use o módulo efacturacolombia_v2.v2 .
Efacturacolombia. É uma livraria não oficial desenvolvida em C#, que permite a Sign XML Documents (faturas e notas de débito) que são apresentadas ao Dian da Colômbia para o processo de cobrança eletrônica.
Desde 1º de janeiro de 2019, o faturamento eletrônico para contribuintes na Colômbia será obrigatório e, atualmente, muitas empresas e pessoas obrigatórias não a implementaram.
Embora as informações técnicas fornecidas pelo Dian devam ser suficientes, encontrar recursos .NET para esse processo acaba sendo bastante difícil. A geração de documentos XML e serviços da Web pode ser trabalhosa, mas pode ser feita sem inconvenientes, no entanto, a empresa exigida pelo Dian pode ser extremamente difícil, a ponto de ser necessário para adquirir soluções caras.
Esta livraria é lançada com o objetivo de facilitar a implementação em plataformas .NET.
Para gerar, assinar e emitir documentos eletrônicos (faturas e notas de débito/crédito) antes do Dian, os seguintes requisitos devem ser atendidos:
Para obter mais informações, consulte os recursos disponíveis em Dian - cobrança eletrônica.
A classe de FirmaElectronica contém um método simples (em três variantes) para assinar os documentos eletrônicos, que retornam a matriz de bytes resultantes:
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 ) ;Se a validação técnica da empresa gerar o seguinte erro (a partir do serviço da web):
com.indra.mmdd.signature.exceptions.ValidateException: xades4j.verification.CertRefUtils$1: Verification failed for property 'SigningCertificate': Invalid issue name
Isso significa que o nome do certificado - gerado pela biblioteca - da empresa não é válido, neste caso a solicitação do provedor do certificado a cadeia válida e atribui -la manualmente usando a propriedade EmisorCertificado da classe FirmaElectronica :
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here" ,
EmisorCertificado = "C=CO,L=Bogota D.C.,O=..."
} ; Nota: O resultante pelo processo não deve ser modificado (passando -os para outra codificação ou carregando -os em um XmlDocument ) antes de salvá -los ou comprimi -los para enviá -los ao Dian porque invalidarão a empresa.
Este projeto usa as seguintes livrarias:
Embora este repositório não seja de contribuição aberta , pode ser contribuído:
Miguel huertas [email protected]
Revise os detalhes do arquivo de bacharel.
O autor deste projeto, por razões de tempo, não fornecerá suporte à implementação, a menos que seja algo simples (sem ser obrigado).
Por outro lado, o autor deste projeto coloca à sua disposição uma solução de pagamento .NET para todo o processo de cobrança eletrônica, bem como conselhos para sua implementação .