Hay alguien en el grupo que haya desarrollado la aplicación para adaptar la facturación electrónica a este nuevo sistema de las Haciendas vascas?
Yo tengo listo el proceso de facturación TicketBAI de las Haciendas de Bizkaia y Gipuzkoa (este último funcionando al 100%) pero me encuentro con problemas al enviar, vía POST, al webservice de Bizkaia el archivo comprimido en formato gzip (.gz) ya que el tamaño que llega al WS es diferente al del archivo y por lo tanto no lo pueden leer.
Algun paisano lo ha conseguido y me puede echar una mano?
Evidentemente, acepto la ayuda de cualquiera que tenga experiencia en el envío de archivos comprimidos vía POST
Gracias
Aquí el código:
- Code: Select all Expand view RUN
- TRY
doc = CreateObject( "MSXML2.DOMDocument" )
oWS:= CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
CATCH
MsgInfo( "Imposible crear objeto MSXML2" )
RETURN (.F.)
END
// Certificado que vamos a usar desde el almacén de certificados de Windows.
oWS:SetOption(2, 13056)
oWS:SetOption(3, "CNU1321LFC")
TRY
oWS :Open("POST", cURL, .f.)
CATCH
MsgInfo("No se puede conectar")
Return (.F.)
END
// Establecer el timeout de la operación en milisegundos:
// resolveTimeout, connectTimeout, sendTimeout, receiveTimeout
oWS :setTimeouts(15000,15000, 600000, 600000)
TRY
// Cabecera de la peticion.
oWS:SetRequestHeader("Accept-Encoding", "gzip")
oWS:SetRequestHeader("Content-Encoding", "gzip")
oWS:SetRequestHeader("Content-Type", "application/octet-stream" )
oWS:SetRequestHeader("eus-bizkaia-n3-version", "1.0")
oWS:SetRequestHeader("eus-bizkaia-n3-content-type", "application/xml")
oWS:SetRequestHeader("eus-bizkaia-n3-data", cJson) //tengo un Json creado con los datos de la sociedad que envía
oWS:SetRequestHeader("authorization", "32bae7bb................." ) // numero de serie del certificado de firma instalado en el equipo
CATCH
MsgInfo( "No se ha podido generar la Cabecera" )
RETURN (.F.)
END
// Enviamos la información.
cBody:=MemoRead("archivo.gz") //archivo comprimido a enviar
//tamaño (Content-Length) de 16.000 bytes y al WS llega un Content-Lenght de 13
TRY
oWS:Send(cBody)
oWS:WaitForResponse( 500000 )
CATCH
MsgInfo( "No se ha podido enviar el archivo a " + cUrl)
RETURN (.F.)
END