Sistema de Suministro Inmediato de Informacion a la AEAT

Gracias Paco, consultaré con soporte.

Me confirman que en versión 21 xmlhttprequest soporta certificado digital.

Todabía no he podido probarlo, pero sobre el papel sería posible.

Yo tengo que implementarlo. Solo me he leído por encima la información. Supongo que me pondré con ello a principios del mes que viene, pero si alguien implementa algo y quiere venderlo o compartirlo, por favor informad al respecto.

Gracias.

Hola.

Es la nueva función setClientCertificate() de la clase XmlHttpRequest.

Es una funcionalidad imprescindible en un ERP como el vERP de Velneo, por lo tanto estará bien testada y no creo que haya problemas con su implementación.
Se puede hacer la prueba con cualquier webservice que precise validación con certificado de usuario.

Saludos
Paco Satué

Hola.

La empresa EDICOM, experta en desarrollo de aplicaciones para el intercambio de información, ha creado una página web dedicada al SII.
La página es siiaeat.es.

Saludos
Paco Satué

Buenos días a todos

Algo con lo que hay que tener cuidado es con los datos de identificación de la contraparte. EL NIF/CIF debe ser correcto, pero además el nombre fiscal debe coincidir con el que obra en poder de la agencia tributaria. En caso contrario no acepta las facturas y te informa de que el NIF no está identificado. Yo he tenido un problema con un cliente que tenía dado de alta como ESTEBAN GARCIA y en realidad se llama ESTEBAN ISAAC GARCIA.

Para poder comprobar las identificaciones fiscales que tengamos en nuestras bases de datos hay un WS de la AEAT. Os paso la url con la información:

http://www.agenciatributaria.es/AEAT.internet/Inicio/Ayuda/Manuales__Folletos_y_Videos/Manuales_tecnicos/Web_service/Modelos_030__036__037/Informacion_sobre_Web_Services_de_Calidad_de_Datos_Identificativos/Informacion_sobre_Web_Services_de_Calidad_de_Datos_Identificativos.shtml

Estaría bien que según vayamos avanzando, compartamos la información para que los que vengan detrás no se encuentren los mismos problemas. La mayor dificultad no está en la generación de los XML, sino en la identificación de todos los datos que hay que enviar, que en muchos casos no tendremos registrados en nuestros sistemas.

Un saludo

Muchas gracias por la información Gonzalo.

El día 17 sacaron la versión 07

http://www.agenciatributaria.es/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/Suministro_inmediato_informacion/FicherosSuministros/V_07/SII_Descripcion_ServicioWeb_v0.7.pdf

Buenos días

He preparado una función para validar los datos censales de un cliente o proveedor contra el WS de la AEAT. Os lo pego aquí por si a alguno le viene bien. Es sólo el bosquejo de la generación del envelope y la llamada hecha con CURL.

Set ( C_URL_WS, "https://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP" )
Libre
Set ( C_XML_PET, "<soapenv:Envelope xmlns:soapenv=\chttp://schemas.xmlsoap.org/soap/envelope/\c
xmlns:vnif=\chttp://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/
aeat/burt/jdit/ws/VNifV1Ent.xsd\c>\n"+ " <soapenv:Header/>\n"+ " <soapenv:Body>\n"+ "
<vnif:VNifV1Ent>\n"+ " <vnif:Nif>"+CIF+"</vnif:Nif>\n"+ " <vnif:Nombre>"+NOMBRE+"</
vnif:Nombre>\n"+ " </vnif:VNifV1Ent>\n"+ " </soapenv:Body>\n"+ "</soapenv:Envelope>" )
Libre
Set ( C_FIC_SALIDA, sysCacheClientPath+"curl_resp_"+dateTimeToString(currentDateTime(),
"ddMMyyyyHHmmssz")+".txt" )
Set ( C_FIC_ENTRADA, sysCacheClientPath+"curl_peti_"+dateTimeToString(currentDateTime(),
"ddMMyyyyHHmmssz")+".txt" )
Set ( C_FIC_CERT, sysCacheClientPath+"certificado.pem" )
Set ( C_FIC_KEY, sysCacheClientPath+"certificado_key.pem" )
Libre
Fichero: Abrir ( FIC_ENT, C_FIC_ENTRADA, Lectura/escritura (Crea o limpia), L_OK, UTF-8 )
Fichero: Grabar línea ( FIC_ENT, C_XML_PET, L_OK )
Libre
Set ( C_CALL_CURL, sysCacheClientPath+"curl --connect-timeout 60 -m 60 -s -S -L --header \cContent-
Type: text/xml;charset=UTF-8\c --cert "+C_FIC_CERT+" --key "+C_FIC_KEY+" --data
@"+C_FIC_ENTRADA+" "+C_URL_WS+" --output "+C_FIC_SALIDA+" -v" )
Libre
Ejecutar comando del sistema ( C_CALL_CURL, N_RESP )
Libre
Fichero: Abrir ( FIC, C_FIC_SALIDA, Sólo lectura, L_OK, .Ninguno )
Fichero: Leer línea ( FIC, C_RESPUESTA, )
Libre
Mensaje ( C_RESPUESTA, Información, , )

Hola a todos,

Estoy usando cURL para comunicarme con la AEAT, he convertido mi certificado a .pem y usando la siguiente instrucción:
curl.exe --connect-timeout 60 -m 60 -s -S -L --header "Content-Type: text/xml;charset=UTF-8" --cert "CERTIFICADO.pem" --key "CERTIFICADO_key.pem" --data "@facturas_recibidas_142.xml" https://www7.aeat.es/wlpl/SSII-FACT/ws/fr/SiiFactFRV1SOAP --output "facturas_recibidas_142.xml.resp" -v

La AEAT me devuelve en el fichero respuesta una pàgina html con el mensaje de error:
“Error de identificación. No se detecta certificado digital o no se ha seleccionado correctamente.”

Si instalo mi certificado en el IE, parece que lo usa automáticamente y funciona la instrucción.

¿Alguien me puede echar una mano? Os lo agradecería muchísimo.

Buenas tardes

Yo tengo así la llamada hecha salvo por las comillas en los nombres de los ficheros y que yo pongo las rutas completas tanto en curl.exe, los ficheros de certificados y los ficheros de peticion y respuesta. De esta forma:

x:/sii_aeat/curl.exe --connect-timeout 60 -m 60 -s -S -L --header “Content-Type: text/xml;charset=UTF-8” --cert x:/sii_aeat/CERTIFICADO.pem --key x:/sii_aeat/CERTIFICADO_key.pem --data @x:/sii_aeat/facturas_recibidas_142.xml https://www7.aeat.es/wlpl/SSII-FACT/ws/fr/SiiFactFRV1SOAP --output x:/sii_aeat/facturas_recibidas_142.xml.resp -v

Por lo demás, lo hago igual que tú.

Un saludo

Gracias por contestarme Gonzalo,

una pregunta, ¿el certificado lo tienes también instalado en el Internet Explorer o en el Almacén de Certificados?

Gracias.

Buenos días

En mi equipo sí que tengo el certificado instalado en el navegador, pero en otros equipos no lo tengo. Simplemente lo tengo en formato .pem en una carpeta accesible por los usuarios.

Un saludo

Hola Gonzalo,
es que si desinstalo del navegador el certificado, me da error.

No consigo entenderlo…

Gracias por ayudarme de todas maneras.

Buenas, algunas consideraciones:
Yo lo tengo implementado en 7.21, mediante XMLHttpRequest; al principio me daba el mismo error (no tengo instalado ningún certificado en los exploradores del equipo).
Al final generé desde el certificado .pfx (exportado con clave privada y contraseña) el fichero .pem y .key.
Desde jscript, leo dichos ficheros y los asigno a una variable de tipo VByteArray (para respetar los bytes tal cual, es vital) y son estas variables las que mando como certificado. Hacienda me responde ok, le envio los xml de prueba de la empresa y proceso la respuesta.
Adjunto el codigo ejemplo:

importClass(“XMLHttpRequest”);
importClass( “VFile” );
var fi = new VFile( “/home/alberto/factura.xml” );
var contenido = “”;
if ( fi.open( VFile.OpenModeReadOnly ) )
contenido = fi.readAll();
var certificadoFile = new VFile( “/home/alberto/MGS.pem” );
var contenidoCertificado = new VByteArray;
if ( certificadoFile.open( VFile.OpenModeReadOnly ) )
{
contenidoCertificado = certificadoFile.readAll();
var mensaje = contenidoCertificado.toLatin1String();
alert(mensaje);
}
var keyFile = new VFile( “/home/alberto/MGS.key” );
var keyCertificado = new VByteArray;
if ( keyFile.open( VFile.OpenModeReadOnly ) ){
keyCertificado = keyFile.readAll();
alert(keyCertificado.toLatin1String());
}
var url = “https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP”;
var xhr = new XMLHttpRequest();
xhr.open(“POST”, url, true);
xhr.setClientCertificate(contenidoCertificado.toLatin1String(),keyCertificado.toLatin1String(),“Password”);
xhr.setRequestHeader('Content-Type: ', ‘text/xml;charset=UTF-8’);
xhr.send(contenido);

while(xhr.readyState != 4)
{
xhr.processEvents();
}

//if ( (xhr.errorCode==0) && (xhr.status == 200) )
//{
alert(JSON.stringify(xhr.response));
//}

Ya me funciona,
He reinstalado el cURL, parece que tenía algún problema con el almacén de certificados que coloca el propio cURL.

¿cual és la función de este? ¿sirve para que cURL verifique que mi certificado se ha emitido por una entidad validada de las que están en dicho almacén?

Gracias a todos.

Ojo que setclientcertificate

NO FUNCIONA EN OSX.

Comprobado por mí tras muchas pruebas y confirmado por soporte.

Os comparto un enlace con información sobre el SII (Suministro Inmediato de Información del IVA) en la web de nuestros compañeros de Visual Trans: https://visualtrans.es/sii/