Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2017
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Cita:
Empezado por CMB Ver Mensaje
Ya sé que Delphi tiene el TXMLDocument y los ChildNodes y demás, pero me inclino por meter la respuesta en un TStringList y analizarla línea a línea. Nada del otro mundo.
Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias.
De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.

Miraré:
https://github.com/Fr0sT-Brutal/awes...hi#xmljsonyaml
Responder Con Cita
  #2  
Antiguo 24-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por Nasca Ver Mensaje
Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias. De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.
A falta de parser, yo estoy pensando en meter las líneas del XML de respuesta en un TStringList. A partir de ahí, ir buscando los tags que son clave (<siiR:EstadoEnvio>, <siiR:EstadoRegistro>, <siiR:CSV>, <siiR:CodigoErrorRegistro>, <siiR: DescripcionErrorRegistro>) y asociar los valores que contengan con el número de factura que se encuentra en <sii:NumSerieFacturaEmisor>. Luego meter los valores hallados en el registro correspondiente del fichero de facturas, con el fin de que el usuario disponga de esa información. Si la factura ha sido aceptada, o lo ha sido con errores, o rechazada explicando por qué...

Si alguien tuviese una idea mejor se le agradecería.

Saludos,

Última edición por CMB fecha: 24-02-2017 a las 16:29:20. Razón: Error en TStringList
Responder Con Cita
  #3  
Antiguo 24-02-2017
paquimd paquimd is offline
Miembro
 
Registrado: feb 2017
Posts: 15
Poder: 0
paquimd Va por buen camino
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias
Responder Con Cita
  #4  
Antiguo 24-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por paquimd Ver Mensaje
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.
Aquí tienes un ejemplo de XML para facturas emitidas. Es válido, pero tendrás que poner nombres y NIF reconocidos por la AEAT donde hay letras repetidas.

Y en este documento, distribuido por la AEAT, tienes varios ejemplos más: SII_Descripcion_ServicioWeb_v0.5_es_es.pdf

Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
    <soapenv:Header/>
    <soapenv:Body>
        <siiLR:SuministroLRFacturasEmitidas>
            <sii:Cabecera>
                <sii:IDVersionSii>0.5</sii:IDVersionSii>
                <sii:Titular>
                    <sii:NombreRazon>AAAAAAAAAAAAAAAAAAAA</sii:NombreRazon>
                    <sii:NIF>XXXXXXXXX</sii:NIF>
                </sii:Titular>
                <sii:TipoComunicacion>A0</sii:TipoComunicacion>
            </sii:Cabecera>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99103</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>15-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>5.69</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>BBBBBBBBBBBBBBBBBBBB</sii:NombreRazon>
                        <sii:NIF>YYYYYYYYY</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>21.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>4.70</sii:BaseImponible>
                                            <sii:CuotaRepercutida>0.99</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99101</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>14-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>275.00</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>CCCCCCCCCCCCCCCCCCCC</sii:NombreRazon>
                        <sii:NIF>ZZZZZZZZZ</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>10.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>250.00</sii:BaseImponible>
                                            <sii:CuotaRepercutida>25.00</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
        </siiLR:SuministroLRFacturasEmitidas>
    </soapenv:Body>
</soapenv:Envelope>
Responder Con Cita
  #5  
Antiguo 29-03-2017
dtovar8a dtovar8a is offline
Registrado
NULL
 
Registrado: ene 2017
Posts: 2
Poder: 0
dtovar8a Va por buen camino
Fin prematuro del archivo

Buenos días,
En el caso de la construcción del XML he optado por su creación manual. En este sentido no tengo ningún problema, puedo subir manualmente el fichero desde el portal de AEAT con su certificado y pasa correctamente, puediendo ver la factura subida desde la consulta de facturas.

El problema viene cuando intento subir dicho archivo mediante C# o VB.

He utilizado diferentes mecanismos, y en ambos me encuentro varios problemas:
  1. Utilizando HttpWebRequest, aparece el error "Fin prematuro del archivo".
    Comenta @CMB que puede ser problema del fichero y que al abrir con un explorador me indicará la línea/columna del error, pero el fichero abre correctamente, de hecho, como he dicho antes, lo he subido sin problemas desde el portal.
    El código que utilizo es el que utiliza @angelhorse:
    Código:
        Public Sub sendXML(_subjectname As String, _filepath As String)
            subjectName = _subjectname
            filepath = _filepath
    
            Dim req As HttpWebRequest
            Dim url As String = "https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
            'inicializar propiedades request--------------------------------
            req = HttpWebRequest.Create(url)
            req.Headers.Add("SOAP:Action")
            req.ContentType = "text/xml;charset=""utf-8"""
            req.Accept = "text/xml"
            req.Method = "POST"
    
            Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
            soapEnvelopeXml.Load(_filepath)
    
            cert = New X509Certificate2("c:\Temp\certificado.pfx", "12345")
            req.ClientCertificates.Add(cert)
    
            Dim rest As WebResponse = req.GetResponse()
    
            Dim reader As StreamReader = New StreamReader(rest.GetResponseStream())
            soapResult = reader.ReadToEnd()
        End Sub
    ¿Que está ocurriendo?
  2. Utilizando la clase siiService, creada a partir del WS y cambianado inheerits por: Microsoft.Web.Services3.WebServicesClientProtocol, como describe @batuzail.
    Los pasos que sigo son los siguientes:
    • Agrego a referencias de mi proyecto "Microsoft.Web.Services3"
    • Utilizo la siguiente instrucción para generar la clase siiService a partir del servicio web:
      Código:
      wsdl https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl /language=VB
      Una vez generada la clase, la edito y cambio
      Código:
      Partial Public Class siiService
          Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
      por
      Código:
      Partial Public Class siiSuministroFactEmitidas
          Inherits Microsoft.Web.Services3.WebServicesClientProtocol
    • Importo a mi proyecto la clase recién generada
    • Agrego la referencia al servico web para tener acceso a los datasets y la llamo SuministroFactEmitidas
    • Añado los siguientes imports:
      Código:
      Imports System.IO
      Imports System.Security.Cryptography.X509Certificates
      Imports System.Xml.Serialization
      Imports Microsoft.Web.Services3
      Imports Microsoft.Web.Services3.Security
      Imports Microsoft.Web.Services3.Security.Tokens
    • Añado el siguiente código
      Código:
          Private Sub send()
      
              Try
                  cert = findCertificate()
                  Dim signatureToken As X509SecurityToken = New X509SecurityToken(cert)
                  Dim sig As New MessageSignature(signatureToken)
      
                  Dim webserviceProxy As New siiSuministroFactEmitidas
                  webserviceProxy.ClientCertificates.Add(cert)
      
                  Dim requestContext As SoapContext = webserviceProxy.RequestSoapContext
                  requestContext.Security.Tokens.Add(signatureToken)
                  requestContext.Security.Timestamp.TtlInSeconds = 60
                  requestContext.Security.Elements.Add(sig)
      
                  Dim suministroLRFacturasEmitidas As New SuministroLRFacturasEmitidas
      
                  Dim xmlSerializer As New XmlSerializer(suministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
      
                  Using reader As New FileStream(filepath, FileMode.Open)
                      suministroLRFacturasEmitidas = CType(xmlSerializer.Deserialize(reader), SuministroLRFacturasEmitidas)
                  End Using
      
                  Dim resp As SuministroFactEmitidas.RespuestaLRFEmitidasType
      
                  webserviceProxy.SuministroLRFacturasEmitidas(suministroLRFacturasEmitidas)
      
              Catch ex As Exception
                  Console.WriteLine(ex.ToString())
              End Try
      
          End Sub
      No tengo ningún error de compilación, pero al ejecutarlo aparece un error en tiempo de ejecución en la siguiente línea:
      Código:
      Dim webserviceProxy As New siiSuministroFactEmitidas
      con el error "URI no válido: no se puede determinar el formato del URI."
¿Alguien podría darme algo de luz por alguna de las dos vías?

Gracias
Responder Con Cita
  #6  
Antiguo 29-03-2017
dtovar8a dtovar8a is offline
Registrado
NULL
 
Registrado: ene 2017
Posts: 2
Poder: 0
dtovar8a Va por buen camino
siiSOAPCliente

Cita:
Empezado por dtovar8a Ver Mensaje
Buenos días,
En el caso de la construcción del XML he optado por su creación manual. En este sentido no tengo ningún problema, puedo subir manualmente el fichero desde el portal de AEAT con su certificado y pasa correctamente, puediendo ver la factura subida desde la consulta de facturas.

El problema viene cuando intento subir dicho archivo mediante C# o VB.

He utilizado diferentes mecanismos, y en ambos me encuentro varios problemas:
  1. Utilizando HttpWebRequest, aparece el error "Fin prematuro del archivo".
    Comenta @CMB que puede ser problema del fichero y que al abrir con un explorador me indicará la línea/columna del error, pero el fichero abre correctamente, de hecho, como he dicho antes, lo he subido sin problemas desde el portal.
    El código que utilizo es el que utiliza @angelhorse:
    Código:
        Public Sub sendXML(_subjectname As String, _filepath As String)
            subjectName = _subjectname
            filepath = _filepath
    
            Dim req As HttpWebRequest
            Dim url As String = "https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
            'inicializar propiedades request--------------------------------
            req = HttpWebRequest.Create(url)
            req.Headers.Add("SOAP:Action")
            req.ContentType = "text/xml;charset=""utf-8"""
            req.Accept = "text/xml"
            req.Method = "POST"
    
            Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
            soapEnvelopeXml.Load(_filepath)
    
            cert = New X509Certificate2("c:\Temp\certificado.pfx", "12345")
            req.ClientCertificates.Add(cert)
    
            Dim rest As WebResponse = req.GetResponse()
    
            Dim reader As StreamReader = New StreamReader(rest.GetResponseStream())
            soapResult = reader.ReadToEnd()
        End Sub
    ¿Que está ocurriendo?
  2. Utilizando la clase siiService, creada a partir del WS y cambianado inheerits por: Microsoft.Web.Services3.WebServicesClientProtocol, como describe @batuzail.
    Los pasos que sigo son los siguientes:
    • Agrego a referencias de mi proyecto "Microsoft.Web.Services3"
    • Utilizo la siguiente instrucción para generar la clase siiService a partir del servicio web:
      Código:
      wsdl https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl /language=VB
      Una vez generada la clase, la edito y cambio
      Código:
      Partial Public Class siiService
          Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
      por
      Código:
      Partial Public Class siiSuministroFactEmitidas
          Inherits Microsoft.Web.Services3.WebServicesClientProtocol
    • Importo a mi proyecto la clase recién generada
    • Agrego la referencia al servico web para tener acceso a los datasets y la llamo SuministroFactEmitidas
    • Añado los siguientes imports:
      Código:
      Imports System.IO
      Imports System.Security.Cryptography.X509Certificates
      Imports System.Xml.Serialization
      Imports Microsoft.Web.Services3
      Imports Microsoft.Web.Services3.Security
      Imports Microsoft.Web.Services3.Security.Tokens
    • Añado el siguiente código
      Código:
          Private Sub send()
      
              Try
                  cert = findCertificate()
                  Dim signatureToken As X509SecurityToken = New X509SecurityToken(cert)
                  Dim sig As New MessageSignature(signatureToken)
      
                  Dim webserviceProxy As New siiSuministroFactEmitidas
                  webserviceProxy.ClientCertificates.Add(cert)
      
                  Dim requestContext As SoapContext = webserviceProxy.RequestSoapContext
                  requestContext.Security.Tokens.Add(signatureToken)
                  requestContext.Security.Timestamp.TtlInSeconds = 60
                  requestContext.Security.Elements.Add(sig)
      
                  Dim suministroLRFacturasEmitidas As New SuministroLRFacturasEmitidas
      
                  Dim xmlSerializer As New XmlSerializer(suministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
      
                  Using reader As New FileStream(filepath, FileMode.Open)
                      suministroLRFacturasEmitidas = CType(xmlSerializer.Deserialize(reader), SuministroLRFacturasEmitidas)
                  End Using
      
                  Dim resp As SuministroFactEmitidas.RespuestaLRFEmitidasType
      
                  webserviceProxy.SuministroLRFacturasEmitidas(suministroLRFacturasEmitidas)
      
              Catch ex As Exception
                  Console.WriteLine(ex.ToString())
              End Try
      
          End Sub
      No tengo ningún error de compilación, pero al ejecutarlo aparece un error en tiempo de ejecución en la siguiente línea:
      Código:
      Dim webserviceProxy As New siiSuministroFactEmitidas
      con el error "URI no válido: no se puede determinar el formato del URI."
¿Alguien podría darme algo de luz por alguna de las dos vías?

Gracias
También he probado a hacer el envío tal y como comenta @bartag:

Cita:
Empezado por bartag Ver Mensaje
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
Te adjunto también el archivo xml que debes cumplimentar donde indica '[A CUMPLIMENTAR]'.

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.
Pero a pesar de no tener ningún error de compilación, me da un error de ejecución. Mi codigo es el siguiente:
Código:
Private Sub send()

        Try
            Dim webserviceProxy As New SuministroFactEmitidas.siiSOAPClient
            Dim resp As New SuministroFactEmitidas.RespuestaLRFEmitidasType
            Dim suministroLRFacturasEmitidas As New SuministroFactEmitidas.SuministroLRFacturasEmitidas

            cert = findCertificate()
            Dim signatureToken As X509SecurityToken = New X509SecurityToken(cert)
            Dim sig As New MessageSignature(signatureToken)

            webserviceProxy.ClientCredentials.ClientCertificate.Certificate = cert

            Dim xmlSerializer As New XmlSerializer(suministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
            Dim reader As New FileStream(filepath, FileMode.Open)

            suministroLRFacturasEmitidas = CType(xmlSerializer.Deserialize(reader), SuministroFactEmitidas.SuministroLRFacturasEmitidas)
            resp = webserviceProxy.SuministroLRFacturasEmitidas(suministroLRFacturasEmitidas)



            'webserviceProxy.SuministroLRFacturasEmitidas(suministroLRFacturasEmitidas)

        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
y el error que aparece es el siguiente:
No se encontró el elemento de extremo predeterminado que hace referencia al contrato 'SuministroFactEmitidas.siiSOAP' en la sección de configuración de cliente de ServiceModel. La razón puede ser que no se encontró ningún archivo de configuración para la aplicación o que no se encontró ningún elemento de extremo correspondiente a este contrato en el elemento de cliente.

¿podeis ayudarme?
Gracias
Responder Con Cita
  #7  
Antiguo 25-02-2017
bartag bartag is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 11
Poder: 0
bartag Va por buen camino
Cita:
Empezado por paquimd Ver Mensaje
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias
Yo estoy haciendo también pruebas en VB/C# y me estoy encontrando con campos que no aparecen (por ejemplo 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.Contraparte.NIF' lo he tenido que crear y también todos los relacionados con 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.TipoDesglose.desgloseFactura...').

Alguien ha tenido el mismo problema? Veo que a los que utilizan Delphi les funciona perfectamente en ese aspecto. Ya no sé si es un problema del lenguaje utilizado o de los cambios que está realizando la Administración...
Responder Con Cita
  #8  
Antiguo 25-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por bartag Ver Mensaje
Yo estoy haciendo también pruebas en VB/C# y me estoy encontrando con campos que no aparecen (por ejemplo 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.Contraparte.NIF' lo he tenido que crear y también todos los relacionados con 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.TipoDesglose.desgloseFactura...').
Alguien ha tenido el mismo problema? Veo que a los que utilizan Delphi les funciona perfectamente en ese aspecto. Ya no sé si es un problema del lenguaje utilizado o de los cambios que está realizando la Administración...
Mejor creas un XML paso a paso, lo envías, y recoges la respuesta. En mi humilde opinión es lo más sencillo y posees tú todo el control. Yo lo estoy haciendo así y me va muy bien.

Saludos,
Responder Con Cita
  #9  
Antiguo 26-02-2017
bartag bartag is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 11
Poder: 0
bartag Va por buen camino
Gracias CMB. Estoy intendo hacerlo como mencionas para pasar el XML ya formado y me salta un error al deserializar:


"No se esperaba <Envelop xmlns='http..://schemas.xmlsoap.org/soap/envelope/>.

Código:
 Using reader As New FileStream(filename, FileMode.Open)
      _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
 End Using
He tratado de pasar el namespaces pero aún así me sigue saltando el mismo error. Cómo lo haces tú?
Responder Con Cita
  #10  
Antiguo 26-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por bartag Ver Mensaje
Gracias CMB. Estoy intendo hacerlo como mencionas para pasar el XML ya formado y me salta un error al deserializar: "No se esperaba <Envelop xmlns='http..://schemas.xmlsoap.org/soap/envelope/>.
He tratado de pasar el namespaces pero aún así me sigue saltando el mismo error. Cómo lo haces tú?
No estoy seguro de lo que te sucede, pero las dos primeras líneas del XML deberían ser así

Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
Responder Con Cita
  #11  
Antiguo 27-02-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
Cita:
Empezado por CMB Ver Mensaje
Mejor creas un XML paso a paso, lo envías, y recoges la respuesta. En mi humilde opinión es lo más sencillo y posees tú todo el control. Yo lo estoy haciendo así y me va muy bien.

Saludos,
El nif del contraparte es lo que aparece como campo Item (factExpd.Contraparte.Item). Es lo que estoy usando yo y me deja enviar correctamente.
Responder Con Cita
  #12  
Antiguo 27-02-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por CMB Ver Mensaje
Mejor creas un XML paso a paso, lo envías, y recoges la respuesta. En mi humilde opinión es lo más sencillo y posees tú todo el control. Yo lo estoy haciendo así y me va muy bien.

Saludos,

¿que es Crear un XML paso a paso?, te refieres a hacerlo de forma manual, es decir concatenado cadenas que contengan el header y los diferentes nodos -etiquetas y contenido - y despues guardarlo como archivo XML ?

Si puede poner algun detalle o algo de codigo respecto a como lo haces seria fenomenal.

Gracias
Responder Con Cita
  #13  
Antiguo 01-03-2017
paquimd paquimd is offline
Miembro
 
Registrado: feb 2017
Posts: 15
Poder: 0
paquimd Va por buen camino
Cita:
Empezado por bartag Ver Mensaje
Yo estoy haciendo también pruebas en VB/C# y me estoy encontrando con campos que no aparecen (por ejemplo 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.Contraparte.NIF' lo he tenido que crear y también todos los relacionados con 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.TipoDesglose.desgloseFactura...').

Alguien ha tenido el mismo problema? Veo que a los que utilizan Delphi les funciona perfectamente en ese aspecto. Ya no sé si es un problema del lenguaje utilizado o de los cambios que está realizando la Administración...
Hola bartag

Yo lo que intento es subir un xml ya generado que en teoría tiene el formato correcto. Mi problema es al deserializarlo para convertirlo en SuministroLRFacturasEmitidas. La conexión la hago con el certificado, ¿alguien ha subido el xml?

Gracias
Responder Con Cita
  #14  
Antiguo 01-03-2017
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 174
Poder: 12
elcharlie Va por buen camino
Hola a todos.
¿Alguien Tendría un xml de Pagos de ejemplo que se pueda enviar correctamente?
Estoy atascado en los pagos, y no avanzo. Me esta volviendo loco con todo esto, y en la documentación no encuentro ningún ejemplo.
Estoy pillando un asco hacia los programadores de la AEAT, que no veas.
Gracias.
Responder Con Cita
  #15  
Antiguo 01-03-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Cita:
Empezado por elcharlie Ver Mensaje
Hola a todos.
¿Alguien Tendría un xml de Pagos de ejemplo que se pueda enviar correctamente?
Estoy atascado en los pagos, y no avanzo. Me esta volviendo loco con todo esto, y en la documentación no encuentro ningún ejemplo.
Estoy pillando un asco hacia los programadores de la AEAT, que no veas.
Gracias.
Si usas las urls de los esquemas y Wizdler como complemento de Firefox te saca los ejemplos directamente,los puedes completar a mano e incluso enviarlos.

Un Saludo.
Responder Con Cita
  #16  
Antiguo 01-03-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Cita:
Empezado por elcharlie Ver Mensaje
Hola a todos.
¿Alguien Tendría un xml de Pagos de ejemplo que se pueda enviar correctamente?
Estoy atascado en los pagos, y no avanzo. Me esta volviendo loco con todo esto, y en la documentación no encuentro ningún ejemplo.
Estoy pillando un asco hacia los programadores de la AEAT, que no veas.
Gracias.
En los libros de cobros como los de pagos. El delphi no genera bien el fichero, falta un xmlns en uno de los nodos y la aeat genera un error. Para solucionarlo he tenido que cambiar el fichero XML por codigo para incluirlo. En concreto son el nodo <Cobro> y <Pago>.

Igual es esto l oque te esta pasando.
Responder Con Cita
  #17  
Antiguo 01-03-2017
javi_valencia44 javi_valencia44 is offline
Miembro
 
Registrado: mar 2017
Posts: 50
Poder: 8
javi_valencia44 Va por buen camino
Cita:
Empezado por paquimd Ver Mensaje
Hola bartag

Yo lo que intento es subir un xml ya generado que en teoría tiene el formato correcto. Mi problema es al deserializarlo para convertirlo en SuministroLRFacturasEmitidas. La conexión la hago con el certificado, ¿alguien ha subido el xml?

Gracias
Tengo el mismo problema...
Responder Con Cita
  #18  
Antiguo 02-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por javi_valencia44 Ver Mensaje
Tengo el mismo problema...
Hola javi_valencia44 y paquimd,

Ambos teneis el mismo problema que es que al Deserializar. Deserializar(es decir convertir un xml –en esencia un string – a un Objeto) os da errores.

Por ejemplo, hecho en codigo VB. Cargo un archivo llamado alta_factura.xml que he generado
Código:
      Dim filename As String = "G:\alta_factura.xml"  
      Dim reader As FileStream = New FileStream(filename, FileMode.Open)
      Dim ser As System.Xml.Serialization.XmlSerializer
      Dim facturas As New SuministroLRFacturasEmitidas
      ser = New System.Xml.Serialization.XmlSerializer(facturas.GetType())
      facturas = CType(ser.Deserialize(reader), SuministroLRFacturasEmitidas)
esto me dara error al serializarlo, ¿Por qué?: porque el nodo raiz de alta_factura.xml es
Código:
<soapenv:Envelope xmlns:soapenv="*://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="*://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://*.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
Pero el nodo raiz que admite un objeto tipo SuministroLRFacturasEmitidas es <siiLR:SuministroLRFacturasEmitidas>. Es decir que si generamos el xml por otros metodos distintos del uso de Objetos, no debemos poner ese primer nodo, si despues lo queremos enviar a AEAT de la forma
Código:
      Dim resul As RespuestaLRFEmitidasType
      resul = proxy.SuministroLRFacturasEmitidas(facturas)
Espero sea de ayuda

P.D. donde pongo * me refiero a un enlace (No tengo permiso para poner enlaces de forma normal)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4170 Hace 2 Semanas 17:29:05
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


La franja horaria es GMT +2. Ahora son las 18:43:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi