コード例 #1
0
        public Resultados Activacion(WSConecFM.activarCancelacion activarCancelacion)
        {
            Resultados result = new Resultados();
            string cer = activarCancelacion.archivoCer;
            string key = activarCancelacion.archivoKey;
            string clv = activarCancelacion.clave;
            try
            {
                if (File.Exists(cer))
                {
                    X509Certificate2 cert = new X509Certificate2(cer);
                    cer = Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks);
                    cer = cer.Replace("\n", "");
                } else
                    // Codificar a base 64 el contenido del certificado
                    cer = Convert.ToBase64String(Encoding.UTF8.GetBytes(cer));
                // Agregar el certificado codificado en base64 a la peticion SOAP
                activarCancelacion.archivoCer = cer;

                if (File.Exists(key))
                {
                    byte[] llavePrivadaBytes = System.IO.File.ReadAllBytes(@key);
                    key = Convert.ToBase64String(llavePrivadaBytes);

                } else
                    // Codificar a base 64 el contenido del archivo  key
                    key = Convert.ToBase64String(Encoding.UTF8.GetBytes(key));
                // Agregar el certificado codificado en base64 a la peticion SOAP
                activarCancelacion.archivoKey = key;

                //  Conexion con el WS de Facturacion Moderna
                BasicHttpBinding binding = new BasicHttpBinding();
                setBinding(binding);

                // Direccion del servicio SOAP de Prueba
                EndpointAddress endpoint = new EndpointAddress(activarCancelacion.urlActivarCancelacion);

                // Crear instancia al servisio SOAP de cancelado
                WSLayoutFacturacionModerna.Timbrado_ManagerPort WSFModerna = new WSLayoutFacturacionModerna.Timbrado_ManagerPortClient(binding, endpoint);

                // Ejecutar servicio de Cancelado
                Object response = WSFModerna.activarCancelacion(activarCancelacion);
                if (response != null)
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    XmlDeclaration xmlDeclaration;
                    XmlElement xmlElementBody;
                    xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "uft-8", "no");
                    xmlElementBody = xmlDoc.CreateElement("Container");
                    xmlDoc.InsertBefore(xmlElementBody, xmlDoc.DocumentElement);
                    XmlElement xmlParentNode;
                    xmlParentNode = xmlDoc.CreateElement("responseSoap");
                    xmlDoc.DocumentElement.PrependChild(xmlParentNode);
                    XmlNode[] nodosXmlResponse = (XmlNode[])response;
                    foreach (XmlNode nodo in nodosXmlResponse)
                    {
                        if (nodo.InnerText.Length >= 1)
                        {
                            XmlElement xmlElemetResponse;
                            xmlElemetResponse = xmlDoc.CreateElement(nodo.Name.ToString());
                            XmlText xmlTextNode;
                            xmlTextNode = xmlDoc.CreateTextNode(nodo.InnerText.ToString());
                            xmlParentNode.AppendChild(xmlElemetResponse);
                            xmlElemetResponse.AppendChild(xmlTextNode);
                        }
                    }
                    XmlElement xmlElementMsg = (XmlElement)xmlDoc.GetElementsByTagName("mensaje").Item(0);
                    XmlElement xmlElementCode = (XmlElement)xmlDoc.GetElementsByTagName("codigo").Item(0);
                    result.message = xmlElementMsg.InnerText;
                    result.code = xmlElementCode.InnerText;
                    result.status = true;
                    return result;
                }
                else
                {
                    result.code = "C00N";
                    result.message = "El servicio de Cancelado respondio con NULL";
                    result.status = false;
                    return result;
                }
            }
            catch (Exception e)
            {
                result.code = "EX-001";
                result.message = "Error: " + e.Message;
                result.status = false;
                return result;
            }
        }