Ejemplo n.º 1
0
        /// <summary>
        /// Enviar documento ZIP al WS Sunat
        /// </summary>
        /// <param name="tramaArchivo">Cadena Base64 de la trama del archivo</param>
        /// <param name="nombreArchivo">Nombre del archivo (sin extension)</param>
        /// <returns>Devuelve una tupla con la cadena Base64 del ZIP de respuesta (CDR) y un booleano si SUNAT responde correctamente</returns>
        public Tuple <string, bool> EnviarDocumento(string tramaArchivo, string nombreArchivo)
        {
            var dataOrigen = Convert.FromBase64String(tramaArchivo);
            Tuple <string, bool> response;

            try
            {
                _proxy.Open();
                var resultado = _proxy.sendBill(nombreArchivo, dataOrigen);

                _proxy.Close();

                response = new Tuple <string, bool>(Convert.ToBase64String(resultado), true);
            }
            catch (FaultException ex)
            {
                /* response = new Tuple<string, bool>(!Retencion
                 *   ? ex.Code.Name : ex.Message, false);*/
                response = new Tuple <string, bool>(string.Concat(ex.Code.Name, ex.Message), false);
            }
            catch (Exception ex)
            {
                var msg       = string.Concat(ex.InnerException.Message, ex.Message);
                var faultCode = "<faultcode>";
                if (msg.Contains(faultCode))
                {
                    var posicion    = msg.IndexOf(faultCode, StringComparison.Ordinal);
                    var codigoError = msg.Substring(posicion + faultCode.Length, 4);
                    msg = "El Código de Error es " + codigoError;
                }
                response = new Tuple <string, bool>(msg, false);
            }

            return(response);
        }
        RespuestaSincrono IServicioSunatConsultas.ConsultarConstanciaDeRecepcion(DatosDocumento request)
        {
            var response = new RespuestaSincrono();

            try
            {
                _proxyConsultas.Open();
                var resultado = _proxyConsultas.getStatusCdr(request.RucEmisor, request.TipoComprobante, request.Serie, request.Numero);

                _proxyConsultas.Close();

                var estado = (resultado.statusCode != "98");

                response.ConstanciaDeRecepcion = estado  ?   Convert.ToBase64String(resultado.content)   :   "Aun en proceso";
                response.Exito = true;
            }
            catch (FaultException ex)
            {
                response.MensajeError = string.Concat(ex.Code.Name, ex.Message);
            }
            catch (Exception ex)
            {
                var msg = ex.InnerException != null?string.Concat(ex.InnerException.Message, ex.Message) :   ex.Message;

                if (msg.Contains(Formatos.FaultCode))
                {
                    var posicion    = msg.IndexOf(Formatos.FaultCode, StringComparison.Ordinal);
                    var codigoError = msg.Substring(posicion + Formatos.FaultCode.Length, 4);
                    msg = $"El Código de Error es {codigoError}";
                }
                response.MensajeError = msg;
            }

            return(response);
        }
Ejemplo n.º 3
0
        protected void btnEnviarSunat_Click(object sender, EventArgs e)
        {
            try
            {
                //var sunat = new WS_SUNAT.billServiceClient();
                //sunat.sendBill(@"D:\DESARROLLO\SMART\SMART.Presentacion\XML\CDA\Final\Casos con maxima informacion\20100066603-RC-20110522-1.xml", null);
                //lblMensaje.Text = "Exito";

                byte[] byteArray = File.ReadAllBytes(@"D:\DESARROLLO\SMART\SMART.Presentacion\XML\CDA\Final\Casos con maxima informacion" + "\\" + "20100066603-01-F001-1.zip");

                // WS_SUNAT.billServiceClient ws = new WS_SUNAT.billServiceClient();
                WS_BETA.billServiceClient ws = new billServiceClient();
                ws.Open();
                byte[] oRetorno;
                oRetorno        = ws.sendBill("20100066603-01-F001-1.zip", byteArray, "");
                lblMensaje.Text = "Exito";
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                lblMensaje.Text = "Error: " + exception.Message;
            }
        }