Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #2481  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Hola

¿Cómo configuráis el componente HTTPRIO para hacer el envío? He intentado poner "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" en "WSDLLocation" pero me da error al elegir el Port y Service
También lo he puesto en URL con el mismo resultado.

Para TicketBAI utilizaba el componente NetHTTPClient, pero el httprio no lo he usado nunca.

Viendo el proyecto de ejemplo que hay en el segundo post del hilo, hay que hacerlo de esta manera:
Código Delphi [-]
    HTTPRIO1.Tag := 0;
    res:=   RespuestaBaseType.Create;
    res:=   GetsfPortTypeVerifactu( False, '', HTTPRIO1 ).RegFactuSistemaFacturacion( veriFactu );

Pero no sé donde debo indicar la url, puerto, etc.

Última edición por Neftali [Germán.Estévez] fecha: 30-09-2024 a las 12:38:05. Razón: Utilizar TAG's en el código
  #2482  
Antiguo 30-09-2024
richidemola richidemola is offline
Miembro
 
Registrado: sep 2024
Posts: 32
Poder: 0
richidemola Va por buen camino
Dos cosillas, la primera sobre la huella, tenéis que generarla en mayúsculas, si la generáis en minúsculas el web service dirá que la huella no es correcta.

Y la otra es que me da el siguiente error al enviar el fichero, que me lo acepta pero con errores, El valor del campo FechaHoraHusoGenRegistro no está dentro del umbral establecido sobre la fecha del sistema de la AEAT, uso este valor 2024-09-30T09:48:46+01:00 y es justo la hora en la que se generó la huella según mi ordenador, pero no termino de entender porque me da ese error, le pasa a alguien más?
  #2483  
Antiguo 30-09-2024
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
HTTPRIO1.Tag := 0;
res:= RespuestaBaseType.Create;
res:= GetsfPortTypeVerifactu( False, '', HTTPRIO1 ).RegFactuSistemaFacturacion( veriFactu );
Eso es de el ejemplo que publique.

Ahora lo estoy modificando como digo para que funcione en el entorno de pruebas.

A ver:

Puedes descargar el WSDL y guardarlo en fichero.
Coges el fichero, lo colocal en WSDLLocation y voila puedes elegir el puerto y servicio.
Modificar la linea en el codigo a true:

res:= GetsfPortTypeVerifactu(true, '', HTTPRIO1 ).RegFac ....

Pero cuando envio, me dice, ponga el puerto que ponga, o lo que ponga:

Error al realizar el envío; (ESOAPHTTPException)-Unable to retrieve the URL endpoint for Service/Port 'sfVerifactu'/'SistemaVerifactuPruebas' from WSDL 'c:\proyectos\VeriFactu2\SistemaFacturacion.wsdl'

Puedes colocar la URL:
https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP
No elegir puerto
y dejar la linea del codigo a false:

res:= GetsfPortTypeVerifactu(false, '', HTTPRIO1 ).RegFac ....

pero entonces me devuelve:

Error al realizar el envío; (ERemotableException)-<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault>

y Ahi estoy parado.

Como he dicho, mi intencion es modificar ese ejemplo y dejarlo funcional, a ver si alguien me da una mano.

Saludos !
  #2484  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Hola, seccion_31...

Exactamente, esos son los errores que estoy obteniendo, por eso no entendía cómo hay gente que ya ha podido hacer envíos. Quizás estén usando otro método para el envío.

Quizás con el componente TNetHTTPClient se pueda hacer también, pero para eso necesitaría guardar antes el XML en un archivo.

En fin, a ver si alguien lo consigue con cualquiera de los dos componentes.

Gracias!

Cita:
Empezado por seccion_31 Ver Mensaje
Eso es de el ejemplo que publique.

Ahora lo estoy modificando como digo para que funcione en el entorno de pruebas.

A ver:

Puedes descargar el WSDL y guardarlo en fichero.
Coges el fichero, lo colocal en WSDLLocation y voila puedes elegir el puerto y servicio.
Modificar la linea en el codigo a true:

res:= GetsfPortTypeVerifactu(true, '', HTTPRIO1 ).RegFac ....

Pero cuando envio, me dice, ponga el puerto que ponga, o lo que ponga:

Error al realizar el envío; (ESOAPHTTPException)-Unable to retrieve the URL endpoint for Service/Port 'sfVerifactu'/'SistemaVerifactuPruebas' from WSDL 'c:\proyectos\VeriFactu2\SistemaFacturacion.wsdl'

Puedes colocar la URL:
https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP
No elegir puerto
y dejar la linea del codigo a false:

res:= GetsfPortTypeVerifactu(false, '', HTTPRIO1 ).RegFac ....

pero entonces me devuelve:

Error al realizar el envío; (ERemotableException)-<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault>

y Ahi estoy parado.

Como he dicho, mi intencion es modificar ese ejemplo y dejarlo funcional, a ver si alguien me da una mano.

Saludos !
  #2485  
Antiguo 30-09-2024
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
nosotros estamos usando lo mismo que utilizamos para el SII (que al final es muy parecido, SOAP, WSDL...etc)

Código Delphi [-]
direccion_envio := 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP';
SistemaFacturacion.RespuestaRegFactuSistemaFacturacion(Respuesta) := SistemaFacturacion.GetsfPortTypeVerifactu(false, direccion_envio, HTTPRIO1).RegFactuSistemaFacturacion(ARegFactuSistemaFacturacion);

Ya jugando con el beforeexecute y afterexecute del httprio te puedes guardar el xml que se envía y el xml que se recibe de respuesta.
EL objecto ARegFactuSistemaFacturacion es donde se han metido todos los nodos etc
Al componente HTTPRIO1 se le ha asignado previamente el certificado con el cual se envía
  #2486  
Antiguo 30-09-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 332
Poder: 5
edari Va por buen camino
http://worldtimeapi.org/api/timezone/Europe/Madrid.txt

Buenas a todos

Yo tengo implementado el curl a la worldtimeapi para intentar proteger el cambio de fecha y hora en el sistema local...

Hago el típico

curl "http://worldtimeapi.org/api/timezone/Europe/Madrid.txt" > fichero.TXT

Yo lo tengo puesto en un proceso dentro del menú principal de mi ERP que está siempre activo y lanzándose ya que en mi cabeza sonaba como la mejor manera de protegerme para el tema de los flujos y que no cambien la fecha del ordenador...

El problema es que llega un momento que la llamada se "satura" y en vez de dar los datos que tiene que dar el fichero.TXT devuelve:

"Too Many Requests: please refer to our fair-use policy in the FAQs."

Lo cual obviamente no es bueno...


Cómo hacéis vosotros? En qué punto hacéis la llamada a ese curl? Solo en el momento de generar los xml o como yo desde el menú inicial y corriendo siempre?


Y de todas maneras, más importante qué donde lo hagáis es si esta llamada con envíos grandes se va a "saturar" siempre y nos va a dar más problemas que ventajas...


Puff


Gracias
  #2487  
Antiguo 30-09-2024
Logan05 Logan05 is offline
Miembro
 
Registrado: jun 2024
Posts: 103
Poder: 2
Logan05 Va por buen camino
Buenas tardes grupo,

¿alguien puede compartir un XML que medio funcione para hacer pruebas?...Estoy super atrancado con la rutina de envío
Gracias!!!
  #2488  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Muchas gracias. Fallo mío al no ver la similitud con el SII. Aún así, me hubiera costado llegar, así que gracias.

Obtengo el siguiente error al hacer el envío, y creo que es por el tipo de SOAP que utilizo o la forma de crear el XML:

<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault>

No sé si habrá que hacer como con TicketBAI, que había que modificar manualmente el XML antes de enviarlo para que utilizara unos literales específicos y no el que genera Delphi?


Cita:
Empezado por pablog2k Ver Mensaje
nosotros estamos usando lo mismo que utilizamos para el SII (que al final es muy parecido, SOAP, WSDL...etc)

Código Delphi [-]
direccion_envio := 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP';
SistemaFacturacion.RespuestaRegFactuSistemaFacturacion(Respuesta) := SistemaFacturacion.GetsfPortTypeVerifactu(false, direccion_envio, HTTPRIO1).RegFactuSistemaFacturacion(ARegFactuSistemaFacturacion);

Ya jugando con el beforeexecute y afterexecute del httprio te puedes guardar el xml que se envía y el xml que se recibe de respuesta.
EL objecto ARegFactuSistemaFacturacion es donde se han metido todos los nodos etc
Al componente HTTPRIO1 se le ha asignado previamente el certificado con el cual se envía
  #2489  
Antiguo 30-09-2024
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Muchas gracias. Fallo mío al no ver la similitud con el SII. Aún así, me hubiera costado llegar, así que gracias.

Obtengo el siguiente error al hacer el envío, y creo que es por el tipo de SOAP que utilizo o la forma de crear el XML:

<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault>

No sé si habrá que hacer como con TicketBAI, que había que modificar manualmente el XML antes de enviarlo para que utilizara unos literales específicos y no el que genera Delphi?
Estoy igual que Espinete

Si, igual se puede modificar el XML antes del envio, en el evento before.... es lo que igual me toca probar, pero hay foreros que estan enviando sin mas, si fueran tan amables ¿de publicar el metodo o algun resumen?.

Saludos !
  #2490  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Yo tuve que importar el wsdl con la opción SOAP 1.2, porque con la opción "Automatic" no podía compilar.

¿Quizás sea por eso?

Estoy usando Delphi 11
  #2491  
Antiguo 30-09-2024
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
justo me ha pasado lo mismo hace poco, probablemente os haya pasado al importar las librerías desde delphi, elegir SOAP 1.2
tenéis que ir a la librería que se os ha generado , que seguramente ponga esto:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioSOAP12);
y hay que cambiarlo el ioSOAP12 por ioDocument

quiza hay que añadir alguna variable mas, os aconsejo hacer la importación eligiendo SOAP 1.1 de nuevo y ver las diferencias
  #2492  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Entonces lo que dices es que al importar el wsdl es mejor usar la opción SOAP 1.1 en vez de la 1.2? O dices de importar la 1.2 pero cambiar luego cosas a mano en el .pas que se genera?

He importado como SOAP 1.1 pero no puedo compilar. En el .pas generado hay strings de más de 255 caracteres.

Podría resolverlo a mano editando el .pas, pero no sé si me estoy metiendo en un berenjenal innecesario y hay otra forma de hacerlo que no sea esa.




Cita:
Empezado por pablog2k Ver Mensaje
justo me ha pasado lo mismo hace poco, probablemente os haya pasado al importar las librerías desde delphi, elegir SOAP 1.2
tenéis que ir a la librería que se os ha generado , que seguramente ponga esto:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioSOAP12);
y hay que cambiarlo el ioSOAP12 por ioDocument

quiza hay que añadir alguna variable mas, os aconsejo hacer la importación eligiendo SOAP 1.1 de nuevo y ver las diferencias
  #2493  
Antiguo 30-09-2024
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
lo de la opción SOAP 1.1 lo digo por el problema que hemos tenido de las cabeceras, ya que el SOAP 1.1 te pone esta:
http://schemas.xmlsoap.org/soap/envelope/
y el 1.2 te pone esta:
http://www.w3.org/2003/05/soap-envelope
por lo que deduzco que hay que utilizar SOAP 1.1

Edit: Lo de los strings los puedes partir en 2 y luego unirlos.
Yo estoy probando con un 'mix', con la importación en 1.2 , pero modificando las cosas que comenté anteriormente para que ponga la cabecera SOAP correspondiente
  #2494  
Antiguo 30-09-2024
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
justo me ha pasado lo mismo hace poco, probablemente os haya pasado al importar las librerías desde delphi, elegir SOAP 1.2
tenéis que ir a la librería que se os ha generado , que seguramente ponga esto:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioSOAP12);
y hay que cambiarlo el ioSOAP12 por ioDocument

quiza hay que añadir alguna variable mas, os aconsejo hacer la importación eligiendo SOAP 1.1 de nuevo y ver las diferencias
gracias pablog2k

he realizado este cambio y ahora tengo:

Cita:
Error al realizar el envío; (ERemotableException)-Codigo[4118].Error La direccion no se corresponde con el fichero de entrada.
la cabecera efectivamente ha cambiado a: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

antes indicaba esto: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema"


Lo que no puedo es importar las unidades de verifactu, tal cual las puedes tener, ¿podrias x favor pablog2k colgar las unidades para ver si algun cambio mas nos impide enviar?

Saludos
  #2495  
Antiguo 30-09-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
Error al realizar el envío; (ERemotableException)-Codigo[4118].Error La direccion no se corresponde con el fichero de entrada.
Este error suele salir si el titular del certificado pasado a servicio web es distinto del NIF indicado como emisor de la factura.
Cambia en tus pruebas el NIF de quien está facturando para ser el mismo que él del certficado, a ver si lo soluciona.

Última edición por antoine0 fecha: 30-09-2024 a las 13:55:53. Razón: Aclaración
  #2496  
Antiguo 30-09-2024
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
justo me estaba pasando el mismo error, y creo que es por lo que comenta antoine0
voy a probar, creo que estoy usando un certificado de representante y se está liando...
  #2497  
Antiguo 30-09-2024
VictorCasajuana VictorCasajuana is offline
Registrado
 
Registrado: oct 2022
Posts: 4
Poder: 0
VictorCasajuana Va por buen camino
xsd para validar la factura

Hola, con la documentación de hacienda estoy buscando un xsd donde aparezca todo el esquema de la factura a enviar, pero no lo encuentro, lo veo repartido entre varios y es confuso. Alguien lo ha encontrado o simplemente es así como lo tienen publicado?
Gracias!
  #2498  
Antiguo 30-09-2024
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Atascado con el mismo error. El NIF que utilizo para el envío es el mismo que el del certificado.

Lo raro es que el error haga mención a "la dirección"

¿Podría poner alguien un XML que le haya funcionado, para ver las diferencias? Es probable que me falte algún campo/nodo por rellenar.

Hasta que a los de Hacienda no les de por pulir los mensajes de error, me temo que vamos a estar un tiempo así...

Cita:
Empezado por antoine0 Ver Mensaje
Este error suele salir si el titular del certificado pasado a servicio web es distinto del NIF indicado como emisor de la factura.
Cambia en tus pruebas el NIF de quien está facturando para ser el mismo que él del certficado, a ver si lo soluciona.
  #2499  
Antiguo 30-09-2024
richidemola richidemola is offline
Miembro
 
Registrado: sep 2024
Posts: 32
Poder: 0
richidemola Va por buen camino
Alguien más que le de este error?

El valor del campo FechaHoraHusoGenRegistro no está dentro del umbral establecido sobre la fecha del sistema de la AEAT

Lo he comprobado y la hora es menor que la de hacienda, por ejemplo, esto es lo que aparece en mi xml: 2024-09-30T14:22:00+01:00

Y la hora de hacienda era esta cuando se envió 2024-09-30 14:22:37

Se supone que tenemos un margen de 5 minutos siempre y cuando la fecha y hora que lleve nuestro xml sea menor que la fecha y hora de hacienda.

Saludos.
  #2500  
Antiguo 30-09-2024
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Segun dice google:

4118 - El NIF del titular no está autorizado a enviar información al sistema

¿Podria ser que el certificado que uso es de una empresa en el SII, y por tanto no deje enviar?


gracias antoine0 , ya habia corregido el NIF, lo veo en el XML, en cabecera, y en IDEmisor correctamente, ademas he añadido el campo: Factura.RegistroAlta.NombreRazonEmisor con el nombre por si acaso.

Saludos !
Tema Cerrado



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
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 19:53:45.


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