Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriel Santana_62112

[Resolvido] ASP.NET C# Erro Retorno Automático

Recommended Posts

Boa noite,

 

estou integrando uma loja virtual com o PagSeguro (a terceira). E dessa vez não há milagre que faça o retorno automático funcionar... O pagamento está indo ok.

 

O endereço da loja é: www.martinscafe.com/loja

O e-mail do PagSeguro é: mariano@martinscafe.com

Meu e-mail é: gabriel@zaft.com.br

 

A requisição do PagSeguro está chegando sempre como GET e não entra no IF que verifica o tipo da requisição. Usava a biblioteca do Valois, inclusive uso ela em outro projeto que funciona perfeitamente.

 

Segue abaixo o código fonte que valida a requisição, peguei o padrão do UOL Host para testar, já que com a ddl do Valois não tava funcionando também.

 

Outro ponto, quando faço testes com o servidor de testes do Valois localmente tudo funciona perfeitamente, o problema só ocorrem em produção.

 

Se alguém puder ajudar, agradeço e muito. Att.

 

ASPX.CS

protected void Page_Load(object sender, EventArgs e)
   {
       if (Request.HttpMethod == "POST")
       {
           //o método POST indica que a requisição é o retorno da validação NPI.

           string Token = "1234567"; //estou informando o token correto, so ocultei no post
           string Pagina = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml";
           string Dados = HttpContext.Current.Request.Form.ToString() + "&Comando=validar" + "&Token=" + Token;

           Util.SQLUtility.enviaEmail("gabriel@zaft.com.br", "site@martinscafe.com", "dados", Dados);

           System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(Pagina);

           req.Method = "POST";
           req.ContentLength = Dados.Length;
           req.ContentType = "application/x-www-form-urlencoded";

           System.IO.StreamWriter stOut = new System.IO.StreamWriter(req.GetRequestStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
           stOut.Write(Dados);
           stOut.Close();

           System.IO.StreamReader stIn = new System.IO.StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
           string Result = stIn.ReadToEnd();
           stIn.Close();

           if (Result == "VERIFICADO")
           {
               Util.SQLUtility.enviaEmail("gabriel@zaft.com.br", "site@martinscafe.com", "validou", "validou");
           }
           else if (Result == "FALSO")
           {
               //o post nao foi validado
               Util.SQLUtility.enviaEmail("gabriel@zaft.com.br", "site@martinscafe.com", "nao validou", "nao validou");
           }
           else
           {
               //erro na integração com PagSeguro.
               Util.SQLUtility.enviaEmail("gabriel@zaft.com.br", "site@martinscafe.com", "erro", "erro");
           }
       }
       else if (Request.HttpMethod == "GET")
       {            
           //o método GET indica que a requisição é o retorno do Checkout PagSeguro para o site vendedor.
           //no término do checkout o usuário é redirecionado para este bloco.
           Util.SQLUtility.enviaEmail("gabriel@zaft.com.br", "site@martinscafe.com", "get", "get");
       }
   }

 

ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="retorno-teste.aspx.cs" Inherits="loja_retorno_teste" Trace="true" TraceMode="SortByTime" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title>Untitled Page</title>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
   <form id="form1" runat="server">
   <div>

   </div>
   </form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais dados chegam como $_GET, no retorno de dados todos dados devem chegar via $_POST.

 

Acho que você configurou a pagina de redirecionamento para enviar os dados para essa sua pagina, somente nessa pagina que o PagSeguro envia os dados via $_GET.

 

Desative essa opção, ou utilize outra pagina para ser a pagina de redirecionamento.

 

Para entrar no IF VERIFICADO, você precisa ver se o seu token está correto. Muitas vezes é problema de token, porem como você falou que está chegando os dados via $_GET ou invez de $_POST, então faz sentido não está caindo verificado.

 

Então veja 3 coisas. Não configure a pagina de redirecionamento para esse arquivo, verifique seu token, e por ultimo veja se a pagina está como ISO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.