meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| lenguaje_c [2021/06/15 01:37] – [PASO 5: Recibir y procesar la respuesta del servicio web de integración de TFHKA] jsojo | lenguaje_c [2022/08/29 19:34] (actual) – lmartinez | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Ejemplo en lenguaje CSharp ====== | ====== Ejemplo en lenguaje CSharp ====== | ||
| - | Tiene como objetivo ejemplificar el proceso de conexión, acceso y uso de las propiedades y métodos ofrecidos por el //Servicio Web de Integración de TFHKA a través del lenguaje de programación C Sharp (C#) de la plataforma .Net. /// | + | Tiene como objetivo ejemplificar el proceso de conexión, acceso y uso de las propiedades y métodos ofrecidos por el //Servicio Web de Integración de //EBI //a través del lenguaje de programación C Sharp (C#) de la plataforma .Net. /// |
| Independientemente del tipo de proyecto C# con el cual se trabaje: Consola, Winforms o WPF, lo más importante es establecer los pasos necesarios para realizar una integración exitosa. | Independientemente del tipo de proyecto C# con el cual se trabaje: Consola, Winforms o WPF, lo más importante es establecer los pasos necesarios para realizar una integración exitosa. | ||
| Línea 7: | Línea 7: | ||
| %%Criterios a tomar en cuenta:%% | %%Criterios a tomar en cuenta:%% | ||
| - | * Establecer una referencia al Servicio Web de Integración de TFHKA | + | * Establecer una referencia al Servicio Web de Integración de EBI |
| - | * Instanciar el objeto a través del cual se tendrá acceso a los métodos del Servicio Web de TFHKA. | + | * Instanciar el objeto a través del cual se tendrá acceso a los métodos del Servicio Web de EBI. |
| - | * Construir / Armar el objeto Documento Electrónico (Factura) que se desea enviar al Servicio Web de Integración de TFHKA, a través de los objetos respectivos. | + | * Construir / Armar el objeto Documento Electrónico (Factura) que se desea enviar al Servicio Web de Integración de EBI, a través de los objetos respectivos. |
| - | * Enviar el documento al Servicio Web de Integración de TFHKA para su procesamiento. | + | * Enviar el documento al Servicio Web de Integración de EBIpara |
| - | * Recibir y procesar la respuesta del Servicio Web de TFHKA en nuestro proyecto, según sea requerido. | + | * Recibir y procesar la respuesta del Servicio Web de EBIen nuestro proyecto, según sea requerido. |
| %%Pasos para realizar la integración: | %%Pasos para realizar la integración: | ||
| - | PASO 1: Agregar una nueva Referencia de Servicio en su proyecto, utilizando la URL del Servicio Web de Integración de TFHKA referida | + | PASO 1: Agregar una nueva Referencia de Servicio en su proyecto, utilizando la URL del Servicio Web de Integración de EBIreferida |
| - | PASO 2: Crear una instancia del objeto ' | + | PASO 2: Crear una instancia del objeto ' |
| - | PASO 3: Construir el Documento Electrónico a enviar, en base a los objetos provistos por el Servicio Web de Integración de TFHKA. | + | PASO 3: Construir el Documento Electrónico a enviar, en base a los objetos provistos por el Servicio Web de Integración de EBI. |
| - | PASO 4: Enviar el Documento Electrónico construído en el paso anterior al Servicio Web de Integración de TFHKA, utilizando los Tokens de Empresa y Password indicados en este documento. | + | PASO 4: Enviar el Documento Electrónico construído en el paso anterior al Servicio Web de Integración de EBI, utilizando los Tokens de Empresa y Password indicados en este documento. |
| (el Servicio Web procesará su solicitud según las especificaciones de la DGI y retornará de inmediato los resultados). | (el Servicio Web procesará su solicitud según las especificaciones de la DGI y retornará de inmediato los resultados). | ||
| - | PASO 5: Recibir y procesar la respuesta del Servicio Web de Integración de TFHKA. | + | PASO 5: Recibir y procesar la respuesta del Servicio Web de Integración de EBI. |
| **IMPORTANTE**: | **IMPORTANTE**: | ||
| - | Para mayor información y detalles sobre el proceso, puede consultar el **Manual de Integración de TFHKA** | + | Para mayor información y detalles sobre el proceso, puede consultar el **Manual de Integración de EBI** |
| - | ===== PASO 1: Agregar referencia de servicio con la URL del servicio web de integración de TFHKA ===== | + | ===== PASO 1: Agregar referencia de servicio con la URL del servicio web de integración de EBI ===== |
| Incluir lo siguiente: | Incluir lo siguiente: | ||
| Línea 37: | Línea 37: | ||
| <code -> | <code -> | ||
| using System; | using System; | ||
| - | using EjemploIntegraciondirectaCSharp.TfhkaPaWebService; | + | using EjemploIntegraciondirectaCSharp.EBIPaWebService; |
| namespace EjemploIntegraciondirectaCSharp | namespace EjemploIntegraciondirectaCSharp | ||
| { | { | ||
| - | class DemoIntCSharpTfhka | + | class DemoIntCSharpEBI |
| { | { | ||
| </ | </ | ||
| Línea 52: | Línea 52: | ||
| * En la ventana desplegada, | * En la ventana desplegada, | ||
| - | URL del Servicio Web de Integración de TFHKA: [[http://demoemision.thefactoryhka.com.pa/ | + | URL del Servicio Web de Integración de EBI: [[https://demointegracion.ebi-pac.com/ |
| * Haga click sobre el botón " | * Haga click sobre el botón " | ||
| Línea 58: | Línea 58: | ||
| * Coloque la siguiente identificación en el campo " | * Coloque la siguiente identificación en el campo " | ||
| - | Identificación de la Referencia: "TfhkaPaWebService" | + | Identificación de la Referencia: "EBIPaWebService" |
| (Dicho nombre es referencial, | (Dicho nombre es referencial, | ||
| Línea 64: | Línea 64: | ||
| **IMPORTANTE**: | **IMPORTANTE**: | ||
| - | TOKENS requeridos por el Servicio Web de Integración de TFHKA para enviar documentos electrónicos, | + | TOKENS requeridos por el Servicio Web de Integración de EBI para enviar documentos electrónicos, |
| <code -> | <code -> | ||
| - | public const string tokenEmpresa = ""; | + | public const string tokenEmpresa = ""; |
| - | public const string tokenPassword = ""; | + | public const string tokenPassword = ""; |
| static void Main(string[] args) | static void Main(string[] args) | ||
| { | { | ||
| Línea 75: | Línea 75: | ||
| </ | </ | ||
| - | ===== PASO 2: Crear una instancia del objeto ' | + | ===== PASO 2: Crear una instancia del objeto ' |
| A traves de esta instancia tendremos acceso a los métodos públicos disponibles | A traves de esta instancia tendremos acceso a los métodos públicos disponibles | ||
| Línea 85: | Línea 85: | ||
| | | ||
| - | Consola.mensaje(" | + | Consola.mensaje(" |
| String numero = ""; | String numero = ""; | ||
| while (numero == "" | while (numero == "" | ||
| Línea 94: | Línea 94: | ||
| </ | </ | ||
| - | ===== PASO 3: Construir el documento electrónico a enviar al servicio web de integración de TFHKA ===== | + | ===== PASO 3: Construir el documento electrónico a enviar al servicio web de integración de EBI ===== |
| - | %%Para mayor información y detalles sobre el proceso, puede consultar el %%**Manual de Integración de TFHKA** | + | %%Para mayor información y detalles sobre el proceso, puede consultar el %%**Manual de Integración de EBI ** |
| En este ejemplo utilizaremos Clases, Atributos y Métodos creados con la finalidad de organizar mejor la estructura del archivo y del cuerpo de código fuente en general. | En este ejemplo utilizaremos Clases, Atributos y Métodos creados con la finalidad de organizar mejor la estructura del archivo y del cuerpo de código fuente en general. | ||
| Línea 106: | Línea 106: | ||
| </ | </ | ||
| - | ===== PASO 4: Enviar el documento electrónico construido en el paso 3 al servicio web de integración de TFHKA ===== | + | ===== PASO 4: Enviar el documento electrónico construido en el paso 3 al servicio web de integración de EBI ===== |
| Se requiere crear un objeto de tipo EnviarResponse en el cual será utilizado para almacenar la respuesta del Servicio Web | Se requiere crear un objeto de tipo EnviarResponse en el cual será utilizado para almacenar la respuesta del Servicio Web | ||
| Línea 120: | Línea 120: | ||
| </ | </ | ||
| - | ===== PASO 5: Recibir y procesar la respuesta del servicio web de integración de TFHKA ===== | + | ===== PASO 5: Recibir y procesar la respuesta del servicio web de integración de EBI ===== |
| - | La respuesta del Servicio Web de TFHKA será enviada inmediatamente. | + | La respuesta del Servicio Web de EBI será enviada inmediatamente. |
| En este ejemplo, la respuesta del Servicio Web se muestra a través de la consola. | En este ejemplo, la respuesta del Servicio Web se muestra a través de la consola. | ||
| Línea 128: | Línea 128: | ||
| En caso de recibir una respuesta positiva para el envío del Documento Electrónico (código 200), los detalles serán mostrados a través de la página de Consulta de Facturas por Qr en su navegador de Internet. | En caso de recibir una respuesta positiva para el envío del Documento Electrónico (código 200), los detalles serán mostrados a través de la página de Consulta de Facturas por Qr en su navegador de Internet. | ||
| - | La respuesta del Servicio Web de TFHKA incluye: código de la respuesta, resultado, mensaje, cufe y Qr, entre otros. (ver el Examinador de Objetos de VisualStudio) | + | La respuesta del Servicio Web de EBI incluye: código de la respuesta, resultado, mensaje, cufe y Qr, entre otros. (ver el Examinador de Objetos de VisualStudio) |
| <code -> | <code -> | ||
| Línea 153: | Línea 153: | ||
| </ | </ | ||
| - | ===== Clases para armar el documento electrónico y elementos componentes, | + | ===== Clases para armar el documento electrónico y elementos componentes, |
| La definición de estas clases no es obligatoria ni requerida, pero sirven para ordenar la estructura de este documento y mostrar paso a paso la incorporación de los diferentes objetos que componen el objeto Documento Electrónico. | La definición de estas clases no es obligatoria ni requerida, pero sirven para ordenar la estructura de este documento y mostrar paso a paso la incorporación de los diferentes objetos que componen el objeto Documento Electrónico. | ||
| Línea 166: | Línea 166: | ||
| //DATOS REFERENCIALES CON FINES DE PRUEBA | //DATOS REFERENCIALES CON FINES DE PRUEBA | ||
| - | //Consultar Manual de Integracion | + | //Consultar Manual de Integracion |
| factura.codigoSucursalEmisor = " | factura.codigoSucursalEmisor = " | ||
| Línea 198: | Línea 198: | ||
| { | { | ||
| //DATOS REFERENCIALES CON FINES DE PRUEBA | //DATOS REFERENCIALES CON FINES DE PRUEBA | ||
| - | //Consultar Manual de Integracion | + | //Consultar Manual de Integracion |
| cliente.tipoClienteFE = " | cliente.tipoClienteFE = " | ||
| Línea 227: | Línea 227: | ||
| { | { | ||
| //DATOS REFERENCIALES CON FINES DE PRUEBA | //DATOS REFERENCIALES CON FINES DE PRUEBA | ||
| - | //Consultar Manual de Integracion | + | //Consultar Manual de Integracion |
| datosFactura.tipoEmision = " | datosFactura.tipoEmision = " | ||
| Línea 264: | Línea 264: | ||
| { | { | ||
| //DATOS REFERENCIALES CON FINES DE PRUEBA | //DATOS REFERENCIALES CON FINES DE PRUEBA | ||
| - | //Consultar Manual de Integracion | + | //Consultar Manual de Integracion |
| item.descripcion = " | item.descripcion = " | ||
| Línea 299: | Línea 299: | ||
| //DATOS REFERENCIALES CON FINES DE PRUEBA | //DATOS REFERENCIALES CON FINES DE PRUEBA | ||
| - | //Consultar Manual de Integracion | + | //Consultar Manual de Integracion |
| TotalesSubTotales.totalPrecioNeto = " | TotalesSubTotales.totalPrecioNeto = " | ||
| Línea 327: | Línea 327: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | ===== Clase para mostrar los mensajes por consola ===== | ||
| + | |||
| + | <code -> | ||
| + | public class Consola | ||
| + | |||
| + | { | ||
| + | |||
| + | //CLASE SÓLO CON FINES ESTÉTICOS PARA LA PRESENTACIÓN DE MENSAJES AL USUARIO A TRAVÉS DE LA CONSOLA. NO OBLIGATORIA | ||
| + | |||
| + | public static void mensaje(string mensaje, int colorInicio, | ||
| + | |||
| + | { | ||
| + | |||
| + | //Se establece color de la línea actual | ||
| + | |||
| + | switch (colorInicio) | ||
| + | |||
| + | { | ||
| + | |||
| + | case 1: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Cyan; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 2: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Yellow; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 3: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Gray; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 4: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Green; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 5: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Blue; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 6: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Red; | ||
| + | |||
| + | break; | ||
| + | |||
| + | default: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.White; | ||
| + | |||
| + | break; | ||
| + | |||
| + | } | ||
| + | |||
| + | //Se muestra el Mensaje indicado | ||
| + | |||
| + | Console.WriteLine(mensaje); | ||
| + | |||
| + | //Se establece color de la línea siguiente | ||
| + | |||
| + | switch (colorFin) | ||
| + | |||
| + | { | ||
| + | |||
| + | case 1: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Cyan; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 2: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Yellow; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 3: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Gray; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 4: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Green; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 5: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Blue; | ||
| + | |||
| + | break; | ||
| + | |||
| + | case 6: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.Red; | ||
| + | |||
| + | break; | ||
| + | |||
| + | default: | ||
| + | |||
| + | Console.ForegroundColor = ConsoleColor.White; | ||
| + | |||
| + | break; | ||
| + | |||
| + | } | ||
| + | |||
| + | if (leer == 1) | ||
| + | |||
| + | { | ||
| + | |||
| + | //Se espera por la pulsación de una tecla para continuar | ||
| + | |||
| + | Console.ReadKey(); | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | #endregion | ||
| + | |||
| + | } | ||
| </ | </ | ||