Ejemplo n.º 1
0
 /// <summary>
 ///     Si el timbrado fue exitoso, guarda automáticamente el registro en la tabla [RegistroTimbrado]
 /// </summary>
 /// <param name="comprobanteTimbrado">El comprobante timbrado a guardar</param>
 /// <returns>true si se guardo correctamente el registro, false de lo contrario</returns>
 private void GuardarBd(ComprobanteTimbrado comprobanteTimbrado)
 {
     try
     {
         _db.Conectar();
         _db.CrearComando(@"INSERT INTO RegistroTimbrado (RFC_EMISOR, RFC_RECEPTOR, SERIE, UUID, FECHATIMBRADO, XML_BASE64) VALUES (@rfcEmisor, @rfcReceptor, @serie, @uuid, @fecha, @xml)");
         _db.AsignarParametroCadena("@rfcEmisor", _rfcEmisor);
         _db.AsignarParametroCadena("@rfcReceptor", _rfcReceptor);
         _db.AsignarParametroCadena("@serie", _serie);
         _db.AsignarParametroCadena("@uuid", comprobanteTimbrado.Uuid);
         _db.AsignarParametroCadena("@fecha", comprobanteTimbrado.FechaTimbrado);
         _db.AsignarParametroCadena("@xml", comprobanteTimbrado.XmlTimbradoBase64);
         Log("GuardarBD-Timbrado-Consulta=" + _db.comando.CommandText);
         _db.EjecutarConsulta1();
         Log("GuardarBD-Timbrado-OK");
     }
     catch
     {
         // ignored
         Log("GuardarBD-Timbrado-ERROR");
     }
     finally
     {
         if (_db != null)
         {
             _db.Desconectar();
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///     Timbra un comprobante con el PAC
        /// </summary>
        /// <param name="url">URL del PAC (produccion o pruebas)</param>
        /// <param name="token">Token definido para la empresa (produccion o pruebas)</param>
        /// <param name="postBody">Información en JSON a emitir al PAC</param>
        /// <returns>El objeto coteniendo los valores de timbrado</returns>
        private async Task <ComprobanteTimbrado> ProcesarComprobante(string url, string token, string postBody)
        {
            var httpClient = new HttpClient();
            ComprobanteTimbrado comprobante = null;
            var response = "";

            try
            {
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.DefaultRequestHeaders.Add("Token", token);
                var wcfResponse = await httpClient.PostAsync(url, new StringContent(postBody, Encoding.UTF8, "application/json")).ConfigureAwait(false);

                response = await wcfResponse.Content.ReadAsStringAsync();

                Log("ProcesarComprobante-response=" + response);
                var result = (Dictionary <string, object>) new JavaScriptSerializer().DeserializeObject(response);
                if (wcfResponse.IsSuccessStatusCode)
                {
                    comprobante = new ComprobanteTimbrado
                    {
                        Uuid              = result["uuid"].ToString(),
                        FechaTimbrado     = result["fechaTimbrado"].ToString(),
                        XmlTimbradoBase64 = result[GetField(url)].ToString()
                    };
                    Log("ProcesarComprobante-comprobante-Uuid=" + comprobante.Uuid);
                    Log("ProcesarComprobante-comprobante-fechaTimbrado=" + comprobante.FechaTimbrado);
                    Log("ProcesarComprobante-comprobante-XmlTimbradoBase64=" + comprobante.XmlTimbradoBase64);
                    GuardarBd(comprobante);
                }
                else
                {
                    LastError = result["mensaje"].ToString();
                    Log("ProcesarComprobante-LastError=" + LastError);
                }
            }
            catch
            {
                var result = (object[])new JavaScriptSerializer().DeserializeObject(response);
                LastError = ((Dictionary <string, object>)result.First())["mensaje"].ToString();
                Log("ProcesarComprobante-LastError=" + LastError);
                comprobante = null;
            }
            finally
            {
                httpClient.Dispose();
            }
            return(comprobante);
        }