16-03-2023, 11:05 AM
Buenos días Jose,
Bueno tras 3 horas comprobando linea a linea que carajo puede estár pasando te explico el problema ya que tiene algo de miga:
- Vizcaya, a diferencia de Guipuzcoa y Alava, exige la inclusión de unos parámetros especiales en el proceso de firma de los ficheros Tbai, sin esos parámetros funciona igual, se generan bien los Tickets Bai pero luego no te deja subir los ficheros a la hacienda foral por lo que hay que incluir esos parámetros si o si ... ok.
- Cuando firmamos un fichero con un certificado, el proceso añade al fichero el resultado de la firma que debe ser inalterable (es lo que verifica que el fichero no ha sido modificado), ese resultado de la firma se usa (entre otros datos) para generar el código qr.
- Pues bien, resulta que solo en Vizcaya, cuando se firma un documento con el certificado (y los parámetros requeridos por Vizcaya) es muy probable que en el signaturevalue (vamos el resultado de la firma) aparezca un simbolo +, la firma es correcta, el ticket bai es correcto, cuando se envia a la hacienda se acepta ... todo bien y por eso no da ningún error.. peeero
- Resulta que el simbolo + no es un caracter UTF8 valido, entonces para poder generar un código QR y generar los codigos de segurida CRC8 se requieren que los caracteres sean UTF8 y por tanto el + se omite, al omitir el + pues logicamente el calculo falla y la url no es correcta.
Resumen hasta el momento:
- El ticket Bai se está generando, firmando y enviando correctamente
- El código QR se genera de forma erronea porque no puede generarse con un simbolo + en el identificador de la firma
- El identificador de la firma lo genera el certificado digital y solo incluye el + en ocasiones y solamente cuando se usan los parametros especificos de Vizcaya
Entonces tenemos un dilema
Dado que todo se está generando correctamente, podemos "engañar" un poco al sistema y cuando veamos un + en el resultado de una forma cambiarlo por un caracter válido, pero ojo, solo en la generación del qr, el ticket bai original debe quedar inalterado y es el que luego debe enviarse a hacienda, por tanto me refiero a modificar solamente el qr para que el cliente final pueda comrobar el ticket con el qr.
No se, es una solución que no termina de gustarme (porque carajo, no tenemos ninguna necesidad de "engañar" al sistema de esa manera) pero no se que hacer con ese simbolo + que generan los certificados ... en cualquier caso voy a contactar con la hacienda foral a ver.
Bueno tras 3 horas comprobando linea a linea que carajo puede estár pasando te explico el problema ya que tiene algo de miga:
- Vizcaya, a diferencia de Guipuzcoa y Alava, exige la inclusión de unos parámetros especiales en el proceso de firma de los ficheros Tbai, sin esos parámetros funciona igual, se generan bien los Tickets Bai pero luego no te deja subir los ficheros a la hacienda foral por lo que hay que incluir esos parámetros si o si ... ok.
- Cuando firmamos un fichero con un certificado, el proceso añade al fichero el resultado de la firma que debe ser inalterable (es lo que verifica que el fichero no ha sido modificado), ese resultado de la firma se usa (entre otros datos) para generar el código qr.
- Pues bien, resulta que solo en Vizcaya, cuando se firma un documento con el certificado (y los parámetros requeridos por Vizcaya) es muy probable que en el signaturevalue (vamos el resultado de la firma) aparezca un simbolo +, la firma es correcta, el ticket bai es correcto, cuando se envia a la hacienda se acepta ... todo bien y por eso no da ningún error.. peeero
- Resulta que el simbolo + no es un caracter UTF8 valido, entonces para poder generar un código QR y generar los codigos de segurida CRC8 se requieren que los caracteres sean UTF8 y por tanto el + se omite, al omitir el + pues logicamente el calculo falla y la url no es correcta.
Resumen hasta el momento:
- El ticket Bai se está generando, firmando y enviando correctamente
- El código QR se genera de forma erronea porque no puede generarse con un simbolo + en el identificador de la firma
- El identificador de la firma lo genera el certificado digital y solo incluye el + en ocasiones y solamente cuando se usan los parametros especificos de Vizcaya
Entonces tenemos un dilema
Dado que todo se está generando correctamente, podemos "engañar" un poco al sistema y cuando veamos un + en el resultado de una forma cambiarlo por un caracter válido, pero ojo, solo en la generación del qr, el ticket bai original debe quedar inalterado y es el que luego debe enviarse a hacienda, por tanto me refiero a modificar solamente el qr para que el cliente final pueda comrobar el ticket con el qr.
No se, es una solución que no termina de gustarme (porque carajo, no tenemos ninguna necesidad de "engañar" al sistema de esa manera) pero no se que hacer con ese simbolo + que generan los certificados ... en cualquier caso voy a contactar con la hacienda foral a ver.