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 25-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
buenos días a todos !

Soy Jesús (alias Seccion31 alias seccion_31) menciono dos alias porque me ha sido imposible recuperar mi registro de 2004...

En fin... agradecer a todos los que estais en el foro vuestra importante labor, y comentar que SI, que yo también soy uno de los afectados de la SII.

Estoy absolutamente perdido con el SOAP... y tengo un monton de dudas.

Querria compartir con vosotros alguna de ellas:

¿ Solo hay que enviar facturas emitdas / recibidas?

¿Es posible enviar los registros de facturas emitidas / recibidas en formato Excel (ó XML) desde la web de la AEAT?

¿Sabeis si es posible hacer pruebas?

He preguntado a hacienda via email, pero todavía no me han dicho nada.

En fin...

vamos a empezar con este tema, y lo que vaya experimentando os lo comunicare.

Saludos cordiales

Jesús
Responder Con Cita
  #2  
Antiguo 25-01-2017
Avatar de keys
keys keys is online now
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.048
Poder: 22
keys Va por buen camino
Hola

¿ Solo hay que enviar facturas emitdas / recibidas?
En prinicipio hay que enviar cuatro libros
Libro registro de Facturas Expedidas.
Libro registro de Facturas Recibidas.
Libro registro de Bienes de Inversión.
Libro registro de Determinadas Operaciones Intracomunitarias.

Es una especie de modelo 340.


¿Es posible enviar los registros de facturas emitidas / recibidas en formato Excel (ó XML) desde la web de la AEAT?
No. Solo se pueden enviar mediante un fichero xml con la estructura definida por la aeat.

¿Sabeis si es posible hacer pruebas?
Se supone que si se pueden hacer pruebas pero yo por lo menos no he llegado a ese punto, estoy en el paso de generar lo xml.

En la página de la AEAT tienes mas información sobre el modelo y las especificaciones técnicas. Te pongo el enlace.

http://www.agenciatributaria.es/AEAT...VA__SII_.shtml
Responder Con Cita
  #3  
Antiguo 25-01-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.476
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por keys Ver Mensaje
¿Sabeis si es posible hacer pruebas?
Se supone que si se pueden hacer pruebas pero yo por lo menos no he llegado a ese punto, estoy en el paso de generar lo xml.
Según he podido ver se puede definir en el "port" del componente HTTPRIO un puerto para pruebas llamado 'SuministroFacturasPruebas'. Esto se cambia al principio de la función GetiiSOAP:

Código Delphi [-]
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/SuministroInmediatoInfo.wsdl';
  defURL  = 'http://schemas.xmlsoap.org/wsdl/';
  defSvc  = 'siiService';
  defPrt  = 'SuministroFacturasPruebas';
.....

Saludos
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 25-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
hola !

si es posible hacer pruebas....

he puesto en marcha el excelente ejemplo que habéis posteado. Lo he modificado levemente para encontrar los certificados digitales instalados. y SI: hay un puerto para hacer pruebas, que es el que estoy usando...

pero me devuelve este error:

código 102. Server returned wrong cipher suite for sesión ...

y ahí estamos.

y ahora sin tocar nada, me da este error:

El titular en la cabecera NO esta identificado... NIF tu NIF ... etc...

lo cual es una buena señal.


Pienso (pero no tengo mucha ida) que una vez establecida la conexión con el servidor (es decir, que el ejemplo funcione y responda algo lo que sea....) lo mas simple seria buscar la función (si es que existe) que envía el XML y esperar el resultado.

Edito de nuevo:

Visto lo visto básicamente el problema esta en saber que datos hay que enviar y donde localizarlos en el array: ARegistroLRFacturasEmitidas
Con lo que no haría falta el XML y aunque parezca mentira yo creo que seria mas cómodo... (creo).

Última edición por seccion_31 fecha: 25-01-2017 a las 10:29:40. Razón: mas info...
Responder Con Cita
  #5  
Antiguo 25-01-2017
Avatar de keys
keys keys is online now
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.048
Poder: 22
keys Va por buen camino
Hola. Ya he llegado al punto de poder enviar el fichero, he seguido el ejemplo que han subido pero a la hora de hacer llamar a la función de envío me sale este error.

'Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml"

Me pasa tanto en mi proyecto como en el de ejemplo. No se por que puede ser, alguien me puede ayudar.

He probado con los datos que vienen en el ejemplo y con estos, pero en los dos casos me devuelve el mismo error.

defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl';
defURL = 'https://www1.agenciatributaria.gob.es/wlpl/SSII-FACT/ws/SiiFactV1PSOAP';
defSvc = 'siiService';
defPrt = 'SuministroFacturasPruebas';


Por otra parte el poder generar el xml directamente puede ser una buena opción ya que la AEAT sacará una opción de poder enviar el xml a través de la página web de ellos sin web services ni nada. Será para empresas que tienen poco volumen de facturas.
Responder Con Cita
  #6  
Antiguo 25-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
¿ seguro que sacara esa opción para enviar el XML (y cuando?) ?

Modificando el ejemplo anterior, estoy a punto de poder completar el envío de una factura.... pero cuando te falta algún campo los errores que saca son imprecisos.

Ahora mismo me dice que me falta la "contraparte" pero la estoy enviando, ya creo tenerlo bastante completo.... en cuanto lo complete os lo posteare, a ver si lo consigo.

En mi caso si voy bien haría las dos cosas...
Responder Con Cita
  #7  
Antiguo 25-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
Cita:
'Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml"
Ese error creo que te lo saca... (creo) por usar un certificado que no estaba bien. Yo también me lo vi al principio.
Responder Con Cita
  #8  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
¿Alguien tiene un ejemplo del desglose de una factura recibida? Pensé que no me costaria nada adaptar el de una factura emitida pero tengo problemas creando el desglose de la factura e IVAs, gracias.

PD: Me refiero al código en C, .net, delphi o lo que sea, el XML ya lo tengo claro.
Responder Con Cita
  #9  
Antiguo 10-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.476
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por inyu Ver Mensaje
¿Alguien tiene un ejemplo del desglose de una factura recibida? Pensé que no me costaria nada adaptar el de una factura emitida pero tengo problemas creando el desglose de la factura e IVAs, gracias.

PD: Me refiero al código en C, .net, delphi o lo que sea, el XML ya lo tengo claro.
Hola.

No tengo ningún ejemplo de facturas recibidas pero te paso mi parte del código que las envía, imagino que te servirá de ejemplo aunque todavía no está cerrado con todos los tipos de facturas y eso.

Código Delphi [-]
  try
    ASuministroLRFacturasRecibidas := SuministroLRFacturasRecibidas.Create;
    ASuministroLRFacturasRecibidas.Cabecera := CabeceraSii.Create;

    // DATOS:
    ASuministroLRFacturasRecibidas.Cabecera.IDVersionSii:=VersionSiiType(0);       // 0.1
    ASuministroLRFacturasRecibidas.Cabecera.titular := PersonaFisicaJuridicaESType.Create;
    ASuministroLRFacturasRecibidas.Cabecera.Titular.NombreRazon:=Bd.BuscaValor('DATOSEMPRESA','NOMBRE','  ','');    // NOMBRE DEL PRESENTADOR
    ASuministroLRFacturasRecibidas.Cabecera.Titular.NIF:=Bd.BuscaValor('DATOSEMPRESA','MNIF','','');              // CIF del PRESENTADOR (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO)
    // (0) A0 - ALTA
    // (1) A1-  MODIFICACION
    // (2) A4-  MODIFICACION REGIMEN VIAJEROS
    if FormSii.RadioButton1.Checked then begin
      ASuministroLRFacturasRecibidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0);
    end else if FormSii.RadioButton2.Checked then begin
      ASuministroLRFacturasRecibidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(1);
    end;

    //Se crean todas las estructuras de datos de la consulta
    SetLength(ARegistroLRFacturasRecibidas, M);

    for N := 0 to M do begin
      FormSII.PBProceso.Position := FormSII.PBProceso.Position+1;
      If Grid.ValorCeldaPorCampoYFila('ENVIAR',N+1)='X' then begin
        FormSII.Label5.Caption := 'Factura: '+Grid.ValorCeldaPorCampoYFila('FACTURA',N+1);
        Application.ProcessMessages;
        // Busco registro en tabla de iva
        Tabla.FindKey([Grid.ValorCeldaPorCampoYFila('CODIGO',N+1)]);
        // Busco registro en tabla de cuentas
        TablaCuentas.FindKey([Tabla.FieldByName('CUENTA').AsString]);
        ARegistroLRFacturasRecibidas[N]:=LRfacturasRecibidasType.Create;
        ARegistroLRFacturasRecibidas[N].IDFactura:=IDFacturaRecibidaType.create;
        ARegistroLRFacturasRecibidas[N].FacturaRecibida:=FacturaRecibidaType.create;               // <- clase para tipo de factura
        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo:=PeriodoImpositivo.Create;

        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo.Ejercicio:=Bd.BuscaValor('DATOSEMPRESA','MEJERCICIO','','');  //  AÑO
        // Periodo
        P:=StrToInt(FormatDateTime('MM',StrToDate(Grid.ValorCeldaPorCampoYFila('FECHA',N+1))));
        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo.periodo  :=TipoPeriodoType(P-1);          //  PERIODO 01- ENERO ... 12-DICIEMBRE  (0A - ANUAL )
        ARegistroLRFacturasRecibidas[N].IDFactura.IDEmisorFactura:= IDEmisorFactura4.Create;
        ARegistroLRFacturasRecibidas[N].IDFactura.IDEmisorFactura.NIF  := Tabla.FieldByName('CIF').AsString;                         // NUESTRO NIF, COMO EMISOR = TITULAR LIBRO REGISTRO = CERTIFICADO DIGITAL
        if FormSII.CheckBox1.Checked then
          ARegistroLRFacturasRecibidas[N].IDFactura.NumSerieFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FACTURA',N+1)+'/'+FormatDateTime('YYYYMMDDHHMMSS'+IntToStr(N),now)
        else
          ARegistroLRFacturasRecibidas[N].IDFactura.NumSerieFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FACTURA',N+1); // Numero de factura

        ARegistroLRFacturasRecibidas[N].IDFactura.FechaExpedicionFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FECHA',N+1);                 // FECHA DE EXPEDICION FACTURA    (dd-mm-yyyy)
        if Tabla.FieldByName('TOTAL').AsCurrency<0 then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.tipofactura:=ClaveTipoFacturaType(2);      //  RECTIFICATIVA
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.TipoRectificativa := ClaveTipoRectificativaType(1);
        end else begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.tipofactura:=ClaveTipoFacturaType(0);      //  F1- FACTURA / F2 TICKET / ...
        end;

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.FechaRegContable := Tabla.FieldByName('FECHAE').AsString;
        cAux:=Tabla.FieldByName('BASE1').AsCurrency+Tabla.FieldByName('BASE2').AsCurrency+Tabla.FieldByName(  'BASE3').AsCurrency;
        sAux:=CurrToStr(cAux);
        AregistroLRFacturasRecibidas[N].FacturaRecibida.CuotaDeducible := StrTran(sAux,',','.');

        if Tabla.FieldByName('TIPOSII').AsString<>'' then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(Tabla.  FieldByName('TIPOSII').AsInteger-1);  // 01-REGIMEN COMUN / 02-BIENES USADOS... 15-EXPORTACION
        end else begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0);  // 01-REGIMEN COMUN / 02-BIENES USADOS... 15-EXPORTACION
        end;

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.ImporteTotal:=StrTran(Tabla.FieldByName('TOTAL').AsString,',','.');                       //  TOTAL (opcional)
        ARegistroLRFacturasRecibidas[N].FacturaRecibida.descripcionOperacion:='Su Factura';   //  DESCRIPCION FACTURA (LIBRE)

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte:=PersonaFisicaJuridicaType.Create;  // CREAR PROVEEDOR:
        ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NombreRazon:=Tabla.FieldByName('NOMBRE').AsString;           // NOMBRE DEL PROVEEDOR

        try
          iAux:=Tabla.FieldByName('TIPOSII').AsInteger;
        except
          iAux:=1;
        end;


        if (Tabla.FieldByName('TIPO').AsString='9') or (Tabla.FieldByName('TIPO').AsString='7') or (Tabla.FieldByName('TIPO').AsString='A') then begin
          If Tabla.FieldByName('TIPO').AsString='7' then begin   // Inversion Sujeto pasivo
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIF:=Tabla.FieldByName('CIF').AsString;                      // NIF DEL PROVEEDOR
          end;
        end else begin
          // CONTRAPARTE:
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIFRepresentante:='';
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIF:=Tabla.FieldByName('CIF').AsString;                      // NIF DEL PROVEEDOR
        end;
       // EMPEZAMOS CON LOS DESGLOSES (IVAs)
        if (Tabla.FieldByName('IVA1').AsCurrency<>0) and (Tabla.FieldByName('IVA2').AsCurrency<>0) and (Tabla.FieldByName('IVA3').AsCurrency<>0) then begin
          nIvas:=3;
        end else if (Tabla.FieldByName('IVA1').AsCurrency<>0) and (Tabla.FieldByName('IVA2').AsCurrency<>0) then begin
          nIvas:=2;
        end else if (Tabla.FieldByName('IVA1').AsCurrency<>0) then begin
          nIvas:=1;
        end else begin
          nIvas:=0;
        end;
        if nIvas>0 then begin
          setLength(IVAS,nIvas);                       // numeros de iVAs en factura
          Z:=0;
          for zz := 0 to nIvas-1 do begin
            if Tabla.FieldByName('IVA'+IntToStr(ZZ+1)).AsCurrency<>0 then begin
              IVAS[zz]:=DetalleIVARecibidaType.create;             // CREAR primer IVA
              IVAS[zz].BaseImponible:=StrTran(Tabla.FieldByName('BASE'+IntToStr(ZZ+1)).AsString,',','.');            // BASE IMPONIBLE
              IVAS[zz].TipoImpositivo:=StrTran(Tabla.FieldByName('TIVA'+IntToStr(ZZ+1)).AsString,',','.');            // IVA %
              IVAS[zz].CuotaSoportada:=StrTran(Tabla.FieldByName('IVA'+IntToStr(ZZ+1)).AsString,',','.');          // IMPORTE IVA
            end;
          end;
        end;

        //   opcion 1
        if nIvas>0 then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.desgloseFactura:=DesgloseFacturaRecibidasType.create;
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.desglosefactura.desgloseIVA:=IVAS;
        end else begin

          if (Tabla.FieldByName('TIPO').AsString='7') then begin
            setLength(IVAS,1);                       // numeros de iVAs en factura
            IVAS[0]:=DetalleIVARecibidaType.create;             // CREAR primer IVA
            IVAS[0].BaseImponible:='0';
            IVAS[0].TipoImpositivo:='0';
            IVAS[0].CuotaSoportada:='0';
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.DesgloseFactura :=DesgloseFacturaRecibidasType.create;
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.DesgloseFactura.DesgloseIVA := IVAS;
          end else if (Tabla.FieldByName('TIPO').AsString='9') then begin

          end else if (Tabla.FieldByName('TIPO').AsString='7') or (Tabla.FieldByName('TIPO').AsString='A') then begin

          end else begin
          end;

        end;
      end;
    end;
    //se añade el array de facturas creado anteriormente
    ASuministroLRFacturasRecibidas.RegistroLRFacturasRecibidas:=ARegistroLRFacturasRecibidas;

   try

      FormSII.Label5.Caption := 'Enviando paquete de datos....';
      Application.ProcessMessages;
      // se hace la llamada a la funcion suministrada por el WS
      result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasRecibidas(ASuministroLRFacturasRecibidas);

      //mostrar los resultados devueltos por la llamada
      for i := low(result.RespuestaLinea) to High(result.RespuestaLinea) do begin
        with result.RespuestaLinea[i] do begin
//          sAux:='factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor;
          sAux:='Ok. Factura: '+IDFactura.NumSerieFacturaEmisor +' '+DateTimeToStr(now);
          //si el estado no es correcto, se muestran los errores
          if EstadoRegistro <> EstadoRegistroType(0) then begin
            sAux:='Error no.: ' + InttoStr(CodigoErrorRegistro);
            sAux:=sAux+' '+DescripcionErrorRegistro;
          end;
        end;
        Grid.ValorCeldaPorCampoYFila('RESULTADO',i+1, sAux);
        // Marco tabla y grid principal
        Tabla.FindKey([Grid.ValorCeldaPorCampoYFila('CODIGO',i+1)]);
        Bd.RegistroEdita(Tabla);
        // Resultados:
        if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(0) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '0');
          Tabla.FieldByName('RESULTII').AsString:='0';
        end else if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(2) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '1');
          if Tabla.FieldByName('RESULTII').AsString<>'2' then
            Tabla.FieldByName('RESULTII').AsString:='1';
        end else if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(1) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '2');
          Tabla.FieldByName('RESULTII').AsString:='2';
        end;
        Tabla.FieldByName('CSVII').AsString:=Result.csv;
        Tabla.FieldByName('RESULTADO').AsString:=sAux;
        Bd.RegistroGraba(Tabla);
      end;
    except
      On E:Exception do
        //El proceso de envio dio error
        MessageDlg(E.Message, mtError, [mbOK], 0);
    end;
  finally
    // se eliminan los objetos creados
    ASuministroLRFacturasRecibidas.Free;
    result.Free;
  end;

Saludos
__________________
Be water my friend.
Responder Con Cita
  #10  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
Gracias [newtron] pero las emitidas ya las tengo funcionando. Tengo problemas declarando el Detalle y Desglose de las facturas recibidas, y no doy en cómo adaptar esa parte de las emitidas porque no existe el "DesgloseFacturasRecibidas".
Responder Con Cita
  #11  
Antiguo 10-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.476
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por inyu Ver Mensaje
Gracias [newtron] pero las emitidas ya las tengo funcionando. Tengo problemas declarando el Detalle y Desglose de las facturas recibidas, y no doy en cómo adaptar esa parte de las emitidas porque no existe el "DesgloseFacturasRecibidas".
¿Y qué te he enviado?
__________________
Be water my friend.
Responder Con Cita
  #12  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
¿Y qué te he enviado?
Perdona, intepreté mal tu frase "No tengo ningún ejemplo de facturas recibidas pero te paso mi parte del código que las envía", deduje que te referias a que no tenias recibidas y sólo tenias enviadas, y no era eso ><

Ya lo he logrado, gracias por el ejemplo! Tenia un lio mental con la declaración del array de IVAs, no lo estaba haciendo bien.
Responder Con Cita
  #13  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
Bueno ahora me devuelve un error estándar el WS con un mensaje "AEAT Errores técnicos" sin especificar qué está mal pero supongo que ya daré con ello

Edit: Ya está, se me olvidó añadir el "<transport clientCredentialType="Certificate" />" en el Config para el WS de facturas recibidas, sólo lo tenia en el de emitidas.
Responder Con Cita
  #14  
Antiguo 11-07-2017
pesadillator pesadillator is offline
Registrado
NULL
 
Registrado: abr 2017
Posts: 5
Poder: 0
pesadillator Va por buen camino
Facturas sujeto pasivo

Tengo el programa funcionando con facturas emitidas y recibidas, pero ahora un cliente tiene facturas de inversión del sujeto pasivo, en delphi como se realizaría, me podríais poner un ejemplo.
Gracias
Responder Con Cita
  #15  
Antiguo 17-05-2017
dgalindosaeta dgalindosaeta is offline
Registrado
NULL
 
Registrado: may 2017
Posts: 2
Poder: 0
dgalindosaeta Va por buen camino
Error SSL/TLS en c#

Hola amigos, he visto que hay gente que está montando el proyecto en C#. Me gustaría que nos comunicásemos para sacar en conjunto el tema. Resolví el error que he leído por ahí que da:

The content type text/html of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were:

Lo he resuelto poniendo el certificado, pero ahora tengo un error de comunicación:

No se pudo establecer un canal seguro para SSL/TLS con la autoridad 'www7aeates'

Y aunque le he añadido:

Código:
using System.Net;
using System.Net.Security;

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Pero aún así no hay forma. Os pongo todo el código para que veáis:

Código:
                    System.Net.ServicePointManager.Expect100Continue = false;
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11;
                    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

                    BasicHttpBinding binding = new BasicHttpBinding();
                    binding.Name = "siiBinding";                    
                    binding.Security.Mode = BasicHttpSecurityMode.Transport;
                    //binding.Security.Mode = SecurityMode.Transport;
                    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

                    FacturasEmitidas.siiSOAPClient Servicio = new FacturasEmitidas.siiSOAPClient("SuministroFactEmitidasPruebas", new EndpointAddress("https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"));
                    Servicio.Endpoint.Binding = binding;

                    Servicio.ClientCredentials.ClientCertificate.Certificate = cFunciones.EncontrarCertificado(DatosEnvio.NombreCertificado);
                    Servicio.ClientCredentials.UseIdentityConfiguration = true;
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 4183 Hace 1 Día 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


La franja horaria es GMT +2. Ahora son las 14:16:21.


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