Esempio n. 1
0
        public ActionResult PagSeguro()
        {
            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            log.Debug("-------------------------------PagSeguro");
            Sacola  sacola  = (Sacola)HttpContext.Session["sacola"];
            Usuario usuario = (Usuario)HttpContext.Session["usuario"];
            Pedido  pedido  = (Pedido)HttpContext.Session["pedido"];
            string  code    = "";

            if (pedido == null)
            {
                pedido = new Pedido();
                long ultimoId = PedidoBO.ObterUltimoId();
                pedido.Id = long.Parse(PreencherId(ultimoId.ToString()));
            }

            try
            {
                //var url = "https://ws.pagseguro.uol.com.br/v2/checkout";
                var url     = "https://ws.sandbox.pagseguro.uol.com.br/v2/checkout";
                var content = "";
                content += "[email protected]";
                //content += "[email protected]";
                // content += "&token=a88fbdb1-2df5-45dc-af24-c7f64e303653b58a0b24483fb536ac84be8b536da9d9f8b9-10a6-4177-a75c-5ae7e249ad1c";
                content += "&token=5269A70FB9FD41D3A2BDD1C305B142AE";
                content += "&currency=BRL";
                content += "&reference=" + pedido.Id;



                string[] telefones = new string[2];
                string   ddd       = "(31)";
                string   tel       = "99304-7540";
                string   nome      = usuario.Nome;
                string   email     = "*****@*****.**";
                string   telefone  = ddd + tel;
                if (!String.IsNullOrWhiteSpace(telefone) && telefone.Contains(")") && telefone.Contains("-"))
                {
                    telefones = telefone.Split(')');
                    ddd       = telefones[0].Replace("(", "").Replace(")", "");
                    tel       = telefones[1].Replace(")", "").Replace("-", "");
                    //    content += "&reference = " + pedido.Id;
                    content += "&senderName=" + nome;
                    content += "&senderAreaCode=" + ddd;
                    content += "&senderPhone=" + tel;
                    content += "&senderEmail=" + email;
                    content += "&shippingType=2";
                    content += "&shippingCost=" + sacola.Sedex.ToString("N2").Replace(",", ".");
                    content += "&shippingAddressStreet=" + sacola.Rua;
                    content += "&shippingAddressNumber=" + sacola.NumeroEndereco;
                    content += "&shippingAddressDistrict=" + sacola.Bairro;
                    content += "&shippingAddressPostalCode=" + sacola.Cep;
                    content += "&shippingAddressCity=" + sacola.Cidade;
                    content += "&shippingAddressState=" + sacola.Estado;
                    content += "&shippingAddressCountry=BRA";
                    content  = RecuperarProdutos(content, sacola.Produtos);

                    var xmlResult = "";
                    var task      = new Task(() =>
                    {
                        xmlResult = RestService <String> .AccessTheWebAsync(url, content, "post").Result;
                    });
                    task.Start();
                    task.Wait();

                    if (!string.IsNullOrEmpty(xmlResult))
                    {
                        var _doc      = XDocument.Parse(xmlResult);
                        var hasErrors = _doc.Descendants("errors").Count() > 0;

                        if (!hasErrors)
                        {
                            log.Debug("-------------------------------PagSeguro - OK - Checkout Efetuado sem erros");
                            log.Debug("-------------------------------Criar Pedido");
                            CriarPedido(usuario.Email, pedido.Id);
                            log.Debug("-------------------------------Pedido - OK - Pedido criado sem Erros");
                            var checkout = _doc.Descendants("checkout");
                            code = checkout.FirstOrDefault().Element("code").Value;
                            //_navegacao.NavigateTo("PagSeguroUOL", code);
                            //  PagSeguro pagseguro = new PagSeguro();
                            //  pagseguro.Content = "https://pagseguro.uol.com.br/v2/checkout/payment.html?code=" + code;
                            //  HttpContext.Session["sacola"] = null;
                            //    return new RedirectResult(pagseguro.Content);
                            //    return View("Cart", sacola);
                        }
                        else
                        {
                            TempData["Erro"] = "Erro no Pag Seguro " + xmlResult;
                            log.Debug("-------------------------------Pedido - NOK " + xmlResult);
                        }
                    }
                }
                else
                {
                    // page.DisplayAlert("Erro", "Formato de telefone inválido(XX)XXXXX-XXXX.", "Ok");
                    TempData["Erro"]    = "Erro no Web Service";
                    ViewBag.Ocorrencias = "Erro no Pag Seguro ";
                    log.Debug("-------------------------------Pedido - NOK " + "Erro no Pag Seguro ");
                }
            }
            catch (Exception ex)
            {
                log.Debug("-------------------------------PagSeguro - NOK " + ex.ToString());
                TempData["Erro"] = ex.Message;
                return(new RedirectResult("~/Home/Cart"));
            }


            return(new RedirectResult("~/Home/Cart?listaProduto=''&code=" + code));
        }