Page 1 of 2
Facturacion Electronica Peru, Metodo sendBill
Posted: Thu Sep 11, 2014 3:03 am
by Enrrique Vertiz
Saludos
Tengo un problema para comunicarme con este servicio que brinda la SUNAT aqui en Peru, con la inestimable ayuda de nuestro amigo Benjamin, se armo la consulta XML para el webService, esta incluye un metodo sendBill que debe enviar 2 datos, uno un archivo ZIP con un documento XML dentro y el otro, que no tengo idea de como hacerlo es "se debe consignar el contenido del archivo ZIP en un arreglo de Bytes", aqui tengo un ejemplo de como lo hacen en VB :
/*
Dim billService As New Sunat.billServiceClient
billService.sendBill(fileName, contentFile)
billService.sendSummary(fileName, contentFile)
billService.getStatus(ticket)
billService.sendBill('20100066603-01-F001-1.zip',
File.ReadAllBytes('/path/to/file/20100066603-01-F001-1.zip'))
*/
Yo lo pongo en FWH asi :
http:Open( "POST", "
https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService", .F. )
http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" )
http:SetRequestHeader( "SOAPAction" , "sendBill(cFileZip,...............)" )
Ese metodo sendBill que invoco envia 2 parametros, el ZIP y el arreglo de bytes que no tengo idea de que funcion FWH o xHarbour utilizar ...
Gracias ...
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Jul 26, 2016 5:22 am
by LuisPonce
Hola Enrique
Estoy en el mismo dilema, no obstante hice algunos avances, quisiera saber si lo pudiste resolver, o alguien pudo avanzar al respecto...
Antonio, tal vez exista mas informacion?
no quiero morir en el intento.
Gracias
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Jul 26, 2016 3:39 pm
by benjiben143
Hola enrique
buenos dias
te anexo la llamada de la dll que convierte el zip a arreglo de bytes
Code: Select all
#include "FiveWin.ch"
function Main()
local oEleben, o
TRY
oEleben := CreateObject( "Classlibrary2.class1" )
MSGALERT( "entro ")
CATCH
MSGALERT( "Na nai")
END
o:=oeleben:StreamFile("abrir.zip") // lo convierte a arreglo de bytes
Return nil
la dll la puedes bajar en
www.eleben.com.mx/cl.zip
la registras y la puedes usar
saludos
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Jul 26, 2016 8:44 pm
by Enrrique Vertiz
Saludos Luis
Si lo resolvi, hay que mandar el archivo adjunto, convertido a base64 como indica el manual de la Sunat
http:SetRequestHeader( "SOAPAction" , "sendBill(cFileZip,xfile)" )
xFile es el ZIP convertido, y después recibes la respuesta de SUNAT
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Wed Jul 27, 2016 6:04 am
by LuisPonce
Gracias Benjamin
Intente registrar la libreria que me pasaste:
regsvr32 ClassLibrary2.dll
Sin exito me da el siguiente mensaje: "Se cargo el modulo ClassLibrary2.dll, pero no se encontro el punto de entrada DllRegistrerServer Asegurese que ClassLibrary2.dll es un archivo DLL u OCX valido e intentelo de nuevo"
He buscado en internet, y es posible que la .dll este corrupta o sea de 64bits cuando yo tengo W7 de 32 o viceversa, por lo tanto no he podido ejecutar el ejemplo que me alcanzaste amablemente.
Enrique muchas gracias por tu respuesta;
Lo estuve trabajando con esta instruccion, que proviene del VB:
Code: Select all
ohttp:SetRequestHeader( "SOAPAction" , "sendBill(cFileZip,File.ReadAllBytes(cFileZip))" )
y como retorno obtenia lo siguiente:
Code: Select all
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>[b]0156[/b]</faultcode><faultstring>-</faultstring></S:Fault></S:Body></S:Envelope>
Donde el codigo
0156: indica que el archivo zip es corrupto (segun el Anexo 2 de la lista de errores)
Desde luego me aclaras el panorama, para convertir a base64 encontre una funcion HB_Base64Encode(), al parecer mi xHarbour 1.1.0 no la tiene, pero encontré un alcance que publicó JPonce (Auteur Badara Thiam) en este mismo foro:
http://forums.fivetechsupport.com/viewt ... 99#p140504
Excelente alcance, donde comparte unas funciones, entre ellas StrToBase64() la cual convierte string a base64, entonces hago lo siguiente:
Code: Select all
cZip:=MemoRead(cFileZip) // leo el contenido del zip
xFileZip:=StrToBase64(cZip) // lo convierto a base64
hago la magia
Code: Select all
ohttp:SetRequestHeader( "SOAPAction" , "sendBill(cFileZip,xFileZip)" )
y me da el mismo resultado el codigo
0156, me lleva a pensar que el problema esta en la construccion del zip, aun cuando varío ese xml que esta dentro del zip, o adiciono otro archivo al zip.. siempre me da el mismo error :::
Existe algun ejemplo de como hacer esto??
Gracias por el interes prestado
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Wed Jul 27, 2016 2:28 pm
by benjiben143
Hola buenos dias
Registrala en modo de prueba
saludos
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Thu Jul 28, 2016 6:02 am
by LuisPonce
Hola Benjamin
Hice lo mismo en modo a prueba de fallos
regsvr32 ClassLibrary2.dll
con el mismo resultado
"Se cargo el modulo ClassLibrary2.dll, pero no se encontro el punto de entrada DllRegistrerServer Asegurese que ClassLibrary2.dll es un archivo DLL u OCX valido e intentelo de nuevo"
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Thu Jul 28, 2016 3:40 pm
by benjiben143
Hola
buenos dias
en esta liga esta con lo que la registro
www.eleben.com.mx\regis.zip
ejecutar
r classlibrary2
en modo de prueba
saludos
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Thu Jul 28, 2016 6:39 pm
by LuisPonce
Buenos Dias Benjamin
bajé el archivo y ejecuté r
r ClassLibrary2
me dió esta respuesta en modo a prueba de fallos y normal
RegAsm : Warning RA0000 : El registro de un ensamblado sin signo puede provocar que dicho ensamblado interfiera con otras aplicaciones en el mismo equipo. El modificador /codebase solo se utiliza con signos. Proporcione al ensamblado un nombre seguro y vuelva a registrarlo.
Se registraron correctamente los tipos
El exportador de la biblioteca de tipos detecto una advertencia al procesar "ClassLibrary2.ServiceReference1.billServiceClient, ClassLibrary2". Advertencia: El exportador de la biblioteca de tipos detecto un tipo que deriva de una clase generica y que no esta marcado como [ClassInterface(ClassInterfaceType.None)]. Las interfaces de clase no se pueden exponer para estos tipos. Marque el tipo como [ClassInterface(ClassInterfaceType.None)] y exponer la interfaz cmo la predeterminada para COM con el atributo CodDefaultInterface.
El exportador de la biblioteca de tipos detecto una advertencia al procesar "ClassLibrary2.ServiceReference2.Service1SoapClient, ClassLibrary2". Advertencia: El exportador de la biblioteca de tipos detecto un tipo que deriva de una clase generica y que no esta marcado como [ClassInterface(ClassInterfaceType.None)]. Las interfaces de clase no se pueden exponer para estos tipos. Marque el tipo como [ClassInterface(ClassInterfaceType.None)] y exponer la interfaz como la predeterminada para COM con el atributo CodDefaultInterface.
La Exportacion del ensamblado a "C:\REGIS\ClassLibrary2.tbl" y el registro de la biblioteca de tipos se ralizaron correctamente
Presione una tecla para continuar........
Luego ejecuto el ejemplo que me pasaste:
Code: Select all
#include "FiveWin.ch"
function Main()
local oEleben, o
TRY
oEleben := CreateObject( "Classlibrary2.class1" )
MSGALERT( "entro ")
CATCH
MSGALERT( "Na nai")
END
o:=oeleben:StreamFile("abrir.zip") // lo convierte a arreglo de bytes
Return nil
y me da el mensaje "Na nai"
con este mensaje
Application
===========
Path and name: C:\FWVENTAS\FW-VT2.exe (32 bits)
Size: 5,371,904 bytes
Time from start: 0 hours 0 mins 15 secs
Error occurred at: 28/07/2016, 13:42:50
Error description: Error BASE/1004 Class: 'NIL' has no exported method: STREAMFILE
Args:
[ 1] = U
[ 2] = C abrir.ZIP
Stack Calls
===========
Called from: => STREAMFILE(0)
Called from: vt20199.prg => FILE2AB(18626)
Called from: fw-vt2.prg => (b)BUILDMENU(1050)
Called from: MENU.PRG => TMENU:COMMAND(0)
Called from: WINDOW.PRG => TWINDOW:COMMAND(0)
Called from: MDIFRAME.PRG => TMDIFRAME:COMMAND(0)
Called from: => TMDIFRAME:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
Called from: fw-vt2.prg => MAIN(661)
Agradezco tu respuesta
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Thu Jul 28, 2016 6:45 pm
by benjiben143
Hola luis
con eso se instalo la dll
a hora prueba el ejemplo
saludos
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Sun Jul 31, 2016 11:50 pm
by LuisPonce
Hola Benjiben143
Hice lo que me dijiste y..
Dio lo mismo
Gracias
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Mon Aug 01, 2016 4:34 am
by Enrrique Vertiz
Luis Yo lo leo invocando a esta function, y ya lo regresa convertido a base64
cNewArc:=xlee(cAcrZip)
//----------------------------------- Funcion para Leer ZIP ------------------------------------//
function xlee(hsource)
local hTarget
local cBuffer := Space(4000)
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0
local nBufsize:=4000
local xfile:=""
hSource = FOpen( hsource)
while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0
xfile:=xfile+left(cbuffer,nBytes)
end
FClose( hSource )
FClose( hTarget )
xfile:=StrToBase64(xfile)
return xfile
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Aug 02, 2016 4:31 am
by LuisPonce
Hola Enrrique
Al parecer habia resuelto el envio mediante SendBill, digo al parecer porque Sunat me reporta imagino el CDR en produccion, este viene de esta forma:
Code: Select all
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:sendBillResponse xmlns:ns2="http://service.sunat.gob.pe"><applicationResponse>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</applicationResponse></ns2:sendBillResponse></S:Body></S:Envelope>
el envio lo hago a:
https://www.sunat.gob.pe/ol-ti-itcpgem-beta/billService
En teoria parece que lo conseguí, pero como traduzco esto a "legible" ??
Para hacerlo usé unas funciones de * Auteur Badara Thiam, publicadas en el Forum, StrToBase64(), y sucedio la magia, pero me retorna algo parecido que he intentado traducir con la funcion Base64ToStr() de la misma fuente, y no obtengo algo legible.
Probe hacer el envio con xLee(), que amablemente compartiste.. con similar resultado:
Code: Select all
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:sendBillResponse xmlns:ns2="http://service.sunat.gob.pe"><applicationResponse>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</applicationResponse></ns2:sendBillResponse></S:Body></S:Envelope>
hay una diferencia pequeña, que no he podido determinar....
Como traduces la respuesta de Sunat contenida en el TAG "applicationResponse" ???
Gracias
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Aug 02, 2016 4:59 am
by Enrrique Vertiz
Luis, lo que recibes es un archivo ZIP en Base64, hay que hacer la operación inversa y después descomprimirlo para leer el contenido.
hFile := FCreate( cResSun, FC_NORMAL )
FWrite( hFile, Base64ToStr( cTxtSun64 ) )
FClose( hFile )
Re: Facturacion Electronica Peru, Metodo sendBill
Posted: Tue Aug 02, 2016 6:25 am
by LuisPonce
Enrrique
Asi es, lo logico es que debía hacer a la inversa, y lo intenté con:
Base64ToStr(applicationResponse)
applicationResponse=al contenido del TAG
Probare con el codigo que compartiste
cResSun = archivo resultante
cTxtSun64 = es el contenido de applicationResponse?
Gracias