示例#1
0
        public Akatus.Carrinho.Retorno processaTransacao()
        {
            //Armazena dados de retorno
            Akatus.Carrinho.Retorno retorno;

            //Monta XML
            string xml = montaXML();

            #region Envia XML

            //URL de Destino (https://www.akatus.com/api/v1/carrinho.xml)
            string urlDestino = Akatus.Config.Ambiente == Akatus.Enums.Ambiente.producao ? urlProducao : urlTestes;

            //Envia Dados
            string resultado = Akatus.Rest.post(urlDestino, xml);

            //Verifica se o XML é válido
            bool isValidXml = Akatus.Util.IsValidXML(resultado);

            if (isValidXml == true)
            {
                //Cria XML
                System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();

                //Carrega XML
                xmlDoc.LoadXml(resultado);

                //Pega dados
                System.Xml.XmlNodeList xmlResults = xmlDoc.GetElementsByTagName("resposta");

                if (xmlResults.Count > 0)
                {
                    System.Xml.XmlNode xmlResult = xmlResults[0];

                    //Dados de Resposta
                    retorno = new Akatus.Carrinho.Retorno();

                    #region Seta propriedades

                    retorno.Carrinho  = xmlResult["carrinho"].InnerText;
                    retorno.Transacao = xmlResult["transacao"].InnerText;

                    string status = xmlResult["status"].InnerText.ToString();

                    if (status == "Aguardando Pagamento")
                    {
                        retorno.Status = Enums.StatusTransacao.aguardandoPagamento;
                    }
                    else if (status == "Em Análise")
                    {
                        retorno.Status = Enums.StatusTransacao.emAnalise;
                    }
                    else if (status == "Aprovado")
                    {
                        retorno.Status = Enums.StatusTransacao.aprovado;
                    }
                    else if (status == "Cancelado")
                    {
                        retorno.Status = Enums.StatusTransacao.cancelado;
                    }
                    else if (status == "Processando")
                    {
                        retorno.Status = Akatus.Enums.StatusTransacao.processando;
                    }
                    else if (status == "Completo")
                    {
                        retorno.Status = Akatus.Enums.StatusTransacao.completo;
                    }
                    else if (status == "Devolvido")
                    {
                        retorno.Status = Akatus.Enums.StatusTransacao.devolvido;
                    }
                    else if (status == "Estornado")
                    {
                        retorno.Status = Akatus.Enums.StatusTransacao.estornado;
                    }
                    else if (status == "Chargeback")
                    {
                        retorno.Status = Akatus.Enums.StatusTransacao.chargeback;
                    }

                    if (this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.boleto ||
                        this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.tef_itau ||
                        this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.tef_bradesco)
                    {
                        //URL do boleto ou a página do banco, no caso de TEF
                        retorno.UrlRetorno = xmlResult["url_retorno"].InnerText;
                    }
                    else if (this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_amex ||
                             this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_diners ||
                             this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_elo ||
                             this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_master ||
                             this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_visa)
                    {
                        //Identificador da transação, usado para controle interno do seu sistema (Retornado somente quando o meio de pagamento é cartão de crédito)
                        retorno.Referencia = xmlResult["referencia"].InnerText;
                    }

                    #endregion
                }
                else
                {
                    //Erro
                    throw new System.ArgumentException("O XML não retornou nós filhos", resultado);
                }
            }
            else
            {
                //Erro
                throw new System.ArgumentException("Formato de XML inválido", resultado);
            }

            #endregion

            //Retorna resposta
            return(retorno);
        }
示例#2
0
        public Akatus.Carrinho.Retorno processaTransacao()
        {
            //Armazena dados de retorno
            Akatus.Carrinho.Retorno retorno;

            //Monta XML
            string xml = montaXML();

            #region Envia XML

            //URL de Destino (https://www.akatus.com/api/v1/carrinho.xml)
            string urlDestino = Akatus.Config.Ambiente == Akatus.Enums.Ambiente.producao ? urlProducao : urlTestes;

            //Envia Dados
            string resultado = Akatus.Rest.post(urlDestino, xml);

            //Verifica se o XML é válido
            bool isValidXml = Akatus.Util.IsValidXML(resultado);

            if (isValidXml == true)
            {
                //Cria XML
                System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();

                //Carrega XML
                xmlDoc.LoadXml(resultado);

                //Pega dados
                System.Xml.XmlNodeList xmlResults = xmlDoc.GetElementsByTagName("resposta");

                if (xmlResults.Count > 0)
                {
                    System.Xml.XmlNode xmlResult = xmlResults[0];

                    //Dados de Resposta
                    retorno = new Akatus.Carrinho.Retorno();

                    #region Seta propriedades

                    retorno.Carrinho = xmlResult["carrinho"].InnerText;
                    retorno.Transacao = xmlResult["transacao"].InnerText;

                    string status = xmlResult["status"].InnerText.ToString();

                    if (status == "Aguardando Pagamento")
                        retorno.Status = Enums.StatusTransacao.aguardandoPagamento;
                    else if (status == "Em Análise")
                        retorno.Status = Enums.StatusTransacao.emAnalise;
                    else if (status == "Aprovado")
                        retorno.Status = Enums.StatusTransacao.aprovado;
                    else if (status == "Cancelado")
                        retorno.Status = Enums.StatusTransacao.cancelado;
                    else if (status == "Processando")
                        retorno.Status = Akatus.Enums.StatusTransacao.processando;
                    else if (status == "Completo")
                        retorno.Status = Akatus.Enums.StatusTransacao.completo;
                    else if (status == "Devolvido")
                        retorno.Status = Akatus.Enums.StatusTransacao.devolvido;
                    else if (status == "Estornado")
                        retorno.Status = Akatus.Enums.StatusTransacao.estornado;
                    else if (status == "Chargeback")
                        retorno.Status = Akatus.Enums.StatusTransacao.chargeback;

                    if (this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.boleto
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.tef_itau
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.tef_bradesco)
                    {
                        //URL do boleto ou a página do banco, no caso de TEF
                        retorno.UrlRetorno = xmlResult["url_retorno"].InnerText;
                    }
                    else if (this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_amex
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_diners
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_elo
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_master
                        || this.Transacao.MeioDePagamento == Akatus.Enums.MeioDePagamento.cartao_visa)
                    {
                        //Identificador da transação, usado para controle interno do seu sistema (Retornado somente quando o meio de pagamento é cartão de crédito)
                        retorno.Referencia = xmlResult["referencia"].InnerText;
                    }

                    #endregion
                }
                else
                {
                    //Erro
                    throw new System.ArgumentException("O XML não retornou nós filhos", resultado);
                }

            }
            else
            {
                //Erro
                throw new System.ArgumentException("Formato de XML inválido", resultado);
            }

            #endregion

            //Retorna resposta
            return retorno;
        }