Como no sé nada de js, me toca pedir ayuda por este medio. Resulta que debo pasar el contenido de un archivo de texto que contine la información de una factura en una estructura xml a BASE64.
Como hago eso?
Pues por lo que he investigado al parecer debo usar la clase VByteArray(), pero en las pruebas que hago siempre me sale un error…agradezco si alguien tiene y me hace el favor de regalarme el código de ejemplo. mil gracias.
Hola yarumal, te puedo preguntar ¿que es lo que necesitas hacer? el requerimiento, no el problema técnico. Quizá haya una forma mucho mas sencilla de solucionarlo.
Estoy con el tema de la facturación electrónica en mi país, y para enviar las facturas desde mi ERP al WS lo requieren que se genere un archivo de texto con la estructura xml requerida y luego que sea convertido a base64
Hola de nuevo,
no se de que país serás pero fijate que vLatam ya tiene los modulos F.E de varios países ya desarrollados para Velneo. Si tienes vERP, puedes solicitar una copia de vLatam ERP sino deberias hablar directamente con ellos
No, yo tengo mi propio ERP, y eso es lo que trato de implementar.
El asunto es que ya logré codificar el archivo de texto con la estructura xml a base64, pero lo RARO es que el WS no lo acepta y estube comparando la codificación hecha con VByteArray() y la codificación hecha por un codificador en linea y son diferentes, es decir, el de Velneo no queda correctamente bien codificado en base64. no se cual sea la causa. Pero ahora me toca buscar otra solución.
si alguien de ustedes tiene ideas y explicacioens al respecto… por favor me cuentan.
mil gracias.
Me resulta muy extraño que te pidan codificar un XML cuando éste es un formato ya pensado para transmitir información por Internet (ya sea firmado o no).
En cualquier caso, para convertir el XML a Base64, el script javascript es de la forma: var oBA = new VByteArray() var cXML = theRoot.varToString(“CXML”) oBA.setText(cXML) var oB64 = oBA.toBase64() theRoot.setVar(“CBASE64”, oB64.toLatin1String())
Quita los retornos del archivo XML antes de convertir a Base64. Si no los quitas la conversión a Base 64 varía según el codificador que uses.
Te puedo asegurar que el codificar a base64 de Velneo funciona perfectamente. Lo que si te puedo comentar es que dependiendo del país y tercero que puedas estar utilizando (depende del país) debas tener consideraciones especiales.
Por ejemplo, si hablamos de Costa Rica, si o si debes asegurarte que el XML resultante no tenga acentos, ni “ñ” ni tampoco caracteres especiales como & en ningún lugar, sino te dará un supuesto “error en firma”
Si hablamos de Colombia, con el tercero FacturaTech. Es obligatorio antes de enviarle el XML para que lo convierta. Que escribas un fichero en disco con codificación UTF-8 y luego lo vuelvas a leer con la misma codificación.
Si, es extraño, pero aquí en Latinoamerica, todo puede pasar y en efecto pasa. Hay varios países, que su exigencia es que el XML sea codificado en base64 antes de enviar. Es mas hay un caso divertido que no solo pide codificarlo en base64 sino después meter el base 64 en un txt y luego comprimirlo en ZIP, y enviar el fichero ZIP.
Estoy de acuerdo. Una cosa es el estandar y otra el uso absurdo que algunas empresas hacen de él.
Un XML codificado en UTF-8 y bien formado siempre se leerá correctamente por cualquier parser que sigue el estandar. Lo otro es complicarse la vida innecesariamente.