Facturacion Electronica Peru, Metodo sendBill

Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Facturacion Electronica Peru, Metodo sendBill

Post 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 ...
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Luis Ponce
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Luis Ponce
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Facturacion Electronica Peru, Metodo sendBill

Post by benjiben143 »

Hola buenos dias

Registrala en modo de prueba

saludos
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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"
Luis Ponce
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Last edited by LuisPonce on Thu Jul 28, 2016 6:45 pm, edited 1 time in total.
Luis Ponce
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Facturacion Electronica Peru, Metodo sendBill

Post by benjiben143 »

Hola luis

con eso se instalo la dll

a hora prueba el ejemplo




saludos
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post by LuisPonce »

Hola Benjiben143

Hice lo que me dijiste y..

Dio lo mismo

Gracias
Luis Ponce
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Luis Ponce
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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 )
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: Facturacion Electronica Peru, Metodo sendBill

Post 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
Luis Ponce
Post Reply