أصبح هذا الإصدار قديمًا ؛ لتنفيذ توقيع إصدار التحقق من الصحة السابق ، استخدم وحدة Efacturacolombia_v2.v2 .
efacturacolombia. إنها مكتبة غير رسمية تم تطويرها في C#، والتي تتيح توقيع مستندات XML (الفواتير وملاحظات الخصم) التي يتم تقديمها إلى ديان كولومبيا لعملية الفواتير الإلكترونية.
منذ 1 يناير 2019 ، ستكون الفواتير الإلكترونية لدافعي الضرائب في كولومبيا إلزامية ، وفي الوقت الحالي ، لم ينفذها العديد من الشركات والإلزامية.
على الرغم من أن المعلومات الفنية التي يوفرها ديان يجب أن تكون كافية ، إلا أن العثور على موارد .NET لهذه العملية أمر صعب للغاية. يمكن أن يكون توليد مستندات XML وخدمات الويب شاقة ولكن يمكن القيام به دون إزعاج ، لكن الشركة المطلوبة من قبل ديان يمكن أن يكون من الصعب للغاية القيام بها ، لدرجة أنه ضروري لاكتساب حلول باهظة الثمن.
يتم إصدار هذا المكتبة بهدف تسهيل التنفيذ على منصات .NET.
من أجل إنشاء وتوقيع وإصدار المستندات الإلكترونية (الفواتير وملاحظات الخصم/الائتمان) قبل ديان ، يجب تلبية المتطلبات التالية:
لمزيد من المعلومات ، راجع الموارد المتاحة في ديان - الفواتير الإلكترونية.
تحتوي فئة 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 ) ;إذا كان التحقق الفني للشركة يولد الخطأ التالي (من خدمة الويب):
com.indra.mmdd.signature.exceptions.ValidateException: xades4j.verification.CertRefUtils$1: Verification failed for property 'SigningCertificate': Invalid issue name
وهذا يعني أن اسم الشهادة - الناتج عن المكتبة - للشركة غير صالح ، في هذا الحالة طلب من مزود الشهادة السلسلة الصالحة ، وتعيينها يدويًا باستخدام الخاصية EmisorCertificado لفئة FirmaElectronica :
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here" ,
EmisorCertificado = "C=CO,L=Bogota D.C.,O=..."
} ; ملاحظة: لا ينبغي تعديل الناتج عن العملية (تمريرها إلى ترميز آخر أو تحميلها في XmlDocument ) قبل حفظها أو ضغطها لإرسالها إلى ديان لأنها ستقوم بإبطال الشركة.
يستخدم هذا المشروع المكتبات التالية:
على الرغم من أن هذا المستودع ليس من المساهمة المفتوحة ، إلا أنه يمكن المساهمة:
Miguel Huertas [email protected]
مراجعة تفاصيل في أرشيف البكالوريوس.
لن يقدم مؤلف هذا المشروع ، لأسباب زمنية ، دعمًا للتنفيذ ما لم يكن شيئًا بسيطًا (دون أن يلزم).
من ناحية أخرى ، فإن مؤلف هذا المشروع ، يضع حل الدفع .NET الخاص بك لعملية الفواتير الإلكترونية بأكملها بالإضافة إلى المشورة لتنفيذها .