Beispiel #1
0
        /// <summary>
        /// Devuelve un objeto que indica el estado del proceso y en caso de haber terminado, devuelve adjunta la ruta del XML que contiene la Constancia de Recepción
        /// </summary>
        /// <param name="pstrTicket">Ticket proporcionado por la sunat</param>
        /// <returns>Estado del Ticket, y la ruta de la respuesta si existe</returns>
        public async Task <SunatResponse> GetStatus(string pstrTicket)
        {
            var res = new SunatResponse();

            try
            {
                var service = ServiceHelper.GetService <billService>(_config, _url);

                var result = await service.getStatusAsync(new getStatusRequest(pstrTicket));

                var response = result.status;
                switch (response.statusCode)
                {
                case "0":
                case "99":
                    res.Success = true;
                    using (var xmlCdr = ProcessZip.ExtractFile(response.content))
                        res.ApplicationResponse = ProcessXml.GetAppResponse(xmlCdr);

                    res.ContentZip = response.content;
                    break;

                case "98":
                    res.Success = false;
                    res.Error   = new ErrorResponse {
                        Description = "En Proceso..."
                    };
                    break;

                default:
                    res.Error = new ErrorResponse
                    {
                        Code        = response.statusCode,
                        Description = ProcessXml.GetDescriptionError(response.statusCode),
                    };
                    break;
                }
            }
            catch (FaultException ex)
            {
                res.Error = GetErrorFromFault(ex);
            }
            catch (Exception er)
            {
                res.Error = new ErrorResponse
                {
                    Description = er.Message,
                };
            }
            return(res);
        }
Beispiel #2
0
        /// <summary>
        /// Recibe la ruta XML con un único formato digital y devuelve la Constancia de Recepción – SUNAT.
        /// </summary>
        /// <param name="pathFile">Ruta del Archivo XML</param>
        /// <param name="content">Contenido del archivo</param>
        /// <returns>La respuesta contenida en el XML de Respuesta de la Sunat, si existe</returns>
        public async Task <SunatResponse> SendDocument(string pathFile, byte[] content)
        {
            var fileToZip     = pathFile + Resources.ExtensionFile;
            var nameOfFileZip = pathFile + Resources.ExtensionZipFile;

            var res = new SunatResponse
            {
                Success = false
            };

            try
            {
                var zipBytes = ProcessZip.CompressFile(fileToZip, content);
                var service  = ServiceHelper.GetService <billService>(_config, _url);
                var result   = await service.sendBillAsync(new sendBillRequest(nameOfFileZip, zipBytes));

                using (var outputXml = ProcessZip.ExtractFile(result.applicationResponse))
                    res = new SunatResponse
                    {
                        Success             = true,
                        ApplicationResponse = ProcessXml.GetAppResponse(outputXml),
                        ContentZip          = result.applicationResponse
                    };
            }
            catch (FaultException ex)
            {
                res.Error = GetErrorFromFault(ex);
            }
            catch (Exception er)
            {
                res.Error = new ErrorResponse
                {
                    Description = er.Message
                };
            }

            return(res);
        }
        private WsResult FromSunatResponse(SunatResponse response)
        {
            var res = new WsResult
            {
                Success = response.Success
            };

            if (res.Success)
            {
                var app = response.ApplicationResponse;
                res.Description   = app.Descripcion;
                res.ContentZipCdr = response.ContentZip;
                res.Code          = app.Codigo.Equals("0")
                    ? (app.Notas.Length == 0 ? CodeStatus.EnviadoAceptado : CodeStatus.EnviadoAceptadoConObs)
                    : CodeStatus.Rechazado;
            }
            else
            {
                res.Description = $"{response.Error.Code} - {response.Error.Description}";
                res.Code        = CodeStatus.ConErrores;
            }

            return(res);
        }
        public SunatResponse GetSunatAsync(string nuRUC)
        {
            var responseSunat = new SunatResponse();

            SunatRUC sunatRUC = new SunatRUC
            {
                ruc = nuRUC
            };

            var json = JsonConvert.SerializeObject(sunatRUC);
            var data = new StringContent(json, Encoding.UTF8, "application/json");

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://api.municallao.gob.pe/pide/public/v1/consulta-ruc");
                var result = client.PostAsync(client.BaseAddress, data).Result;

                if (result.IsSuccessStatusCode)
                {
                    string resultContent = result.Content.ReadAsStringAsync().Result;

                    // var listado = JsonConvert.DeserializeObject<Rootobject>(resultContent);

                    JObject objResult = JObject.Parse(resultContent);

                    SunatDatos personaJuridica = new SunatDatos();

                    string x = string.Concat("\"ddp_ubigeo\":", ":{\"@type\":\"xsd:string\",\"$\"");

                    if (resultContent.IndexOf(string.Concat("\"ddp_ubigeo\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_ubigeo = objResult["datos"]["list"]["multiRef"]["ddp_ubigeo"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"cod_dep\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.cod_dep = objResult["datos"]["list"]["multiRef"]["cod_dep"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_dep\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_dep = objResult["datos"]["list"]["multiRef"]["desc_dep"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"cod_prov\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.cod_prov = objResult["datos"]["list"]["multiRef"]["cod_prov"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_prov\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_prov = objResult["datos"]["list"]["multiRef"]["desc_prov"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"cod_dist\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.cod_dist = objResult["datos"]["list"]["multiRef"]["cod_dist"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_dist\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_dist = objResult["datos"]["list"]["multiRef"]["desc_dist"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_ciiu\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_ciiu = objResult["datos"]["list"]["multiRef"]["ddp_ciiu"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_ciiu\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_ciiu = objResult["datos"]["list"]["multiRef"]["desc_ciiu"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_estado\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_estado = objResult["datos"]["list"]["multiRef"]["ddp_estado"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_estado\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_estado = objResult["datos"]["list"]["multiRef"]["desc_estado"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_fecact\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_fecact = objResult["datos"]["list"]["multiRef"]["ddp_fecact"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_fecalt\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_fecalt = objResult["datos"]["list"]["multiRef"]["ddp_fecalt"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_fecbaj\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_fecbaj = objResult["datos"]["list"]["multiRef"]["ddp_fecbaj"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_identi\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_identi = objResult["datos"]["list"]["multiRef"]["ddp_identi"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_identi\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_identi = objResult["datos"]["list"]["multiRef"]["desc_identi"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_lllttt\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_lllttt = objResult["datos"]["list"]["multiRef"]["ddp_lllttt"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_nombre\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_nombre = objResult["datos"]["list"]["multiRef"]["ddp_nombre"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_nomvia\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_nomvia = objResult["datos"]["list"]["multiRef"]["ddp_nomvia"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_numer1\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_numer1 = objResult["datos"]["list"]["multiRef"]["ddp_numer1"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_inter1\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_inter1 = objResult["datos"]["list"]["multiRef"]["ddp_inter1"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_nomzon\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_nomzon = objResult["datos"]["list"]["multiRef"]["ddp_nomzon"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_refer1\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_refer1 = objResult["datos"]["list"]["multiRef"]["ddp_refer1"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_flag22\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_flag22 = objResult["datos"]["list"]["multiRef"]["ddp_flag22"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_flag22\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_flag22 = objResult["datos"]["list"]["multiRef"]["desc_flag22"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_numreg\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_numreg = objResult["datos"]["list"]["multiRef"]["ddp_numreg"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_numreg\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_numreg = objResult["datos"]["list"]["multiRef"]["desc_numreg"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_numruc\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_numruc = objResult["datos"]["list"]["multiRef"]["ddp_numruc"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_tipvia\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_tipvia = objResult["datos"]["list"]["multiRef"]["ddp_tipvia"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_tipvia\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_tipvia = objResult["datos"]["list"]["multiRef"]["desc_tipvia"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_tipzon\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_tipzon = objResult["datos"]["list"]["multiRef"]["ddp_tipzon"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_tipzon\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_tipzon = objResult["datos"]["list"]["multiRef"]["desc_tipzon"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_tpoemp\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_tpoemp = objResult["datos"]["list"]["multiRef"]["ddp_tpoemp"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"desc_tpoemp\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.desc_tpoemp = objResult["datos"]["list"]["multiRef"]["desc_tpoemp"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"ddp_secuen\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.ddp_secuen = objResult["datos"]["list"]["multiRef"]["ddp_secuen"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"esActivo\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.esActivo = objResult["datos"]["list"]["multiRef"]["esActivo"]["$"].ToString();
                    }

                    if (resultContent.IndexOf(string.Concat("\"esHabido\"", ":{\"@type\":\"xsd:string\",\"$\"")) >= 0)
                    {
                        personaJuridica.esHabido = objResult["datos"]["list"]["multiRef"]["esHabido"]["$"].ToString();
                    }

/*
 *                  if (resultContent.IndexOf("getDomicilioLegalReturn") >= 0)
 *                      personaJuridica.getDomicilioLegalReturn = objResult["datos"]["dlegal"]["list"]["getDomicilioLegalResponse"]["getDomicilioLegalReturn"]["$"].ToString();
 *
 *                  if (resultContent.IndexOf("getRepLegalesReturn") >= 0)
 *                      personaJuridica.getRepLegalesReturn = objResult["datos"]["replegal"]["list"]["getRepLegalesResponse"]["getRepLegalesReturn"]["$"].ToString();
 */
                    responseSunat.sunatDatos  = personaJuridica;
                    responseSunat.coResultado = "0000";
                    responseSunat.deResultado = "Ok";
                }
                else
                {
                    responseSunat.coResultado = "9999";
                    responseSunat.deResultado = "Bad";
                }
            }
            return(responseSunat);
        }