Versi ini telah menjadi usang; Untuk mengimplementasikan penandatanganan versi validasi sebelumnya, gunakan modul Efacturacolombia_V2.V2 .
Efacturacolombia. Ini adalah toko buku tidak resmi yang dikembangkan dalam C#, yang memungkinkan dokumen tanda XML (faktur dan catatan debit) yang disajikan kepada Dian Kolombia untuk proses penagihan elektronik.
Sejak 1 Januari 2019, penagihan elektronik untuk pembayar pajak di Kolombia akan wajib, dan saat ini banyak perusahaan dan orang wajib belum menerapkannya.
Meskipun informasi teknis yang diberikan oleh Dian harus cukup, menemukan. NET Sumber daya untuk proses ini ternyata cukup sulit. Generasi dokumen XML dan layanan web dapat melelahkan tetapi dapat dilakukan tanpa ketidaknyamanan, namun perusahaan yang dibutuhkan oleh Dian bisa sangat sulit dilakukan, sampai -sampai diperlukan untuk memperoleh solusi mahal.
Toko buku ini dirilis dengan tujuan memfasilitasi implementasi pada platform .NET.
Untuk menghasilkan, menandatangani dan mengeluarkan dokumen elektronik (faktur dan catatan debit/kredit) sebelum Dian, persyaratan berikut harus dipenuhi:
Untuk informasi lebih lanjut, lihat sumber daya yang tersedia di Dian - Tagihan Elektronik.
Kelas FirmaElectronica berisi metode sederhana (dalam tiga varian) untuk menandatangani dokumen elektronik, yang mengembalikan array byte yang dihasilkan:
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 ) ;Jika validasi teknis perusahaan menghasilkan kesalahan berikut (dari layanan web):
com.indra.mmdd.signature.exceptions.ValidateException: xades4j.verification.CertRefUtils$1: Verification failed for property 'SigningCertificate': Invalid issue name
Ini berarti bahwa sertifikatissuerName - yang dihasilkan oleh perpustakaan - perusahaan tidak valid, dalam permintaan ini dari penyedia sertifikat rantai yang valid, dan menetapkannya secara manual menggunakan properti EmisorCertificado dari kelas FirmaElectronica :
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here" ,
EmisorCertificado = "C=CO,L=Bogota D.C.,O=..."
} ; Catatan: Hasilnya oleh proses tidak boleh dimodifikasi (meneruskannya ke pengkodean lain atau memuatnya dalam XmlDocument ) sebelum menyimpan atau mengompresnya untuk mengirimnya ke Dian karena mereka akan membatalkan perusahaan.
Proyek ini menggunakan toko buku berikut:
Meskipun repositori ini bukan dari kontribusi terbuka , itu dapat disumbangkan:
Miguel Huertas [email protected]
Tinjau detail dalam arsip Sarjana.
Penulis proyek ini, karena alasan waktu, tidak akan memberikan dukungan untuk implementasi kecuali itu adalah sesuatu yang sederhana (tanpa diwajibkan).
Di sisi lain, penulis proyek ini, menempatkan solusi pembayaran .NET untuk seluruh proses penagihan elektronik serta saran untuk implementasinya .