Cita:
Empezado por unomasmas
Perdona, no entiendo a qué te refieres. ¿Eres tan amable de poner un caso práctico, please, con el resultado que debiera tener, por favor?
Gracias. :-)
|
Fijaos que en el siguiente Identificador:
TBAI-00000006Y-270921-i8l17Dnn7IdR/-231
Hay una barra "/" en la firma, en el caracter numero 13
i8l17Dnn7IdR/
En este caso, si generaramos el QR(el dibujo) tal cual, no funcionaria la URL,
para que funcionara tendriamos que convertir el caracter "/" al código URI(Codigo URL, el que se genera en las direcciones cuando escribimos)
Yo lo que hago es que siempre paso la firma a codigo URI(URL)
https://batuz.eus/QRTBAI/?id=TBAI-00...&i=2.70&cr=041
Ahora vamos a lo del CR:
1.Generamos el identificador:
TBAI-00000006Y-270921-i8l17Dnn7IdR/-
2.Calculamos el CRC8
231
3.Generamos El identificador TBAI
TBAI-00000006Y-270921-i8l17Dnn7IdR/-231
4.Generamos el QR y le agregamos el mismo CRC8(aunque parezca extraño)
https://batuz.eus/QRTBAI/?id=TBAI-00...&nf=527&i=2.70
5.Calculamos el segundo CRC8, pero esta vez a partir del codigo generado anterior con el URI o URIS que hayas querido (aún más extraño, pero es la normativa)
041
https://batuz.eus/QRTBAI/?id=TBAI-00...&i=2.70&cr=041
Y listo
(Lo que si hay quee tener claro que el identificador tiene que estar escrito en la factura con su barra "/" aunque en el QR esté traducida la barra
Para generar el URI solo hay que obtener el Hexadecimal del Ascii del caracter
Para generar el URI en VB:
Código:
Codigo_uri=TEXT_TO_codigo_uri(texto_origen)
FUNCTION TEXT_TO_codigo_uri(bufo)
For a = 1 To Len(bufo)
sql_buff = Mid(bufo, a, 1)
sql_buff = LTrim(Hex(Asc(sql_buff)))
If Len(sql_buff) = 1 Then
sql_buff = "0" & sql_buff
End If
TEXT_TO_codigo_uri = TEXT_TO_codigo_uri & "%" & sql_buff
Next
END FUNCTION
Saludos