Completed

Facturacion electronica

Published on the October 21, 2017 in IT & Programming

About this project

Open

Necesito desarrollar un modulo en visual basic 2017, para integrarlo a mi aplicación de facturación, ya que pretendo migrar al nuevo esquema de facturación electronica que quiere implantar el ministerio de hacienda. Mi software de facturación está desarrollado en el mismo lenguaje, y simplemente emite la factura ó tiquete impreso.
La nueva adaptación para adherirnos a la facturación electronica, consiste en que mi sistema deberá generar una copia de cada factura en formato digital XML, y el mismo debe ser inmediatamente enviado a traves de internet a un servidor del ministerio de hacienda. Tengo la capacidad de generar el archivo XML de acuerdo a las especificaciones dictadas por el ministerio de hacienda. Pero necesito de alguien que me ayude en la parte de lograr enviar los datos al servidor web.

Los datos generales para lograr esa conexión son los siguientes:
El ministerio de hacienda ha decidido que para la recepción de comprobantes electrónicos se utilizará un API RESTful, este expondrá los recursos disponibles al contribuyente para que pueda enviar y consultar el estado de los comprobantes electrónicos.
Información para la conexión:
El api se encuentra publicado en la uri https://api.comprobanteselectronicos.go.cr/recepcion/v1/.
Para utilizar el servicio es obligatorio el uso de un canal HTTPS.
Todos los mensajes serán de tipo JSON.
Los mensajes recibidos y enviados atraves del API deberán utilizar el mapa de caracteres UTF8.
Se habilitará el URI https://api.comprobanteselectronicos.go.cr/recepcion-sandbox/v1/ para que sea utilizado como un ambiente de pruebas del contribuyente para la integración con sus sistemas. La base de datos que utiliza este API de sandbox se puede limpiar en cualquier momento para reiniciar el ambiente.
Seguridad:
Todos los recursos del api se encuentran protegidos, es requerido iniciar sesión en el api para poder consumirlos.
El API utiliza un modelo de seguridad con Open ID Connect (OIDC-http://openid.net/connect/) el cual funciona como una capa de identidad sobre el protocolo Oauth2.0, el oidc utiliza json web tokens (jwt) para almacenar la información de los tokens.
Desde la aplicación cliente se debe consumir el Identity Provider (IdP) que se encuentra en el URI https://idp.comprobanteselectronicos.go.cr/auth, este IdP permite crear nuevos Tokens (JWT) o refrescar los existentes ya que estos tienen un tiempo de expiración de 5 minutos.
Cuando se tiene el Token generado por el IdP, este se envía en el contenido del Header “Authorization” con el prefijo "bearer”.
Para los efectos prácticos el OIDC es una extensión del estándar de OAuth2.0 (RFC 6749), para esta implementación
se utiliza de la misma forma que un OAuth2.0 con el Grant Type llamado “Resource Owner Password Credential”. Para utilizarlo va a requerir de un Username, Password y Access Token URL, el IdP le genera un Token el cuál el contribuyente en su aplicación debe enviar para consumir el API de Recepción de Documentos. Este Token que se generó tiene un tiempo de expiración que es parte del estándar de OAuth2.0, la aplicación del contribuyente debe encargarse de renovar este Token cuando expira para mantener la continuidad del servicio y cerrar la sesión al terminar.

El estándar de OAuth2.0 solicitará usuario y contraseña para generar el Access Token, y yo ya los tengo.
En el resultado de este trabajo, requiero que se me entregue el codigo fuente, idealmente desarrollado en VB 2017, para yo poder integrarlo a la aplicación de escritorio que utilizamos para facturar, y así agregar la función de envío del comprobante electronico al ministerio de hacienda.

Category IT & Programming
Subcategory Web development
What is the scope of the project? Medium-sized change
Is this a project or a position? Project
I currently have Not applicable
Required availability As needed
Experience in this type of projects No (I haven’t managed this kind of project before)
API Integrations Other (Other APIs)
Roles needed Developer

Delivery term: Not specified

Skills needed