Esta firma es la mas barata del mercado.
En formato:
Extención .p12
Estándar: X.509
Algoritmo: RSA-SHA1
Podre disponible para los lenguajes de programación Java y C#.
Java (Probado con el JDK de oracle):
1. Lo que tenemos que hacer es bajarnos las bibliotecas recomendadas inclusive en la documentacion del SRI.
Ingresamos a:
http://oficinavirtual.mityc.es/componentes/
Luego en descagas:
http://oficinavirtual.mityc.es/componentes/downloads.html
Nos bajamos los componentes incluyendo las dependencias.
componentes-1.1.7-with-deps.zip (Version al momento de escribir esta entrada).
2. Agregamos las referencias al proyecto donde estamos desarrollando. Preferiblemente incluir todas y las librerias de la firma.
Los jasrs estan dentro de la caperpeta deps y core.
3. De acuerdo a la documentacion debemos crear una clase que sirva como clase generica para la firma y una clase especifiquemos las lineas de codigo para nuestro tipo de firma.
En la documentacion del SRI explica que debemos usar el tipo de firma XAdES_BES. Por lo que la segunda clase nos ayudara para espicificar esto.
Clase FirmaGenerica (Clase abstracta como se muestra en la documentacion):
public abstract class GenericXMLSignature {
//Path de la firma electronica
private String pathSignature;
//calve de la firma electronica
private String passSignature;
/**
*
* Ejecución del ejemplo. La ejecución consistirá en la firma de los datos
* creados por el método abstracto
createDataToSign
mediante el* certificado declarado en la constante
PKCS12_FILE
. El* resultado del proceso de firma será almacenado en un fichero XML en el
* directorio correspondiente a la constante
OUTPUT_DIRECTORY
* del usuario bajo el nombre devuelto por el método abstracto
*
getSignFileName
*
*/
/*Metodos Getters y Setters (Propiedades)*/
public String getPathSignature() {
return pathSignature;
}
public void setPathSignature(String pathSignature) {
this.pathSignature = pathSignature;
}
public String getPassSignature() {
return passSignature;
}
public void setPassSignature(String passSignature) {
this.passSignature = passSignature;
}
protected void execute() {
// Obtencion del gestor de claves
KeyStore keyStore = getKeyStore();
if(keyStore==null){
System.err.println("No se pudo obtener almacen de firma.");
return;
}
String alias=getAlias(keyStore);
// Obtencion del certificado para firmar. Utilizaremos el primer
// certificado del almacen.
X509Certificate certificate = null;
try {
certificate = (X509Certificate)keyStore.getCertificate(alias);
if (certificate == null) {
System.err.println("No existe ningún certificado para firmar.");
return;
}
} catch (KeyStoreException e1) {
e1.printStackTrace();
}
// Obtención de la clave privada asociada al certificado
PrivateKey privateKey = null;
KeyStore tmpKs = keyStore;
try {
privateKey = (PrivateKey) tmpKs.getKey(alias, this.passSignature.toCharArray());
} catch (UnrecoverableKeyException e) {
System.err.println("No existe clave privada para firmar.");
e.printStackTrace();
} catch (KeyStoreException e) {
System.err.println("No existe clave privada para firmar.");
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
System.err.println("No existe clave privada para firmar.");
e.printStackTrace();
}
// Obtención del provider encargado de las labores criptográficas
Provider provider = keyStore.getProvider();
/*
* Creación del objeto que contiene tanto los datos a firmar como la
* configuración del tipo de firma
*/
DataToSign dataToSign = createDataToSign();
/*
* Creación del objeto encargado de realizar la firma
*/
FirmaXML firma = new FirmaXML();
// Firmamos el documento
Document docSigned = null;
try {
Object[] res = firma.signFile(certificate, dataToSign, privateKey, provider);
docSigned = (Document) res[0];
} catch (Exception ex) {
System.err.println("Error realizando la firma");
ex.printStackTrace();
return;
}
// Guardamos la firma a un fichero en el home del usuario
String filePath = getPathOut() + File.separatorChar + getSignatureFileName();
System.out.println("Firma salvada en en: " + filePath);
saveDocumenteDisk(docSigned, filePath);
}
/**
*
* Crea el objeto DataToSign que contiene toda la información de la firma
* que se desea realizar. Todas las implementaciones deberán proporcionar
* una implementación de este método
*
*
* @return El objeto DataToSign que contiene toda la información de la firma
* a realizar
*/
protected abstract DataToSign createDataToSign();
protected abstract String getSignatureFileName();
protected abstract String getPathOut();
protected Document getDocument(String resource) {
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
File file = new File(resource);
try {
DocumentBuilder db = dbf.newDocumentBuilder();
doc=db.parse(file);
} catch (ParserConfigurationException ex) {
System.err.println("Error al parsear el documento");
ex.printStackTrace();
System.exit(-1);
} catch (SAXException ex) {
System.err.println("Error al parsear el documento");
ex.printStackTrace();
System.exit(-1);
} catch (IOException ex) {
System.err.println("Error al parsear el documento");
ex.printStackTrace();
System.exit(-1);
} catch (IllegalArgumentException ex) {
System.err.println("Error al parsear el documento");
ex.printStackTrace();
System.exit(-1);
}
return doc;
}
private KeyStore getKeyStore()
{
KeyStore ks = null;
try {
ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream(pathSignature), passSignature.toCharArray());
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ks;
}
private static String getAlias(KeyStore keyStore)
{
String alias = null;
Enumeration
try {
nombres = keyStore.aliases();
while(nombres.hasMoreElements())
{
String tmpAlias = (String)nombres.nextElement();
if(keyStore.isKeyEntry(tmpAlias))
alias=tmpAlias;
}
}
catch (KeyStoreException e) {
e.printStackTrace();
}
return alias;
}
public static void saveDocumenteDisk(Document document,String pathXml)
{
try {
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(pathXml));
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer;
transformer = transformerFactory.newTransformer();
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
////Esta es la clase que extiende de Generic.
public class XAdESBESSignature extends GenericXMLSignature{
private static String nameFile;
private static String pathFile;
/**
*
* Recurso a firmar
*
*/
private String fileToSign;
/**
*
* Fichero donde se desea guardar la firma
*
*/
public XAdESBESSignature(String fileToSign) {
super();
this.fileToSign = fileToSign;
}
/**
*
* Punto de entrada al programa
*
*
* @param args
* Argumentos del programa
*/
public static void firmar(String xmlPath,String pathSignature,String passSignature,String pathOut,String nameFileOut)
{
//Document document=UtilApplication.convertStringToDocument(xml);
//String pathXml=UtilApplication.getTempPath()+"\\"+UUID.randomUUID().toString()+".xml";
//UtilApplication.saveDocumenteDisk(document, pathXml);
XAdESBESSignature signature = new XAdESBESSignature(xmlPath);
signature.setPassSignature(passSignature);
signature.setPathSignature(pathSignature);
pathFile=pathOut;
nameFile=nameFileOut;
signature.execute();
}
@Override
protected DataToSign createDataToSign() {
DataToSign datosAFirmar = new DataToSign();
datosAFirmar.setXadesFormat(es.mityc.javasign.EnumFormatoFirma.XAdES_BES);
datosAFirmar.setEsquema(XAdESSchemas.XAdES_132);
datosAFirmar.setXMLEncoding("UTF-8");
datosAFirmar.setEnveloped(true);
datosAFirmar.addObject(new ObjectToSign(new InternObjectToSign("comprobante"), "contenido comprobante", null, "text/xml", null));
datosAFirmar.setParentSignNode("comprobante");
Document docToSign = getDocument(fileToSign);
datosAFirmar.setDocument(docToSign);
return datosAFirmar;
}
@Override
protected String getSignatureFileName() {
return XAdESBESSignature.nameFile;
}
@Override
protected String getPathOut() {
return XAdESBESSignature.pathFile;
}
}
//Como usar dicha clase
XAdESBESSignature.firmar(String xmlPath,String pathFirma,String clavefirma,String directoriosalida, String nombreArchivoSalida);
//Hasta aqui la firma.
Los jars de referencias y necesarios son:
bcmail-jdk16-1.45.jar
bcprov-jdk16-1.45.jar
bctsp-jdk16-1.45.jar
commons-codec-1.8.jar
commons-httpclient-3.0.1.jar
commons-lang-2.4.jar
commons-logging-1.1.3.jar
DNIeJCAProvider-1.4.jar
iaikPkcs11Wrapper-1.1.7.jar
jss-4.2.5.jar
MITyCLibAPI-1.1.7.jar
MITyCLibCert-1.1.7.jar
MITyCLibOCSP-1.1.7.jar
MITyCLibTrust-1.1.7.jar
MITyCLibTSA-1.1.7.jar
MITyCLibXADES-1.1.7.jar
serializer-2.7.1.jar
sunpkcs11-1.0.jar
xalan-2.7.1.jar
xml-apis-1.3.04.jar
xmlsec-1.4.2-ADSI-1.1.jar
xmlsec-1.5.5.jar
///Para c# al momento lo que he logrado es esto por cuestiones de tiempo no he logrado terminar si alguien tiene terminao hagamelo saber.
public class Signature { Random rnd = new Random(DateTime.Now.
public const string XmlDsigRSASHA1Url = "http://www.w3.org/2000/09/
public void Xml(String pathXml,String pathSignature,String passFirma)
{
//Declaro variable XMLDocument
XmlDocument xmlDoc = new XmlDocument();
// Cargo el documento en el xmlDoc
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(pathXml);
//Obtengo la firma en el Certificado X509
X509Certificate2 uidCert = new X509Certificate2(
//Inicializo el RSA
RSACryptoServiceProvider rsaKey = (RSACryptoServiceProvider)
//Agrego el SgnedXml que permite firmar el xml
SignedXml signedXml = new SignedXml(xmlDoc);
// Add the key to the SignedXml document.
signedXml.SigningKey = rsaKey;
//signedXml.Signature.Id = newID("Signature");
//Agregamos el metodo de firmado
signedXml.SignedInfo.
//signedXml.SignedInfo.Id = newID("Signature-SignedInfo");
// Create a reference to be signed.
Reference reference = new Reference();
//reference.Id = newID("SignedPropertiesID");
reference.Uri = "";
// Add an enveloped transformation to the reference.
XmlDsigEnvelopedSignatureTrans
reference.AddTransform(env);
// Add the reference to the SignedXml object.
signedXml.AddReference(
// Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
KeyInfo keyInfo = new KeyInfo();
KeyInfoX509Data clause = new KeyInfoX509Data();
clause.AddSubjectName(uidCert.
clause.AddCertificate(uidCert)
keyInfo.AddClause(clause);
//keyInfo.Id = newID("Certificate1");
signedXml.KeyInfo = keyInfo;
// Compute the signature.
signedXml.ComputeSignature();
Boolean respuesta = signedXml.CheckSignature();
System.Console.WriteLine(
// Get the XML representation of the signature and save
// it to an XmlElement object.
XmlElement xmlDigitalSignature = signedXml.GetXml();
//XmlElement signature = signedXml.GetXml();
foreach (XmlNode node in xmlDigitalSignature.
"descendant-or-self::*[
{
node.Prefix = "ds";
}
System.Console.WriteLine(
// Append the element to the XML document.
xmlDoc.DocumentElement.
xmlDoc.Save(@"D:\Xml\firmado.
}
private String newID(String prefix)
{
String newID = prefix + rnd.Next(1048576);
newID = prefix + rnd.Next(1048576);
return newID;
}
}
A mis amigos de los diferentes lenguajes que no sean java les recomiendo tratar de consumir los webservices del por medio de soap. Existe un software llamado SOAPUI. que permite o muestra como se consume en webservice. http://sourceforge.net/projects/soapui/files/
En .net he tenido problemas si se agrega como referencia no se porque no llena los objetos de retorno cuando se consume.
Es mi experiencia si alguie lo tiene no dude en compartir.
Disculpas no puedo subir proyectos por la sutacion comercial que puedan dar al mismo mi intencion es dar directrices que lo puedan lograr.
Por favor si algo no funciona sean mas especificos. error exacto.
Mas información (Comercial): http://www.corvustec.com/index.php?option=com_content&view=article&id=58&Itemid=87
125 comentarios:
Saludos, tengo un archivo .p12 de firma electrónica generada del banco central de ecuador, también tengo generado un archivo xml donde están los datos de una factura, quisiera saber como añado esa firma electrónica al xml..!!!
hola saludos tienes los fuentes del envió del XML por el servicio web
Hector, en la pagina http://oficinavirtual.mityc.es/componentes/ hay ejemplos de firmas e incluso las mismas se pueden utilizar para c# y funcionan bien...
Saludos
Tengo un problema al emviar el XML al SRI por el servicio WEB, puedes ayudarme o indicarme donde puedo conseguir mejor informacion. Tengo la guia tecnica pero no es muy clara en este capitulo
Gracias
Gracias amigo, he estado ocupado en otros proyectos, en este momento voy a ver los links que pusiste y probar eso de la firma..!!!
muchas gracia por su ayuda
porfa me gustaria ver la continuación del código ya que estoy haciendo un proyecto que tiene que ver con eso en mi tesis de grado
Que tal me gustaria saber el codigo para vb. net esty desarrollando un proyecto y me esta faltando ese detalle
Que tal me gustaria saber el codigo para vb. net esty desarrollando un proyecto y me esta faltando ese detalle
Hola. Ya tienes la clase para .net?
Hola amigo, yo estoy haciendo el proyecto en Java, pero sigo todos tus pasos, pero no puedo ejecutar mi archivo EnvelopedSignature.xml, por las dependencias he agregado tooodas las librerias, no se si sera mucho pedir que subas un link de un proyecto en java realizando la firma de un xml, con todas las librerias necesarias, muchas gracias espero puedas apoyarnos con eso
Hola amigo, yo estoy haciendo el proyecto en Java, pero sigo todos tus pasos, pero no puedo ejecutar mi archivo EnvelopedSignature.xml, por las dependencias he agregado tooodas las librerias, no se si sera mucho pedir que subas un link de un proyecto en java realizando la firma de un xml, con todas las librerias necesarias, muchas gracias espero puedas apoyarnos con eso
Hola amigo, yo estoy haciendo el proyecto en Java, pero sigo todos tus pasos, pero no puedo ejecutar mi archivo EnvelopedSignature.xml, por las dependencias he agregado tooodas las librerias, no se si sera mucho pedir que subas un link de un proyecto en java realizando la firma de un xml, con todas las librerias necesarias, muchas gracias espero puedas apoyarnos con eso
Hola alguien sabe como funciona el envio del archivo XML al web service del sri, solamente me responde que los parámetros no son correctos lo estoy haciendo en Visual FoxPro, de pronto hay que configurar algo adicional.
Gracias de antemano.
Ante todo gracias por la aportación.
Disculpen saben como agregar un nombre al URI, me sale así
ds:Reference Id="Reference-ID-200615" URI=""
pero necesito poner asi URI="#comprobante"
Muy buena la ayuda estimado amigo. Una pregunta quiero hacerle.. Como hago para leer la firma mediante un TOken usb?, como cambia la lectura.?.. Espero pueda ayudarme.
Saludos cordiales
mediante token usb, lo intente pero es casi imposible por lo que no deja importar el certificado con la clave privada que es lo que se encripta al momentos de firmar los xml
Buen dia a todos, copie el código que expuso Fernando, ya me firmo el documento, lo envio al SRI con el resultado RECIBIDA, pero al ver el documento si esta autorizado me sale FIRMA INVALIDA o algo así. Alguien que haya resuelto lo de la firma, ya sea en JAVA (NetBeans) o .NET c#? Ahí podemos compartir código.
Como están? una petición alguien me podría guiar en la conversión de los .jar a .dll, trate con ikvmc pero me arroja errores y advertencias ademas de que no puede escribir en la carpeta destino.
Saludos.
J. Desarrollo
Te funciono la firma? podrias ayudarme con ese código? Yo trabajo con .NET c# y estoy llamando a ese .JAR desde de este aplicativo, no genero la DLL de java.
tienes qe utilizar Dim xml As Byte() = File.ReadAllBytes(txt_ruta_xml.Text.Trim).
Hay se soluciona el error de firma invalida
Muy buen aporte amigo, no se de que manera sería posible firmar con un certificado almacenado en un token.. he tratado pero no he podido hasta el momento...
Les quería aportar algo que he conseguido hasta ahora en C#, y es en el caso que no tengamos el archivo .p12, recién lo conseguí y no se hasta que punto funcione.
//Obtengo la firma en el Certificado X509
X509Certificate2 uidCert;
if (pathSignature == "")
{
uidCert = loadFromStore();
}
else
{
uidCert = new X509Certificate2(pathSignature, passFirma, X509KeyStorageFlags.DefaultKeySet);
}
private X509Certificate2 loadFromStore()
{
X509Store objStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
X509Certificate2 certif = new X509Certificate2();
List certificados = new List();
objStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)objStore.Certificates;
X509Certificate2Collection findCollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection selectCollection = X509Certificate2UI.SelectFromCollection(findCollection
, "Test Certificate Select"
, "Select a particular certificate from the following list to get information on that certificate"
, X509SelectionFlag.MultiSelection);
certificados.AddRange(objStore.Certificates.Cast().ToList());
foreach (X509Certificate2 cert in selectCollection)
{
return cert;
}
return null;
}
Me ayudo mucho tu blog, muchas gracias, ya logré firmar el archivo xml con token, en Java.
Hola como están?, alguien consiguió firmar correctamente el xml en C# o Vb.net?...
Lo he estado intentando pero no logro colocar los namespace de etsi...y si no los coloco me da error al enviar al web service y si los coloco manualmente me da error en la integridad de la firma...
cualquier ayuda bienvenida, podemos colaborar...
Un saludo.
Saludos.
Tengo un problema. Me da un error en un import:
import adsi.org.apache.xml.security.utils.resolver.ResourceResolverSpi;
de la clase FirmaXML de la libreria MITyClibXADES.
Estoy utilizando la version 1.1.7 que es la ultima que esta para descargar.
Alguna idea? Llevo bastante tiempo dandole vueltas y no saco ninguna.
Muchas gracias
Hola. Alguien que me ayude con la firma en vb.net. Cuánto me cobraria x eso.
Gracias.
¿Quien tiene el ejemplo de Fense funcionando?
Mi correo CGOMEZGYE@HOTMAIL.COM
y a como $$
Saludos amigos.
en la seccion firma,
es necesario las 3 referencias SignedInfo...??
y Es necesario especificar el etsi namespace qualified para cada elemento??
Cualquier ayuda es muy apreciada.
Gracias
El esquema de como debe quedar la firma esta descrita en los archivos provistos de la pagina del sri,
Saludos cordiales, estoy intentando realizar la firma del xml con la firma electrónica en archivo p12 proveída por el Banco Central del Ecuador con C#.
Mi pregunta es si alguien lo consiguio para que me oriente, gracias de antemano
Que tal Marco Yuquilima.
Yo tambien estoy trabajando con el token usb, logre firmar el archivo xml, quisiera consultarte si tu estas trabajando en el tema del sri, porque yo al momento de enviar a los web service del sri tengo la respuesta RECIBIDA pero al momento de autorizar me da el error FIRMA INVALIDA El comprobante puede estar modificado o no ser valido.
Te ha pasado esto..? si me puedes ayudar mi correo es vinferm83@gmail.com
Saludos
Amigos les dejo mi correo si desean consultoria sobre la firma o el envío del xml a los webservice del SRI.
sistemas_orellana@hotmail.com
No se si le pasa ha alguien
pero el servicio del SRI timesout después de un minuto aproximadamente. Sucede
al enviar una factura en el primer webservice del SRI "Recepción de comprobantes" establece el handshake pero nunca recibo una respuesta de vuelta y luego de un minute (57 segundos para ser exacto) times out..me paso varias veces el fin de semana. Alguien sabe o tiene información o algún dato sobre esto y podría compartirlo ??? Estoy en la etapa de pruebas y uso .NET
Gracias
Dogui...
Esta linea es la direfencia y funciona a la perfeccción... Gracias por tu aporte. Ya envia y me autorizo el SRI el comprobante.
dataToSign.addObject(new ObjectToSign(new InternObjectToSign("comprobante"), "contenido comprobante", null, "text/xml", null));
Saludos
Ap
estimados yo poseeo los procesos de envio y autorizacion esta funcionando perfectamente solo falta la firma, yo actualmente poseo la una funcion de firma pero me sale el mensaje DEVUELTA
me pueden escribir a mi correo
trabajos1979@hotmail.com
saludos
Alejandro
Con esa linea ya se puede firmar. Tengo esta consulta : Despues de firmar genera el archivo y a continuacion deseo recuperarle para llamar al web service pero tengo el error que el archivo esta en uso por el proceso de firmado. Como puedo hacer para que el proceso cierre el archivo y lo pueda usar con el proceso de llamar al web service.
Buen dia estimados quien de ustedes posee la firma electrónica 100% C# o VB.net que no utilice librerías java convertida a dll, podemos cambiar con el consumo WS que los tengo funcionando al 100%
mi correo es
trabajos1979@hotmail.com
saludos
Alejandro
yo tengo todo el proceso de firma y envio de xml al web service del SRI en c# y visual basic.
Cualquier inquietud aqui dejo mi correo.
jaco-47@hotmail.es
skype jaco-a_cool@hotmail.com
Estimados.
Para quienes desarrollan en visual Fox. Ya tengo la dll para la firma electrónica y el consumo.
alex1980ec@hotmail.es
Gracias Fense por tu foro que fue de gran ayuda.
Dogui Gracias por tu ayuda.. estoy implementando tu archivo y me sale el siguiente error DER Input, Intefer tag error.
estoy utulizando el eToken BCE color azul...otra pregunta en que donde esta ubicado el certifica en usb.. gracias
Saludos, alguien que me pueda facilitar una factura de ejemplo que se encuentre firmada gracias
LAguien me pude ayudar si la firma en Lote es la misma o cambia el algoritmo lo estoy haciendo en Java.
Saludos
Aunque no he participado en este foro me parece poco profesional que algunas quieran ahora retribucion economica en base a la ayuda y debates que se dieron en el mismo.
Busco Socios estrategicos para comercializar mi plataforma de FACTURACION ELECTRONICA ezDOC, esta desarollada enteramente en c# y vb.net, ademas ya tengo el portal en asp.net para colgar los comprobantes autorizados. Informacion al 0994997076 o escribir a ventas@ezdoconline.com
Ofrezco solución sencilla para la Facturación Electrónica desarrollada en C# y en Visual Basic, implementada en Visual Fox Pro, Power Builder y en el mismo Visual Studio. Información a este correo jaco-47@hotmail.es o Skype jaco-a_cool@hotmail.com.(Precios Accesibles)
descargue el codigo pero igual el SRI me rechazo el xml alguien me podria decir por hay un nodo del xml no se llena como es:
ds:Reference Id="Reference-ID-246198" URI="" deberia estar URI="#comprobante"
Alguien que pueda ayudar a firmar con librerias propias de c#, gracias
Estimados buenas noches, para las personas que han tenido la necesidad de poder depurar su base de datos obteniendo los datos reales del nombre de una persona o la razon social de una empresa y saber si esta activo o no ya sea por su cedula o ruc, tengo disponible una aplicacion que hara eso por ustedes pueden cargar los ruc o cedula que desean validar desde una hoja de excel para poder obtener sus datos los que esten interesados les dejo mi correo sistemas_orellana@hotmail.com indicar el motivo que del SRI, solo los que esten interesados, buenas noches suerte en sus proyectos.
Que tal mis estimados, los que deseen generar el ride de una forma facil y sencilla partiendo del xml ya sea autorizado o sin autorizar contactarse conmigo, por favor solo los que esten interesados.
indicar que es sobre el RIDE.
sistemas_orellana@hotmail.com
Suerte en sus proyectos.
Estimados les dejo el codigo de como uso las dll para enviar a autorizar un archivo xml, es sumamente sencillo
Dim ws As New WebServiceSRI.WebService
Dim resSRI As EstadoSRYType = EstadoSRYType.NOAUTORIZADO
'--------------------------------------------------------------------------------------------
Try
'----------------------------------------------------------------------------------------
'ENVIO A AUTORIZAR EL COMPROBANTE XML
'----------------------------------------------------------------------------------------
resSRI = ws.sendComprobante(rutaArchivoXML, rutaRespuestaSRIXML)
'----------------------------------------------------------------------------------------
'VERIFICO SI EL COMPROBANTE FUE AUTORIZADO
'----------------------------------------------------------------------------------------
If resSRI = EstadoSRYType.AUTORIZADO Then
Dim aut As WebServiceSRI.Autorizacion = ws.AutorizacionComprobante.Autorizacion
'------------------------------------------------------------------------------------
MsgBox(String.Format("Clave de Acceso:{1}{0}Tipo Emision:{2}{0}Numero Autorizacion:{3}{0}Fecha Autorizacion:{4}{0}", vbCrLf, ws.ClaveAcceso, ws.TipoEmision, aut.NumeroAutorizacion, aut.FechaAutorizacion))
'------------------------------------------------------------------------------------
aut = Nothing
ElseIf resSRI = EstadoSRYType.NOAUTORIZADO Then
'MUESTRO LOS MENSAJES DE ERROR QUE OBTUVO AL QUERER AUTORIZARLO
For Each mensaje As WebServiceSRI.Mensaje In ws.Mensajes
MsgBox(String.Format("Mensaje Error:{0}", mensaje.InformacionAdicional), MsgBoxStyle.Critical)
Next
Else
'SI ENTRA POR AKY ES PORQUE NO HAY CONEXION A LOS WEBSERVICES DEL SRI
MsgBox("No hay conexion a los webservice del SRI", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
'--------------------------------------------------------------------------------------------
ws = Nothing
Los que deseen asesoria sobre facturacion electronica este es mi correo.
sistemas_orellana@hotmail.com
indicar que es sobre asesoria
Suerte en sus proyectos
A todos los que estén trabajando en la facturación electronica, les comento que logre solucionar todos los inconbenientes que tenia al respecto contactando con Jean Carlos Ordoñez, pues realmente propone una solución efectiva y sencialla, por lo que le estoy muy agradecido a El por el apoyo que me ha brindado en este tema.
Ah!! se me olvidaba este es el correo de Jean Carlos Ordoñez:
jaco-47@hotmail.es
buenas tardes alguien que me pueda ayudar cual es el webservice de factura por lotes porque esta no responde
https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionLoteMasivo?wsdl
Esta semana ha estado pesimo los webservices del SRI de pruebas ha sido una locura a lo mejor como ya viene navidad estan en intermitenitencia.
Necesito socios estrategicos para comercializar Facturacion Electronica solo interesados contactar a ventas@ezdoconline.com o al 0994997076, o si necesitan alguna asesoria.
Estimados buen día, llevo días probando las dos opciones que presentan aquí, pero al momento de mandar a firmar no hace nada.. gracias por su ayuda.. nine1982666@hotmail.com
Luis Sancho Sánchez, yo sigo sin poder firmar, firmé una vez y luego ya no pude, sería tan amable de ayudarme?? nine1982666@hotmail.com
Saludos, en caso de que alguien necesite asesoría en vb6, .NET o JAVA, mi correo es desarrollo@datumtecnologia.com. He logrado desarrollar la firma del comprobante y consumo de servicios web en estas plataformas.
Ofrezco solución sencilla para la Facturación Electrónica desarrollada en C# y en Visual Basic, implementada en Visual Fox Pro, Power Builder y en el mismo Visual Studio. Información a este correo jaco-47@hotmail.es o al numero 0994951165.(Precios Accesibles)
Ofrezco repositorio seguro para almacenar documentos, fácil de utilizar mediante web service, provee:
Web service para crear cliente básico, recibir XML firmado+PDF, etc.
Una cuenta gratuita para que el cliente descargue sus documentos.
Un portal web para consulta de documentos.
Envía el correo con los adjuntos desde una dirección firmada que no va a spam.
contacto: rene.aravena gmail.com
Facturación electrónica al alcance de tus manos usando una sola DLL hará todo por ti firmar, autorizar generar el RIDE y enviarlo por correo
Sistemas_orellana@hotmail.com
Estimados del foro.
Alguien me puede guiar con información de como firmar electronicamente un xml y autorizar para el SRI, pero con VFP 9.0 y sin DLL.
Hola me pueden ayudar, que certificado es mejor de los que da el banco central token, hsm o archivo estandarx.509 y con cual es mas facil de trabajar
Patricio con el archivo es mas sencillo
Luego de firmar el archivo lo valido pero se cae con una excepción que dice la entrada no es una cadena base 64 valida.Que puede estar mal...y del ws del sri me sale firma y/o certificado invalido.
Alguien me puede ayudar...
Ofrezco solución sencilla para la Facturación Electrónica desarrollada en C# y en Visual Basic, implementada en Visual Fox Pro, Power Builder y en el mismo Visual Studio. Información a este correo jaco-47@hotmail.es o al numero 0994951165.(Precios Accesibles)
Para los que tengan el siguiente error: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found,
deben realizar el siguiente cambio:
private Document LoadXML(string path)
{
// It seems the com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl class is not loaded and so the factory can not create it.
// Adding this line in before the call to the factory forces the assembly to load, and then the factory can see it and everything works as expected...
com.sun.org.apache.xerces.@internal.jaxp.SAXParserFactoryImpl s = new com.sun.org.apache.xerces.@internal.jaxp.SAXParserFactoryImpl();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
return dbf.newDocumentBuilder().parse(new BufferedInputStream(new FileInputStream(path)));
}
Cuando tenga el código nativo en C# con mucho gusto lo comparto con toda la comunidad, de forma gratuita.
Gracias, lo publicado por Dogui funciona correctamente con la modificacion indicada por el anonimo en C#
dataToSign.addObject(new ObjectToSign(new InternObjectToSign("comprobante"), "contenido comprobante", null, "text/xml", null));
Todo bien en C# con las librerias migradas
Por cierto me olvidaba comentarles que cuando se firman los docuemtnos en el mismo procedimieto se desean enviar estos se quedan bloqueados por que estan siendo usados. para solucionar este inconveniente en C# usar
// Guardamos la firma a un fichero en el home del usuario
using (FileOutputStream fileOut = new FileOutputStream(strPathXMLSalida))
{
UtilidadTratarNodo.saveDocumentToOutputStream((Document)res[0], fileOut, true);
}
Saludos amigos, alguien esta implementado este proceso usando PHP y como esta haciendo el consumo ws
ayuda por favor, estoy implementando la facturacion en java y tengo el siguiente error
"ClaseGenericaFirma.java": imposible acceder a es.mityc.firmaJava.libreria.xades.DataToSign,archivo de clase incorrecto C:\SistemaMorfeo\jar\MITyCLibXADES-1.1.7.jar\es\mityc\firmaJava\libreria\xades\DataToSign.class,el archivo de clase tiene la versión incorrecta 50.0, debería ser 48.0,Elimínelo o compruebe que aparece en el subdirectorio correcto de la vía de acceso a clases. en la línea 47, columna 42
Alguien tendra un cretificado de prueba que me puedan proporcionar?
Saludos
Estimados solo por el mes de noviembre estoy dejando la dll que te firma válida autoriza te trae la respuesta del sri te genera el RIDE y luego te lo envía por correo aun costo módico de 650 dólares solo una dll al alcance de tus manos no usa librerías de java usa solo .net puro solo interesados.
Sistemas_orellana@hotmail.com
skype leo24832
Hola , tengo la solucion de la factura electronica si deseas el codigo en Java te cuesta $80
Firma y Web Services
Me avisas cualquier novedad
leoberru@hotmail.com
Estimados por Black Friday el precio de la dll que firme valide autoriza traiga la respuesta del sri genere el RIDE y lo envié por correo tendrá un costo de 500 solo una dll al alcance de tus manos usa solo .net puro. Y puede ser usada en vb 6.0 vb.net visual fox pro genexus o cualquier lenguaje que utiliza dll activex.
Ofrezco solución sencilla para la Facturación Electrónica desarrollada en C# y en Visual Basic, implementada en Visual Fox Pro, Power Builder y en el mismo Visual Studio. Información a este correo jaco-47@hotmail.es o al numero 0994951165.(Precios Accesibles) La Firma esta desarrollada con librerías de java convertidas en Dll y con librerías propias de .NET
tengo implementada la firma gracias a los aportes hechos aqui, pero al enviarla al sri me sale DEVUELTA, al parecer esta mal firmado, como puedo validar la firma. gracias de antemano
El Sri a parte de la respuesta devuelta tambien devuelve el motivo.
Te recomiendo cual es el mesaje que se publica ahi para poderte ayudar
Alcivar Arcos te recomiendo verificar las dependencias que estas usando.
Es mejor usar el archivo plano .p12 es mas facil
agregando la referencia algo pude hacer con el envio me daba como estado DEVUELTA y el array vacio no me dice que esta mal solo me devuelve vacio, para autorizacion me perdi y no di como por lo anterior, con HttpWebRequest si estoy mas perdido
Estimados, alguien que pueda ser tan gentil de compartir el codigo, recordemos que todos aprendemos de todos y es lamentables que como Ecuatorianos seamos tan egoistas. Agradecido de por vida a la(s) persona(s) generosa :)
El servidor del sri me envia este error
Tengo el siguiente mensaje:
Error 58
El tipo de comprobante 10 contenido en la clave de acceso no corresponde al de la etiqueta 1
Indica que hay un problema de estructura de clave acceso alguien sabe como resolverlo
Gracias Jaco por la ayuda con la firma
Hola amigos,
Aqui pueden descargar la DLL https://www.dropbox.com/s/m436fip9apdis3b/ecuador20141007.zip?dl=0 ,
favor de mirar el leeme.txt y el ejemplo en foxpro, vb6 o Vbnet.
Se incluye tambien la lista de declaraciones de funciones para PowerBuilder.
Es de 32 bits, hecha en C++.
El firmado es nativo, sin Java o .net .
Hace la firma, envío y petición de autorización, No genera el PDF.
Más detalles, el costo y licenciamiento se mencionan en http://facturaelectronicaecuador.com/
Feliz Navidad a todos !
Saludos..
Podrian ayudarme como se construye la firma misma, les explico:
1.Fuí al bce.gob.ec.
2.Me dieron un archivo .p12
Pense que el contenido de ese archivo debia tal como esta pegarlo en el XML, y de esa forma ya estaría firmado, o sorpresa que el contenido esta codificado, y la verdad no se que hacer con esa informacion recibida del BCE.
Chequeando en la web vi que el firmado se lo debe hacer en el formado XADES-BES, esta estructura tiene un encabezado, no se como se contruye por que creo que es diferfente para cada RUC EMISOR, entonces me podrian explicar minuciosamente los pasos para construir el bloque de forma y pegar en el xml, porque sigo pensando que debo pègar el contenido.......estoy confundido.
Ya tengo constuido la parte de WS y si funciona bien, por que le envio el archivo xml sin firmar y me indica error.
Gracias
Estimado anomimo, aquí esta es link que es de gran ayuda
http://sviudes.blogspot.com/2010/05/facturae-con-net-y-c.html
Estimados aqui dejo un DEMO de facturacion electronica hecha en .NET c#
https://www.youtube.com/watch?v=En8Jxumh4aw
ver contactos en youtube
Hola foreros, necesito aprender la parte de firmado de facturacion electrónica.
Pero con codigo VFP9 al 100%.
Alguien puede darme clases, contactemen al 0999262429.
Hola con todos.
Necesito su ayuda. AL firmar con TOken en windos de 64 bits me da el error de no existir j2pkcs11.dll en las librerias de java.. al trabajar en windows de 32 bits me funciona todo normal.
Alguien se ha encontrado con este error..?
Hola Winfer.
Seguramente es por que la Dll no esta resgitrada.
Copia manualmente la dll en c:\windows\syswow64, luego ejecuta el cmd.exe con boton derecho como administrador y ahi pones regsvr32 y el nombre de la dll.
Con esto deberia funcionar a la perfeccion
Anonimo tengo lo fuentes para la firma en .NET , te lo cambio con el consumo del web service.
https://plus.url.google.com/url?sa=z&n=1421281586085&url=https%3A%2F%2Fdrive.google.com%2Ffolderview%3Fid%3D0B7D1dOu_3WtTaVZISEI1TnpXZkk%26usp%3Dsharing&usg=ayqIRsf-KkgBT9GfYd4ceZzv3m8.
El ejemplo de Dogui trabaja excelente
Buenos días a todos
Estoy utilizando la libreria XadaesNet para hacer la firma y toda va bien hasta cuando voy a agregar el reference del Key Info siempre me muestra error y me dice que al referencia esta mal formada, no se que estoy haciendo mal, les agradeceria si alguien a trabajado con esta libreria y me puede ayudar
Estimados les dejo un demo en donde podran realziar el proceso de facturacion Electronica, todo esta realizado en .NET
LINK:
http://goo.gl/eoUUxh
Excelente post, ha sio de mucha ayuda estoy desarrollando mi librería para Python y Go por si alguien requiere
Buenas tardes, alguien que tenga el código de la firma con el token eToken Pro del BCE??
Gracias de antemano.
Estimados les dejo un demo sobre la Facturacion Electronica
https://drive.google.com/folderview?id=0B7D1dOu_3WtTaVZISEI1TnpXZkk&usp=sharing
Este permite firmar con token o con archivo p12 o pfx.
Tengo todo el programa para firmar con firma digital basada en archivo, pero necesito el código en c# para la firma del xml con Token.
Si pueden colaborar "free" chévere, caso contrario que me digan cuánto me cuesta el código y negociamos.
Buenas tardes, tengo ya facturacion electronica con java, donde a traves de un servicio web puedes integrarlo con cualquier lenguaje de prog y hacer TODOOO el proceso de facturacion. Ahorita estoy haciendo mi version DLL, ya que veo la afluencia de personas que necesitan una dll y los precios tan elevados de las ofertas. Ahorita necesito la firma en c#, cualquier ayuda sera bien recibida, Ya mi sistema en java esta en produccion, por si alguno tiene alguna duda o quiere hacer negocios.
Les pido que se pasen por: http://webcarreno.org/index.php/tutorials/28-sri-tutorial/24-sri-firma-digital-xades-bes, http://webcarreno.org/index.php/tutorials/28-sri-tutorial/27-consumo-de-web-services-sri-envio-de-y-recepcion-de-autorizacion, http://webcarreno.org/index.php/tutorials/28-sri-tutorial/25-consumo-de-web-services-sri-envio-de-comprobantes
Van a encontrar la solución a todos sus problemas y sin tener que pagar nada.
El conocimiento no sirve de nada si no se lo comparte...
Amigos les dejo una solucion en vb.net con la firma electronica con solo un dll, en la solucion se explica a detalle el uso del mismo, espero les sea de ayuda.
http://1drv.ms/1DNLmNA
De principio suena un poco complejo, pero hay que comprender bien el nuevo sistema de facturación electrónica en Ecuador, para no tener fallos y poder cubrir las exigencias de este nuevo régimen fiscal.
Hola.
Alguien que me venda el código fuente en .net puro para firmar, lo tengo en .net mas las librerias de java. Mi correo jf.quintana@hotmail.com
Gracias.
Hola chicos,
Tengo este mismo sistema implementado, pero necesito documentos en distintos formatos (no sólo XML). Al llamar a la función getDocument el programa se queda pensando y no hace nada. Sí alguien tiene alguna referencia os agradecería la ayuda.
Entre otras cosas también tengo un error debido a que el sistema orginalmente no hacía enveloped y simplemente le he colocado el enveloped a true y me sale un null pointer en
es.mityc.firmaJava.libreria.xades.FirmaXML.signFile
Urgente necesito firmar desde un token quiero soporte urgente.
Hola, para contarles que acabo de implementar la firma electrónica en formato XAdES-BES en visual .net nativo sin librerías.
Para ello me basé en el siguiente artículo:
https://www.jybaro.com/blog/firma-electronica-de-factura-electronica/
Allí está implementado en javascript pero mas allá de eso, el algoritmo es tan fácil de seguir que su comprensión facilita su implementación en cualquier lenguaje.
Suerte con sus proyectos !
Chicos, necesito que haga todo en PHP, si lo tienen y funcionando todo el proceso al 100% para hacerles parte de un proyecto, yo tengo todo funcionando al 100% en java me inetresa en PHP integramente, la parte de firmado, comunicacion al SRI, la obtencion de respuestas sea error, no autorizado, y autorizado, WS, utilizando los arhivos de firma electronica .p12 del banco central
mi correo sanceli@hotmail.com
Funcionaría igual con la especificación Xades-EPES? alguien lo ha intentado? Porque trato de ingresar a los links que hay al principio de la entrada pero pareciera que el servidor está caído.
The following error was encountered while trying to retrieve the URL: http://oficinavirtual.mityc.es/componentes/componentes-1.1.7-with-deps.zip
Connection to 193.146.1.70 failed.
The system returned: (111) Connection refused
The remote host or network may be down. Please try the request again.
Your cache administrator is webmaster.
alguien que tenga codigo para firmar electronicamente en visual fox
Alguien puede compartir el código de la firma en csharp
gracias..
Alguien puede compartir el código de la firma en csharp
gracias..
hola cuando agrego otra referencia me sale referencia mal formada trabajo en c# esto es al monento de firmar
Buena ayuda, gracias a tu post tengo todo el proceso de firmado en c# nativo, java nativo, en php nativo me funciona pero a veces me falla con uno q otro .p12, no me he dado tiempo en ver q sera.
Hola, Alguien me podria ayudar con el codigo C# para la firma del XML de facturacion electronica.
Me podrian ayudan con el codigo C# de firma XML - SRI Ecuador
Hola, disculpa me puedes ayudar tengo la facturación electrónica, como la del ejemplo que explicas, pero el SRI Ecuador cambio la firma de los archivos XML, antes se firmaba con Cifrado de clave (Key Encipherment) y ahora dices que al partir del 8 de ENERO del 2020 toca firmar con Firma Digital (Digital Signature) y no se donde se debe cambiar me puedes ayudar indicando por favor
Los que aún requieran facturación electrónica, vendo las dlls para firmar el xml, enviar, autorizar, y generar el ride, por el módico precio de 200 dólares.
También vendo sistema punto de venta y gestión de inventario web con facturación electrónica incluida,precios desde 20 USD. Más info a mi correo William.Ochoa@xpertsolutions-it.com
Hola amigos me pueden ayudar con el codigo para firmar archivos xml muchas gracias carvillacis@hotmail.com
saludos alguien que me pueda ayudar con el codigo fuente para hacer el firmado en c# les quedo agradecido mi correo es sierra_xavier@hotmail.com
Publicar un comentario