FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Sí los agrego. Construyo el XML, con iteración de facturas, y pongo el namespace que corresponde a cada línea. Una vez completado el XML, lo mando y obtengo la respuesta esperada. Todo correcto, u otras cosas, como Factura duplicada si vuelvo a mandar el mismo.
|
#2
|
|||
|
|||
Cita:
Código:
<SuministroLRFacturasEmitidas> <Cabecera> <IDVersionSii>0.5</IDVersionSii> <Titular> Saludos |
#3
|
|||
|
|||
Cita:
Creo que el error de las cabeceras os puede venir porque: - El objeto deserializer no admite campos soap. Por dicho motivo y como bien dices, debes tomar la parte del xml que comprende el nodo <SuministroLRFacturasEmitidas> - No le estáis pasando el namespace al XmlSerializer. El mío lo tengo así (para el registro facturas emitidas): Código:
Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ' A FileStream is needed to read the XML document. Dim filename As String = "facturaEmitidaMODEL.XML" Using reader As New FileStream(filename, FileMode.Open) _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas) End Using |
#4
|
|||
|
|||
Cita:
Para los que lo hacemos en VB.NET, esta claro que el .xml a enviar empieza o comprende el nodo <siiLR:SuministroLRFacturasEmtidas>, y que tiene que tener la siguiente estructura para poder ser enviado a AEAT: Código:
<siiLR:SuministroLRFacturasEmitidas> <sii:Cabecera> <sii:IDVersionSii>0.1</sii:IDVersionSii> <sii:Titular> … Despues hemos de Deserializar dicho xml para asociarlo/cargarlo en un objeto tipo SuministroLRFacturasEmitidas que es el que enviaremos a AEAT (en mi caso Dim testF As New SuministroLRFacturasEmitidas) Pero, y aquí viene el problema, en el xml hay 2 espacios de nombres: siiLR y sii que de alguna manera hay que indicar que se tengan en cuenta. yo he intentado tu solucion bartag, es decir: Código:
Dim x As New XmlSerializer(testF.GetType, "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") Dim reader As New FileStream(filename, FileMode.Open) testF = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas) Que puede estar mal?. Si a ti te funciona, ¿puedes poner el codigo mas amplio? Observo que en Dim x As New XmlSerializer(testF.GetType, "https://w**.agenciatributaria..., repites la misma cadena, aunque supongo que lo correcto como segunda cadena seria poner: https://**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd, lo he probado tambien asi, pero sigue sin funcionar. Muchas gracias por tu ayuda P.D. donde pongo ** me refiero a una enlace (No tengo permiso para poner enlaces de forma normal) |
#5
|
|||
|
|||
Te pongo el código que utilizo. Básicamente lo que hace es tomar un archivo xml y lo envía. Debes por favor cumplimentar previamente los campos de dicho archivo pues en caso contrario te dará errores de validación.
Código:
' ---------------------------------------------------------------------------------------- Dim store As Security.Cryptography.X509Certificates.X509Store = New Security.Cryptography.X509Certificates.X509Store("My") store.Open(Security.Cryptography.X509Certificates.OpenFlags.ReadOnly) Dim CertificadoCorrecto As New System.Security.Cryptography.X509Certificates.X509Certificate2 For Each x In store.Certificates ListCert = ListCert & vbNewLine Next 'RichTextBox1.Text = ListCert CertificadoCorrecto = store.Certificates(CInt(TextBoxNumeroOrdenCertificado.Text)) '(5) ' Objeto que almacenara la respuesta de la funcion del Web Service Dim resp As New ServiceReference1.RespuestaLRFEmitidasType ' Ws Dim Ws As New ServiceReference1.siiSOAPClient Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto Ws.ClientCredentials.UseIdentityConfiguration = True ' Asignamos el certificado: Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto ' ---------------------------------------------------------------------------------------- ' ---------------------------------------------------------------------------------------- Dim _SuministroLRFacturasEmitidas As New SuministroLRFacturasEmitidas '-------------------------------------------------------------------------- Try Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ' A FileStream is needed to read the XML document. Dim filename As String = "facturaEmitidaMODEL.XML" Using reader As New FileStream(filename, FileMode.Open) _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas) End Using ' SI QUEREMOS SOBREESCRIBIR EL XML ANTES DE ENVIAR: ' SOBREESCRIBIMOS DATS FORM ANTES SEND: _SuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = Trim(TextBoxRazonSocialEmisor.Text) _SuministroLRFacturasEmitidas.Cabecera.Titular.NIF = Trim(TextBoxNIFEmisor.Text) '(...) '// se hace la llamada a la funcion suministrada por el WS resp = Ws.SuministroLRFacturasEmitidas(_SuministroLRFacturasEmitidas) Catch ex As Exception MsgBox(ex.Message) Respuesta2RichTextBox = ex.Message Finally 'Me.Cursor = Cursors.Default 'Threading.Thread.Sleep(5000) 'ProgressBar1.Style = ProgressBarStyle.Continuous ''ProgressBar1.Value = ProgressBar1.Maximum End Try Con esto, se toma la factura del archivo (fíjate que solamente tiene el nodo '<SuministroLRFacturasEmitidas>' y nada del encabezado SOAP para que no dé error al aplicar el Deserialize) y nos la convierte en un objeto serializado donde podemos acceder a los campos de la clase antes de enviar si lo deseamos; en caso contrario se envía y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc. |
#6
|
|||
|
|||
Cita:
Hola bartag. Muchas gracias por tu rapida respuesta y tu aparte de codigo. Me habia encallado en ese tema y se supone que mañana debo hacer pruebas reales. Me ha clarificado bastante tu codigo despues de analizarlo con detenimiento, y sobre todo tu frase “y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc.”. Finalmente he conseguido enviar y recibir respuesta de AEAT, aunque en la respuesta no recibo el esperado XML sino el siguiente texto:-pongo solo la parte inicial- Código:
El tipo de contenido text/html del mensaje de respuesta no coincide con el tipo de contenido del enlace (text/xml; charset=utf-8). Si usa un codificador personalizado, asegúrese de que el método IsContentTypeSupported se implemente correctamente. Los primeros 1024 bytes de la respuesta fueron: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" No se si tu tambien has pasado por ese punto. Salu2 |
#7
|
|||
|
|||
Cita:
Ahora no estoy en casa. Esta noche te paso el archivo por si pudiera venir de ahí el error. |
#8
|
|||
|
|||
Por favor, podrías mandar un zip el proyecto? Es que soy más de PHP que de VB.NET y no sé que clases importar y demás para el certificado. Gracias.
|
#9
|
|||
|
|||
Cita:
Estoy intentando usar tu código pero tengo un problema cuando hago el Deserialize sobre el XML modelo que has adjuntado. Me da un error "There is an error in XML document (2, 2)", ¿sabes a qué puede ser debido? Gracias. |
#10
|
|||
|
|||
Eliminado por BUG en OPENTEXT
Tras actualizar a la nueva versión de WebService, me ha empezado a devolver este error al tratar de enviar cualquier tipo de factura:
{"El cliente encontró el tipo de contenido de respuesta 'text/html', pero se esperaba 'text/xml'.\r\nError de la solicitud con el mensaje de error:Proceso de conexión con la Sede Electrónica de la Agencia Tributaria en curso.<!-- Menu de UTILIDADES PREVIEW -->\r\n\t</div>\r\n</body>\r\n<!-- Eliminado por BUG en OPENTEXT render:trackDependencies/-->\r\n</html>\r\n\r\n--."} A alguien le ha pasado eso también? Esta mañana me dejaba enviar sin problemas. |
#11
|
|||
|
|||
Cita:
Gracias. |
#12
|
|||
|
|||
Cita:
No obstante, comprueba por favor que el "App.config" está debidamente cumplimentado como comentaba y que el certificado carga correctamente. También que el archivo xml que intentas subir es el que puse, ya que si por ejemplo le estás intentando meter uno con namespaces, te va a dar el error que indicas. |
#13
|
|||
|
|||
Cabeceras SII
Cita:
estoy atascada en este tema también, a ver si me puedes ayudar....aunque mi codigo es C#... genero dinamicamente un fichero xml: xmlWriter = new XmlTextWriter(nombrefichero, Encoding.UTF8); xmlWriter.Formatting = Formatting.Indented; xmlWriter.Indentation = 4; xmlWriter.WriteRaw("<?xml version='1.0' encoding='UTF-8'?>"); xmlWriter.WriteStartElement("soapenv:Envelope"); xmlWriter.WriteAttributeString("xmlns", "soapenv", null, "...schemas.xmlsoap.org/soap/envelope/"); xmlWriter.WriteAttributeString("xmlns", "siiLR", null, "....agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"); xmlWriter.WriteAttributeString("xmlns", "sii", null, "....agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"); xmlWriter.WriteStartElement("soapenv:Header"); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("soapenv:Body"); xmlWriter.WriteStartElement("siiLR:SuministroLRFacturasEmitidas"); . . . xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); . . . System.IO.FileStream fStream = new System.IO.FileStream(nombrefichero, System.IO.FileMode.Open); SuministroFactEmitidas.SuministroLRFacturasEmitidas oSfe = new SuministroFactEmitidas.SuministroLRFacturasEmitidas(); oSfe = (SuministroFactEmitidas.SuministroLRFacturasEmitidas)oXmlSerializer.Deserialize(fStream); me da error Error en el documento XML (2, 2). No se esperaba <Envelope xmlns='...schemas.xmlsoap.org/soap/envelope/'>. que estoy haciendo mal??? Gracias Un saludo |
#14
|
|||
|
|||
Cita:
Hola, necesito un poco de ayuda porque ya no sé que me falta o que estoy haciendo mal. En un inicio habia creado el .xml a mano copiando uno de los ejemplos, pero siempre me daba el error de 'La direccion no se corresponde con el fichero de entrada'. Entonces he decidido importar las .wsdl y a partir de objetos asignar los valores y generar el xml a partir de esos objetos. A la hora de generarlo no da error, pero compruebo que faltan las primeras lineas del <envelope> al igual que los inicios de linea con el <sii> o <siiLR>. No sé si esto lo habéis hablado mas adelante y dado una solución o no (voy leyendo poco a poco todos los post), por eso pregunto. El código lo estoy desarrollando en vb.net. Dejo por aquí el xml creado. Gracias, Código:
<?xml version="1.0" encoding="utf-8"?> <SuministroLRFacturasRecibidas xmlns:xsi="**.w3.org/2001/XMLSchema-instance" xmlns:xsd="**.w3.org/2001/XMLSchema"> <Cabecera xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> <IDVersionSii>0.7</IDVersionSii> <Titular> <NombreRazon>NOMBRE EMPRESA</NombreRazon> <NIF>NIF EMPRESA</NIF> </Titular> <TipoComunicacion>A0</TipoComunicacion> </Cabecera> <RegistroLRFacturasRecibidas xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"> <PeriodoImpositivo xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> <Ejercicio>2017</Ejercicio> <Periodo>05</Periodo> </PeriodoImpositivo> <IDFactura> <IDEmisorFactura xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> <NIF>NIF PROVEEDOR</NIF> </IDEmisorFactura> <NumSerieFacturaEmisor xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">NUMERO FACTURA</NumSerieFacturaEmisor> <FechaExpedicionFacturaEmisor xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">FECHA FACTURA</FechaExpedicionFacturaEmisor> </IDFactura> <FacturaRecibida> <TipoFactura xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">F1</TipoFactura> <FechaOperacion xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> FECHA OPERACION</FechaOperacion> <ClaveRegimenEspecialOTrascendencia xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">01</ClaveRegimenEspecialOTrascendencia> <DescripcionOperacion xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">DESCRIPCION FACTURA</DescripcionOperacion> <DesgloseFactura xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> <DesgloseIVA> <DetalleIVA> <TipoImpositivo>TIPO IVA</TipoImpositivo> <BaseImponible>IMPORTE BASE</BaseImponible> <CuotaSoportada>IMPORTE IVA</CuotaSoportada> </DetalleIVA> </DesgloseIVA> </DesgloseFactura> <Contraparte xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> <NombreRazon>NOMBRE PROVEEDOR</NombreRazon> <NIF>NIF PROVEEDOR</NIF> </Contraparte> <FechaRegContable xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">FECHA OPERACION</FechaRegContable> <CuotaDeducible xmlns="**.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">CUOTA DEDUCIBLE</CuotaDeducible> </FacturaRecibida> </RegistroLRFacturasRecibidas> </SuministroLRFacturasRecibidas> |
#15
|
|||
|
|||
Generar los wdsl
Hola a todos, soy nuevo por aqui y me ha tocado meterme tarde en esto
Resulta que estoy intentando hacer los WSDL Importer y estoy teniendo problemas. Primero tenia problemas de que no me los generaba completos y faltaba mucha informacion. Ahora consigo que me los cree pero al copilar me indica que algunos identificadores ya estan declarados. Por ejemplo aqui: FacturaARType = (S, N); Los indica que S y N ya estan declarados Lo estoy haciendo mal cuando los creo o algo? |
#16
|
||||
|
||||
Cita:
|
#17
|
|||
|
|||
WSDL Importer
Cita:
Utilizo delphi 7 y al utilizar el WSDL Importer, creo que me lo genera incompleto ya que al compilar me da el error '[Error] SuministroFactRecibidas.pas(44): Undeclared identifier: 'SuministroLRFacturasRecibidas'. ¿¿Cómo solucionaste este problema?? Gracias Código:
// ************************************************************************ // // The types declared in this file were generated from data read from the // WSDL File described below: // WSDL : https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactRecibidas.wsdl // Encoding : UTF-8 // Version : 1.0 // (26/05/2017 13:27:00 - 1.33.2.5) // ************************************************************************ // unit SuministroFactRecibidas; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type // ************************************************************************ // // The following types, referred to in the WSDL document are not being represented // in this file. They are either aliases[@] of other types represented or were referred // to but never[!] declared in the document. The types from the latter category // typically map to predefined/known XML or Borland types; however, they could also // indicate incorrect WSDL documents that failed to declare or import a schema type. // ************************************************************************ // // !:SuministroLRFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" // !:RespuestaLRFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/RespuestaSuministro.xsd" // !:BajaLRFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" // !:RespuestaLRBajaFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/RespuestaSuministro.xsd" // !:ConsultaLRFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/ConsultaLR.xsd" // !:RespuestaConsultaLRFacturasRecibidas - "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/RespuestaConsultaLR.xsd" // ************************************************************************ // // Namespace : https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactRecibidas.wsdl // transport : http://schemas.xmlsoap.org/soap/http // style : document // binding : siiBinding // service : siiService // port : SuministroFactRecibidasPruebas // URL : https://www7.aeat.es/wlpl/SSII-FACT/ws/fr/SiiFactFRV1SOAP // ************************************************************************ // siiSOAP = interface(IInvokable) ['{39AA0DD7-27CF-DCD9-058B-219CBD81656D}'] function SuministroLRFacturasRecibidas(const SuministroLRFacturasRecibidas: SuministroLRFacturasRecibidas): RespuestaLRFacturasRecibidas; stdcall; function AnulacionLRFacturasRecibidas(const AnulacionLRFacturasRecibidas: BajaLRFacturasRecibidas): RespuestaLRBajaFacturasRecibidas; stdcall; function ConsultaLRFacturasRecibidas(const ConsultaLRFacturasRecibidas: ConsultaLRFacturasRecibidas): RespuestaConsultaLRFacturasRecibidas; stdcall; end; function GetsiiSOAP(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): siiSOAP; implementation function GetsiiSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): siiSOAP; const defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactRecibidas.wsdl'; defURL = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fr/SiiFactFRV1SOAP'; defSvc = 'siiService'; defPrt = 'SuministroFactRecibidasPruebas'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as siiSOAP); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(siiSOAP), 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactRecibidas.wsdl', 'UTF-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(siiSOAP), ''); InvRegistry.RegisterInvokeOptions(TypeInfo(siiSOAP), ioDocument); InvRegistry.RegisterInvokeOptions(TypeInfo(siiSOAP), ioLiteral); end.
__________________
Hay 10 tipos de personas, las que entienden el código binario y las que no. ww.clubdelphi.com/foros/guiaestilo.php |
#18
|
|||
|
|||
Cita:
Esa respuesta ya contiene el CSV y otros parametros de interés para saber que está todo correcto. |
#19
|
|||
|
|||
Cita:
He cogido un ejemplo de la AEAT y he añadido datos reales y me aparece este error: Codigo[404].Web Service no habilitado en internet. Debe darse de alta en ADWSINT Alguien sabe de que se trata?? Muchísimas gracias por toda la ayuda que aportáis, la verdad es que si no llego a encontrar este foro estaría perdida, ya que nunca he trabajado con web Services. |
#20
|
|||
|
|||
Cita:
Copia y pega uno de los ejemplos del fichero SII_Descripcion_ServicioWeb_v0.5_es_es.pdf, tal cual, le pones datos de verdad, y lo envías. Recibirás la respuesta de inmediato (a menos que estén de obras, como el miércoles y jueves pasados ). Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4183 | Hace 1 Semana 15:10:42 |
AEAT envio de datos vía Webservice problemas con WSDL | CelsoO | Internet | 11 | 09-10-2019 20:03:41 |
webService Soap de la Administración Digital Española notific@ | apicito | Internet | 3 | 31-01-2017 11:25:28 |
Error en Webservice funcion envio de sms | webmasterplc | Delphi para la web | 5 | 25-07-2013 20:10:29 |
Problemas con envío de XML a un WebService | davidvamo | Internet | 1 | 13-02-2007 15:49:20 |
|