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 28-03-2017
Fèlix Ruiz Fèlix Ruiz is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 3
Poder: 0
Fèlix Ruiz Va por buen camino
Cita:
Empezado por Fèlix Ruiz Ver Mensaje
Hola.
Estoy desarrollando un módulo para el envío de facturas al SII. La primera fase fue que generase los ficheros XML tal como indica la AEAT en su documentación.
Ahora estoy con la fase de envío con la AEAT, pero llevo varios días intentando enviar una factura y no hay manera. A ver si me pueden ayudar...
...
Hola.

Vuelvo a subir mi caso de error, a ver si alguien me puede ayudar.
Tanto si uso mi XML y lo cargo con Deserialize, como si voy directamente por servicio WSDL, al enviar con SuministroLRFacturasEmitidas() me da el error:
"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:..."

No es problema del certificado, pero no se exactamente que puede dar el error.
Si subo el XML original que crea mi app al portal de pruebas de Hacienda, este lo lee sin problemas.
Para el Deserialize tuve que hacer una modificaciones al XML para que se cargara bien (quitar los tags de SOAP y añadir los namespaces).
Adjunto el código usado para el Serialize y el usado para el Deserialize. También adjunto los XML: el que crea mi app (pensando q se podría mandar tal cual), el que uso para el Serialize y el que he generado con Deserialize a partir de la llamada directa al WSDL. Lo vuelvo a adjuntar pq vi que no envié correctamente uno de los ficheros...

A ver si me pueden ayudar. Seguramente es una chorrada, pero no veo donde estoy fallando...
Mil gracias.
Archivos Adjuntos
Tipo de Archivo: rar Consulta club Delphi.rar (5,2 KB, 75 visitas)
Responder Con Cita
  #2  
Antiguo 28-03-2017
jmlazaro jmlazaro is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
jmlazaro Va por buen camino
Para Feliz Ruiz

Cita:
Empezado por Fèlix Ruiz Ver Mensaje
Hola.

Vuelvo a subir mi caso de error, a ver si alguien me puede ayudar.
Tanto si uso mi XML y lo cargo con Deserialize, como si voy directamente por servicio WSDL, al enviar con SuministroLRFacturasEmitidas() me da el error:
"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:..."

No es problema del certificado, pero no se exactamente que puede dar el error.
Si subo el XML original que crea mi app al portal de pruebas de Hacienda, este lo lee sin problemas.
Para el Deserialize tuve que hacer una modificaciones al XML para que se cargara bien (quitar los tags de SOAP y añadir los namespaces).
Adjunto el código usado para el Serialize y el usado para el Deserialize. También adjunto los XML: el que crea mi app (pensando q se podría mandar tal cual), el que uso para el Serialize y el que he generado con Deserialize a partir de la llamada directa al WSDL. Lo vuelvo a adjuntar pq vi que no envié correctamente uno de los ficheros...

A ver si me pueden ayudar. Seguramente es una chorrada, pero no veo donde estoy fallando...
Mil gracias.
A mí me pasaba lo mismo,si lo haces con el WSDL, modifica el App.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="siiBinding1">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>

</binding>

Espero que te funcione.

Un saludo a todos
Responder Con Cita
  #3  
Antiguo 28-03-2017
PASPAS PASPAS is offline
Miembro
 
Registrado: feb 2017
Posts: 115
Poder: 8
PASPAS Va por buen camino
Consultas al SII

Hola todas, dar la enhorabuena a este foro.
Estoy implementando el SII creando el fichero directamente en XML. Hasta ahora veo que será la mejor opción. Por ahora no estoy teniendo problemas. Mi pregunta va sobre las consultas de los envios realizados. Alguién se está peleando con este apartado??
He enviado a la AEAT si van a proporcionar una parte para la consulta desde web. Me han respondido que si pero sin ninguna aclaración.
Alguién sabe si los tiros van por lo que existe actualmente: "Cotejo de documentos" >> https://www2.agenciatributaria.gob.e...is.VisualizaSc
Por tanto se introduce el CSV en el formulario y se obtiene el resultado del envío
o por otro lado
existirá un portal de acceso para ver listado de todos los envios realizados( tipo Maestro - Detalle).
Lo necesito por saber como de cara a los clientes tengo que indicar el procedimiento de consulta. Ya que quiero ver la posibilidad de mostrar la página web de la AEAT para mayor seguridad en el envío.
Responder Con Cita
  #4  
Antiguo 28-03-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por PASPAS Ver Mensaje
Hola todas, dar la enhorabuena a este foro.
Estoy implementando el SII creando el fichero directamente en XML. Hasta ahora veo que será la mejor opción. Por ahora no estoy teniendo problemas. Mi pregunta va sobre las consultas de los envios realizados. Alguién se está peleando con este apartado??
He enviado a la AEAT si van a proporcionar una parte para la consulta desde web. Me han respondido que si pero sin ninguna aclaración.
Alguién sabe si los tiros van por lo que existe actualmente: "Cotejo de documentos" >> https://www2.agenciatributaria.gob.e...is.VisualizaSc
Por tanto se introduce el CSV en el formulario y se obtiene el resultado del envío
o por otro lado
existirá un portal de acceso para ver listado de todos los envios realizados( tipo Maestro - Detalle).
Lo necesito por saber como de cara a los clientes tengo que indicar el procedimiento de consulta. Ya que quiero ver la posibilidad de mostrar la página web de la AEAT para mayor seguridad en el envío.
Para consultas manuales ve a https://www7.aeat.es/PRE-Exteriores/...formacion.html

Después elige la opción "Cliente de web service para el entorno de pruebas"

Saludos,
Responder Con Cita
  #5  
Antiguo 29-03-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.037
Poder: 22
keys Va por buen camino
Buenos días. Por lo que se la hacienda va a poner una pagina de consulta donde poder comprobar todo lo presentado y su estado. Como dice el CMB ya lo tienes en el entorno de pruebas. Otra opción es desarrollarlo cada uno ya que la hacienda proporciona un webservice con el que se pueden hacer consultas y retorna la información presentada.

Un Saludo.
Responder Con Cita
  #6  
Antiguo 29-03-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.037
Poder: 22
keys Va por buen camino
Hola a Todos. Ahora voy yo con una duda o problema por si le ha pasado a alguien.

Estomos desarrollando en delphi y a al hora de presentar mostramos todos los certificados disponibles en el equipo. En el equipo teníamos tres certificados, los cuales nos salian a la hora de obtenerlos. Uno de ellos estaba caducado y lo eliminamos del sistema, es decir ahora solo hay dos. Pero a la hora de obtener en delphi cuantos certificados hay me siguen saliendo tres, los dos que me quedan y uno en blanco.

A alguien le ha pasado esto o sabe por que es. La lista de certificados la estamos obteniendo de la siguiente forma.

Código Delphi [-]
   

function ObtenerCertificados(aList:TStringList):integer;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  sNombre: String;
begin
  aList.Clear;
  Result := 0;
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then begin
     PrevContext := nil;
     CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
     while CurContext <> nil do begin
       sNombre := '';
       cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
       if cbSize > 0 then
       begin
          SetLength(sNombre, cbSize-1);
          CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(sNombre), cbSize);
          aList.Add(sNombre);
       end;
       PrevContext := CurContext;
       CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
     end;
  end;
  result:=aList.count;
end;

Un Saludo.
Responder Con Cita
  #7  
Antiguo 29-03-2017
jacju jacju is offline
Registrado
NULL
 
Registrado: jun 2013
Posts: 8
Poder: 0
jacju Va por buen camino
Buenas a tod@s, lo primero felicitaros y agradeceros la creación de este tema, después de leerme todo y practicar algunos ejemplos
el resultado es que puedo enviar los ficheros que genero y los graba en la web pero al hacer la llamada:

result := GetsiiSOAP.SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

me devuelve este error:

El sistema no puede encontrar el archivo especificado. - URL: https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP

Lo curioso es que en facturas recibidas también me da error, pero si que las graba en la web

Estoy desarrollando en Delphi este sistema y necesito un poco de ayuda, gracias

Un Saludo.
Responder Con Cita
  #8  
Antiguo 29-03-2017
PepCat PepCat is offline
Miembro
 
Registrado: mar 2017
Posts: 96
Poder: 8
PepCat Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Hola a Todos. Ahora voy yo con una duda o problema por si le ha pasado a alguien.

Estomos desarrollando en delphi y a al hora de presentar mostramos todos los certificados disponibles en el equipo. En el equipo teníamos tres certificados, los cuales nos salian a la hora de obtenerlos. Uno de ellos estaba caducado y lo eliminamos del sistema, es decir ahora solo hay dos. Pero a la hora de obtener en delphi cuantos certificados hay me siguen saliendo tres, los dos que me quedan y uno en blanco.

A alguien le ha pasado esto o sabe por que es. La lista de certificados la estamos obteniendo de la siguiente forma.

Código Delphi [-]
   

function ObtenerCertificados(aList:TStringList):integer;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  sNombre: String;
begin
  aList.Clear;
  Result := 0;
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then begin
     PrevContext := nil;
     CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
     while CurContext <> nil do begin
       sNombre := '';
       cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
       if cbSize > 0 then
       begin
          SetLength(sNombre, cbSize-1);
          CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(sNombre), cbSize);
          aList.Add(sNombre);
       end;
       PrevContext := CurContext;
       CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
     end;
  end;
  result:=aList.count;
end;

Un Saludo.
Hola Keys,

Después de ver todos los problemas que se han comentado en este foro con el envió de más de 13 facturas con la librería de certificados que incluye Delphi he optado por utilizar la librería CAPICOM y abrir directamente el fichero con el certificado.

Código Delphi [-]

procedure SetCertificate(const FileName, Password: string; var Data: Pointer);
var
  Cert : ICertificate2;
  CertContext : ICertContext;
  PCertContext : PCCERT_CONTEXT;
begin
  try
    Cert := CoCertificate.Create;
  except
    on E: EOleSysError  do
      raise Exception.Create('CAPICOM.DLL is not registered')
  end;

  Cert.Load(FileName, Password, CAPICOM_KEY_STORAGE_EXPORTABLE, CAPICOM_LOCAL_MACHINE_KEY);
  CertContext := Cert as ICertContext;
  CertContext.Get_CertContext(Integer(PCertContext));
  if InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False then
    raise Exception.Create ( 'Error setting "' + FileName + '" certificate in web service' )
end;

procedure TfEmitidas.emitidasHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
begin
  SetCertificate('C:\Cetificados\FicheroConCertificado.p12', '1234', Data);
end;
Responder Con Cita
  #9  
Antiguo 12-04-2017
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Hola a Todos. Ahora voy yo con una duda o problema por si le ha pasado a alguien.

Estomos desarrollando en delphi y a al hora de presentar mostramos todos los certificados disponibles en el equipo. En el equipo teníamos tres certificados, los cuales nos salian a la hora de obtenerlos. Uno de ellos estaba caducado y lo eliminamos del sistema, es decir ahora solo hay dos. Pero a la hora de obtener en delphi cuantos certificados hay me siguen saliendo tres, los dos que me quedan y uno en blanco.

A alguien le ha pasado esto o sabe por que es. La lista de certificados la estamos obteniendo de la siguiente forma.

Código Delphi [-]
   

function ObtenerCertificados(aList:TStringList):integer;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  sNombre: String;
begin
  aList.Clear;
  Result := 0;
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then begin
     PrevContext := nil;
     CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
     while CurContext <> nil do begin
       sNombre := '';
       cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
       if cbSize > 0 then
       begin
          SetLength(sNombre, cbSize-1);
          CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(sNombre), cbSize);
          aList.Add(sNombre);
       end;
       PrevContext := CurContext;
       CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
     end;
  end;
  result:=aList.count;
end;

Un Saludo.
Para eliminar del sistema certificados caducados
-Pincha en Inicio/Ejecutar.
-Escribe: mmc y pulse "Aceptar".
-En la consola pulse en el menú Archivo o Consola (depende del sistema operativo). Selecciona "agregar o quitar complemento".
-En la ventana que aparece pulsa el botón "Agregar". Pinche en "certificados".
Agregar.
-Selecciona "Mi cuenta de usuario" en caso de no estar marcada, ya que suele estar marcada por defecto.
-Finalizar.
-Pulsa "cerrar" en la ventana que tiene delante y "aceptar" en la que aparecerá a continuación. Volverá a la ventana de Raíz de Consola.
-Podrás comprobar que ahora en la parte izquierda de la ventana tienes una nueva opción que se llama "Certificados" y que se puede desplegar.
-Despliega la carpeta "Certificados" y entre en la que dice "Personal". En la parte derecha aparecerán tantos certificados como tenga instalados en el navegador, incluidos los que no vea o tenga caducados.
-Pulsa encima del que desee eliminar con el botón derecho del ratón y selecciona "Eliminar".
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 4175 Hace 2 Días 16:17:35
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 09:33:30.


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