Page 1 of 1

Facturacion TicketBai

Posted: Thu May 27, 2021 1:44 pm
by landaga
Hola amigos
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 :D
Gracias
Aquí el código:

Code: Select all | Expand

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

Re: Facturacion TicketBai

Posted: Thu Aug 05, 2021 7:06 pm
by ArgConsulting
Hola Iandaga.
Estamos interesados en el tema del ticketbai. Ya tenemos parte del sistema pero nos queda algunas cosas.
Si quieres podemos intercambiar información (siempre que no seamos competencia :D )
Mi correo es el siguiente:
web@argcon.net
Si te interesa mándame un correo y empezamos.

Re: Facturacion TicketBai

Posted: Mon Dec 13, 2021 5:04 pm
by fgondi
Hola,

Estoy realizando pruebas para el envío del archivo gzip via POST.

Pero no consigo que funcione.

Alguien sabe como enviar un archivo gzip a un webservice a través de POST?

Re: Facturacion TicketBai

Posted: Mon Dec 13, 2021 5:34 pm
by hmpaquito
Hola,

¿ No será problema de los certificados ?

Yo utilizo curl.exe para el sii

salu2

Re: Facturacion TicketBai

Posted: Mon Dec 13, 2021 7:27 pm
by fgondi
Hola,

No, no es problema de los certificados.

El problema está en preparar el gzip.
Si genero yo el gzip, con memoread no lee todo el contenido.
Si envio el xml, con el Encoding gzip, no se envía.

Por favor, puedes indicarme como realizas el envío con curl

Re: Facturacion TicketBai

Posted: Tue Dec 14, 2021 8:10 am
by hmpaquito
fgondi wrote:Hola,

No, no es problema de los certificados.

El problema está en preparar el gzip.
Si genero yo el gzip, con memoread no lee todo el contenido.
Si envio el xml, con el Encoding gzip, no se envía.

Por favor, puedes indicarme como realizas el envío con curl


Así lo hago: viewtopic.php?f=6&t=36940#p220423

Re: Facturacion TicketBai

Posted: Tue Dec 14, 2021 8:21 am
by fgondi
Hola,

Muchisimas gracias.

Me pongo a ello

Re: Facturacion TicketBai

Posted: Wed Dec 15, 2021 7:27 am
by landaga
fgondi wrote:Hola,

No, no es problema de los certificados.

El problema está en preparar el gzip.
Si genero yo el gzip, con memoread no lee todo el contenido.
Si envio el xml, con el Encoding gzip, no se envía.

Por favor, puedes indicarme como realizas el envío con curl



salida := Respuesta+'.gz'
headers:= Respuesta+'.txt'
m := fcreate("LROE.bat",0)

FWrite (m, 'c:\gerogest\curl -X POST -# --connect-timeout 60 -m 60 -s -S -L --cert ./dispositivo.pem --header "Content-Type: application/octet-stream" --header "Accept-Encoding: gzip" --header "Content-Encoding: gzip" --header "eus-bizkaia-n3-version: 1.0" --header "eus-bizkaia-n3-content-type: application/xml" --header "eus-bizkaia-n3-data:'+cJson+'" --header "authorization: xxxxxxxxxxxxxxxxxxxx" --data-binary @'+cFileName+' https://'+cURL+' --output '+salida+' -D '+headers+' -v' )
FClose(m)
//-----------------------------

WaitRun("LROE.bat",0)
CursorWait()

Donde:
header "authorization: xxxxxxxxxxxxxxxxxxxx" en las x indicas el número de serie de tu certificado
data-binary indica que envías un archivo comprimido
cURL es la url a la que deseas realizar el envío
cFileName es el gzip
salida es el fichero de respuesta
headers son las cabeceras de respuesta

Un saludo

Re: Facturacion TicketBai

Posted: Fri Dec 17, 2021 7:17 pm
by fgondi
Muchisimas gracias,

funcionó perfecto