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