Facturacion Electronica Peru, Metodo sendBill
-
- Posts: 440
- Joined: Fri Oct 07, 2005 2:17 pm
- Location: Lima - Peru
- Contact:
Facturacion Electronica Peru, Metodo sendBill
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 ...
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
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Re: Facturacion Electronica Peru, Metodo sendBill
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
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
-
- Posts: 113
- Joined: Wed Mar 11, 2009 7:32 pm
- Location: Obregon, Sonora, Mexico
Re: Facturacion Electronica Peru, Metodo sendBill
Hola enrique
buenos dias
te anexo la llamada de la dll que convierte el zip a arreglo de bytes
la dll la puedes bajar en
www.eleben.com.mx/cl.zip
la registras y la puedes usar
saludos
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
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
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
-
- Posts: 440
- Joined: Fri Oct 07, 2005 2:17 pm
- Location: Lima - Peru
- Contact:
Re: Facturacion Electronica Peru, Metodo sendBill
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
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
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Re: Facturacion Electronica Peru, Metodo sendBill
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:
y como retorno obtenia lo siguiente:
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:
hago la magia
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
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))" )
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>
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
Code: Select all
ohttp:SetRequestHeader( "SOAPAction" , "sendBill(cFileZip,xFileZip)" )
Existe algun ejemplo de como hacer esto??
Gracias por el interes prestado
Luis Ponce
-
- Posts: 113
- Joined: Wed Mar 11, 2009 7:32 pm
- Location: Obregon, Sonora, Mexico
Re: Facturacion Electronica Peru, Metodo sendBill
Hola buenos dias
Registrala en modo de prueba
saludos
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
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
Re: Facturacion Electronica Peru, Metodo sendBill
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"
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
-
- Posts: 113
- Joined: Wed Mar 11, 2009 7:32 pm
- Location: Obregon, Sonora, Mexico
Re: Facturacion Electronica Peru, Metodo sendBill
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
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
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
Re: Facturacion Electronica Peru, Metodo sendBill
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:
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
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
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
-
- Posts: 113
- Joined: Wed Mar 11, 2009 7:32 pm
- Location: Obregon, Sonora, Mexico
Re: Facturacion Electronica Peru, Metodo sendBill
Hola luis
con eso se instalo la dll
a hora prueba el ejemplo
saludos
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
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
Re: Facturacion Electronica Peru, Metodo sendBill
Hola Benjiben143
Hice lo que me dijiste y..
Dio lo mismo
Gracias
Hice lo que me dijiste y..
Dio lo mismo
Gracias
Luis Ponce
-
- Posts: 440
- Joined: Fri Oct 07, 2005 2:17 pm
- Location: Lima - Peru
- Contact:
Re: Facturacion Electronica Peru, Metodo sendBill
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
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
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Re: Facturacion Electronica Peru, Metodo sendBill
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:
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:
hay una diferencia pequeña, que no he podido determinar....
Como traduces la respuesta de Sunat contenida en el TAG "applicationResponse" ???
Gracias
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>
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>
Como traduces la respuesta de Sunat contenida en el TAG "applicationResponse" ???
Gracias
Luis Ponce
-
- Posts: 440
- Joined: Fri Oct 07, 2005 2:17 pm
- Location: Lima - Peru
- Contact:
Re: Facturacion Electronica Peru, Metodo sendBill
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 )
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
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Re: Facturacion Electronica Peru, Metodo sendBill
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
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