Verifactu AEAT

329 views
Skip to first unread message

José Daniel Campillo Piñero

unread,
Mar 5, 2025, 8:34:18 AM3/5/25
to Comunidad de Visual Foxpro en Español
Hola, alguien ha conseguido conectar y enviar algún fichero a esta plataforma.

No consigo la respuesta del fichero enviado e intente de todo lo que sé.

Un saludo

Francisco Aracil Alarcón

unread,
Mar 5, 2025, 9:56:13 AM3/5/25
to publice...@googlegroups.com
Aquí tienes el código que te debería funcionar, más o menos se entenderá, lo he copiado y he limpiado cosas que tengo para mí.

* Variables Locales *
LOCAL LVERSIONXML
LVERSIONXML=OAPP.VFMSXML  && '4.0' ó '6.0'

LOCAL LMENSATEXT
LMENSATEXT=''

LOCAL LFICRESULXML
LFICRESULXML=''

LOCAL LRESULTADOXML
LRESULTADOXML=.F.


LOCAL PURL_WSDL,PFILEREQUEST,PFILERESPONSE

PURL_WSDL=OAPP.VFURLWEB && OAPP.VFURLWEB='https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP'


PFILEREQUEST=FILETOSTR(THISFORM.XFICEMITIDAS) &&XFICEMITIDAS->FICHERO XML


=WAITWINDOW('Cargando MSXML '+LVERSIONXML,0,0,'NOCLEAR',1,'TIMEOUT 1')
PUBLIC OHTTP
OHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.'+LVERSIONXML)


=WAITWINDOW('Conectando con el Web Service',0,0,'NOCLEAR',1,'TIMEOUT 1')
OHTTP.OPEN("POST", PURL_WSDL, .F.)

IF NOT EMPTY(THISFORM.WCERTIFICADO)

=WAITWINDOW('Configurando Certificado'+CHR(13)+THISFORM.WCERTIFICADO,0,0,'NOCLEAR',1,'TIMEOUT 1')

OHTTP.SETOPTION(2, 13056)

SET UDFPARMS TO VALUE
OHTTP.SETOPTION(3,THISFORM.WCERTIFICADO)
SET UDFPARMS TO REFERENCE

ENDIF

=WAITWINDOW('Enviando Facturas Emitidas al Web Service',0,0,'NOCLEAR',1,'TIMEOUT 1')
SET UDFPARMS TO VALUE && cambiar SET UDFPARAMS para el método oHTTP.SEND()...
OHTTP.SEND(PFILEREQUEST)
SET UDFPARMS TO REFERENCE

=WAITWINDOW('Esperando Respuesta del Web Service',0,0,'NOCLEAR',1,'TIMEOUT 1')
LMENSATEXT=OHTTP.RESPONSETEXT

IF OHTTP.STATUS=200 AND OHTTP.STATUSTEXT='OK' AND NOT EMPTY(LMENSATEXT) AND 'RespuestaRegFactuSistemaFacturacion' $ LMENSATEXT

=WAITWINDOW('Respuesta del Web Service de Veri_Factu',0,0,'NOCLEAR',1,'TIMEOUT 1')

LFICRESULXML=STRTRAN(THISFORM.XFICEMITIDAS,'VF_','RESULVF_')
=STRTOFILE(LMENSATEXT,LFICRESULXML)

DO CASE
CASE '>INCORRECTO<' $ UPPER(LMENSATEXT)
Messagebox( 'HAY FACTURAS RECHAZADAS PORQUE SON INCORRECTAS',64,'ENVÍO ACEPTADO')

CASE '>ACEPTADOCONERRORES<' $ UPPER(LMENSATEXT)
Messagebox( 'HAY FACTURAS ACEPTADAS CON ERRORES LEVES',64,'ENVÍO ACEPTADO')

CASE '>CORRECTO<' $ UPPER(LMENSATEXT)
Messagebox( 'TODAS LAS FACTURAS SON CORRECTAS',64,'ENVÍO CORRECTO')

OTHERWISE
Messagebox( 'NO LOCALIZAMOS LAS RESPUESTAS DE CADA FACTURA',48,'REVISAR EL FICHERO')
ENDCASE

LRESULTADOXML=.T.

ELSE

=WAITWINDOW('Error en la Respuesta del Web Service de Veri_Factu',0,0,'NOCLEAR',1,'TIMEOUT 1')
LFICRESULXML=STRTRAN(THISFORM.XFICEMITIDAS,'VF_','ERRORVF_')
=STRTOFILE(LMENSATEXT,LFICRESULXML)

LRESULTADOXML=.F.
ENDIF

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/65ecc55a-6479-4001-8efd-6e8054267abcn%40googlegroups.com.


--

Reply all
Reply to author
Forward
0 new messages