Usuário com melhor resposta
PagSeguro e Asp.Net MVC (Página de retorno)

Pergunta
-
Olá amigos, acredito que alguém aqui já tenha passado por algo parecido.
Estou integrando uma aplicação asp.net mvc ao Pagseguro, e estou tendo um problema na página de retorno que o pagseguro envia um request conforme o andamento do pagamento em questão. Em webforms, temos que adicionar um componente RetornoPagSeguro (server control) na página e programar o evento onVendaEfetuada. Fiz um exemplo em webforms e como ambiente de testes, tudo ok, porém em webforms terei de criar este controle em runtime (no controller), então fiz um código assim:
public ActionResult Resultado() { using (var retornoPagSeguro = new RetornoPagSeguro("aqui-vai-meu-token")) { retornoPagSeguro.VendaEfetuada += new RetornoPagSeguro.VendaEfetuadaEventHandler(RetornoPagSeguroVendaEfetuada); retornoPagSeguro.UrlNPI = "http://localhost:9090/security/npi/default.aspx"; } return RedirectToAction("CompraFinalizada", "Cliente", new { area = "Restrito" }); } public void RetornoPagSeguroVendaEfetuada(RetornoVenda retornoVenda) { // regra para efetuar a baixa no pagamento }
Com o ambiente de testes a action é invocada corretamente, mas o evento "VendaEfetuada" não é executado. Pelo fato de neste caso não ser um server control igual no webforms, está faltando chamar algum método ou algo do tipo ?
Do contrário, alguem teria alguma sugestão, ou resolveu de outra forma?Qq ajuda é bem vinda!
Obrigado desde já!Abraços
Felipe Oriani - www.felipeoriani.com.br
MCP - Microsoft Certified Professional
...O rio atinge os seu objetivos porque aprendeu a contornas os obstáculos... por André Luiz
Respostas
-
da uma olhadinha nessa materia, http://joselino.net/2010/10/10/asp-net-mvc-e-pagseguro/ nao sei se te ajuda, mais quem sabe =]
E-mail: dnbdub@msn.com Twitter: MaxEvol- Marcado como Resposta Felipe B Oriani quinta-feira, 4 de novembro de 2010 17:15
Todas as Respostas
-
Você poderia usar Ajax para ficar consultando o servidor se a venda foi efetuada, e ai você continua com suas ações.
Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://dotnettime.spaces.live.com/ -
da uma olhadinha nessa materia, http://joselino.net/2010/10/10/asp-net-mvc-e-pagseguro/ nao sei se te ajuda, mais quem sabe =]
E-mail: dnbdub@msn.com Twitter: MaxEvol- Marcado como Resposta Felipe B Oriani quinta-feira, 4 de novembro de 2010 17:15
-
-
Cara tenta assim que não tem erro:
[HttpPost]
public ActionResult RetornoPagSeguro(FormCollection retornoVenda)
{
if (Request.HttpMethod == "POST")
{
//o método POST indica que a requisição é o retorno da validação NPI.
string Token = "seu-token";
//string Pagina = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml";
string Pagina = "http://localhost:9090/pagseguro-ws/checkout/NPI.jhtml";
string Dados = HttpContext.Request.Form.ToString() + "&Comando=validar" + "&Token=" + Token;
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")
{//o post foi validado
string statusTrans = retornoVenda["StatusTransacao"];
if (statusTrans == "Aprovado")
{
}
else if (statusTrans == "Cancelado")
{}
else
{
}
}
else if (Result == "FALSO")
{
//o post nao foi validado
}
else
{
//erro na integração com PagSeguro.
}
}
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.
}
return null;
}Abraço
- Editado Diogenes Silveira quinta-feira, 7 de março de 2013 18:38
-