Example #1
0
        private void GetXmlValues(string xml)
        {
            try
            {
                var doc = new XmlDocument();
                doc.LoadXml(xml);

                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("myNS", "http://www2.superpag.com.br/Schemas");

                var nodeEstabelecimentoComercial = doc.SelectSingleNode("//myNS:EstabelecimentoComercial", nsmgr);
                var nodeOrder   = doc.SelectSingleNode("//myNS:EstabelecimentoComercial//myNS:OrdemPagamento", nsmgr);
                var nodePayment =
                    doc.SelectSingleNode("//myNS:EstabelecimentoComercial//myNS:OrdemPagamento//myNS:Pagamento", nsmgr);
                var nodePaymentDetails =
                    doc.SelectSingleNode(
                        "//myNS:EstabelecimentoComercial//myNS:OrdemPagamento//myNS:Pagamento//myNS:DetalhePagamento",
                        nsmgr);

                transactionStatus = nodePaymentDetails.Attributes["Status"].Value;
                OrderNumber       = nodeOrder.Attributes["Codigo"].Value;
                OrderNumber       = OrderNumber.Substring(0, 10);
                string keyXml      = nodeEstabelecimentoComercial.Attributes["SenhaAutenticacao"].Value;
                string passwordXml = nodeEstabelecimentoComercial.Attributes["ChaveAutenticacao"].Value;
                string key         = GetConfigEntry("paymentGatewayEncryptionKey");
                string password    = GetConfigEntry("paymentGatewayPassword");

                if ((key == keyXml) && (password == passwordXml))
                {
                    IsApproved = (nodePaymentDetails.Attributes["Status"].Value == "1");
                    // 1 means approved, 5 means processing, other mean declined
                    IsCancelled          = (nodePaymentDetails.Attributes["Status"].Value == "3");
                    IsPendingTransaction = (nodePaymentDetails.Attributes["Status"].Value == "5");
                    AuthorizationCode    = nodePaymentDetails.Attributes["NumeroAutorizacao"].Value;
                    TransactionCode      = nodePaymentDetails.Attributes["IdTransacaoIF"].Value;
                    CanSubmitIfApproved  = true;
                    Status = OrderProvider.GetPaymentGatewayRecordStatus(OrderNumber);
                }
                else
                {
                    AuthResultMissing = true;
                    IsApproved        = false;
                    // 1 means approved, 5 means processing, other mean declined
                    AuthorizationCode   = "";
                    TransactionCode     = "";
                    CanSubmitIfApproved = false;
                }
            }

            catch (Exception ex)
            {
                //TODO: Fix swallowed exception
                string exception = ex.ToString();
            }
        }