Buen día para todos.
Estoy usando el código que gentilmente compartió Luis Maria Guayán, para generar el QR con la API de Google y realmente me funciona perfecto.
Por ahora solo lo tengo en un cliente a modo de prueba y sin problemas, la consulta que quiero hacerles es que ERRORES o como capturar los mismos puedo tener con esta API ….. quisiera tener algún “control” antes de replicarlo en mis otros sistemas.
Saludos ¡!
Fernando.
*---------------------------------------------------------
* Genero la imagen del código QR con la API de Google
* Parametetros:
* tcText: Texto a codificar
* tcFile: Nombre y ruta del archivo de imagen (opcional)
* tnSize: tamaño en pixeles (opcional)
*---------------------------------------------------------
PROCEDURE GoogleApiQRBarcodeImage(tcText, tcFile, tnSize)
LOCAL lcType, lcFolder, lcUrl
IF VARTYPE(m.tnSize) <> "N"
m.tnSize = 198 && Tamaño por omisión = 198 x 198 pixels
ENDIF
m.tnSize = MIN(MAX(m.tnSize, 72), 540)
m.lcType = "PNG" && Solo PNG
m.lcUrl = [https://chart.googleapis.com/chart?chs=] + ;
TRANSFORM(m.tnSize) + [x] + TRANSFORM(m.tnSize) + ;
[&cht=qr&chl=] + tcText
IF EMPTY(m.tcFile)
m.lcFolder = TempPath()
IF NOT DIRECTORY(m.lcFolder)
MD (m.lcFolder)
ENDIF
m.tcFile = FORCEEXT(m.lcFolder + SYS(2015), m.lcType)
ELSE
m.lcFolder = JUSTPATH(m.tcFile)
IF NOT DIRECTORY(m.lcFolder) AND NOT EMPTY(m.lcFolder)
MD (m.lcFolder)
ENDIF
m.tcFile = FORCEEXT(m.tcFile, m.lcType)
ENDIF
*-- Declaro la función URLDownloadToFile
DECLARE LONG URLDownloadToFile IN URLMON.DLL ;
LONG, STRING, STRING, LONG, LONG
ERASE (m.tcFile)
IF 0 = URLDownloadToFile(0, m.lcUrl, m.tcFile, 0, 0)
RETURN m.tcFile
ELSE
RETURN ""
ENDIF
ENDPROC
*---------------------------------------------------------
* PROCEDURE TempPath()
*---------------------------------------------------------
* Retorna la carpeta de archivos temporales de Windows
*---------------------------------------------------------
PROCEDURE TempPath()
LOCAL lcPath, lnRet
LOCAL lnSize
m.lcPath = SPACE(255)
m.lnSize = 255
DECLARE INTEGER GetTempPath IN WIN32API ;
INTEGER nBufSize, ;
STRING @cPathName
m.lnRet = GetTempPath(m.lnSize, @m.lcPath)
IF m.lnRet <= 0
m.lcPath = ADDBS(FULLPATH("TEMP"))
ELSE
m.lcPath = ADDBS(SUBSTR(m.lcPath, 1, m.lnRet))
ENDIF
RETURN m.lcPath
ENDPROC
*---------------------------------------------------------