Nilson Cl. 0 Denunciar post Postado Outubro 29, 2010 Boa tarde passoal. Monte um siste de venda. Estou fazendo a integração com o pagseguro. Problema. Recebo o retorno do pagseguro quando mando validar os dado, retorna como não validado. me mandaram colocar as tag. com Encoding ISO-8859-1 ja coloquei as mesma. e continua com o memo erro. segue codigo. Codigo que envia para o pagseguro as informações.( Carrinho de Compras ) Sub Comprar() On Error GoTo erro Dim Count As Long, Operacao As Long = 0 If GridView1.Rows.Count > 0 Then 'If hdValidacao.Value = "6" Then If IsNumeric(HttpContext.Current.Session("CodCliente")) Then If funcao.GravaNova(HttpContext.Current.Session("StrCn"), "UpDate VendaOp Set " _ , New Object() {"Cliente"} _ , New Object() {HttpContext.Current.Session("DadosArr")(0)} _ , IIf(IsNumeric(HttpContext.Current.Session("Op")), HttpContext.Current.Session("Op"), 0) _ , New Object() {"i"} _ , _ , New Object() {"Operacao"} _ , New Object() {HttpContext.Current.Session("Op")}) = True Then '--------------- Fim ----------------------------------------- Using connection As New SqlConnection(HttpContext.Current.Session("StrCn")) Dim commando As New SqlCommand("Select * From qryCarinho Where IP='" & HttpContext.Current.Session("EnderecoIP") & "'", connection) connection.Open() Dim rs As SqlDataReader = commando.ExecuteReader() While rs.Read() Operacao = rs.Item(10) 'Passa os item para o pagseguro Produtos.Codigo = rs.Item(1).ToString.Trim Produtos.Descricao = rs.Item(2).ToString.Trim Produtos.Quantidade = rs.Item(4) Produtos.Valor = rs.Item(5) Pagar.Produtos.Add(Produtos) '---------- fim ---------------------- End While rs.Close() End Using Pagar.CodigoReferencia = Operacao.ToString 'Variavel que vai receber os dados do cliente Dim DadosCliente As New UOL.PagSeguro.Cliente 'Incluindo as informações do cliente para enviar ao pagSeguro DadosCliente.Nome = HttpContext.Current.Session("DadosArr")(1) DadosCliente.Email = HttpContext.Current.Session("DadosArr")(2) DadosCliente.Endereco = HttpContext.Current.Session("DadosArr")(3) DadosCliente.Numero = HttpContext.Current.Session("DadosArr")(4).ToString DadosCliente.ComplementoEndereco = HttpContext.Current.Session("DadosArr")(5) DadosCliente.Bairro = HttpContext.Current.Session("DadosArr")(6) DadosCliente.Cidade = HttpContext.Current.Session("DadosArr")(7) DadosCliente.Uf = HttpContext.Current.Session("DadosArr")(8) DadosCliente.Cep = HttpContext.Current.Session("DadosArr")(9) DadosCliente.DDD = HttpContext.Current.Session("DadosArr")(10) DadosCliente.Telefone = HttpContext.Current.Session("DadosArr")(11) Pagar.Cliente = DadosCliente Pagar.Executar(Response) Else funcao.GravaErro() lblMsg0.Text = funcao.Msg("Não foi possível vincular o cliente com a venda, tente novamente se o erro percistir entre em contato com a empresa", MsgBoxStyle.Information) pnGrid.Visible = False pnEntrega.Visible = True btConfirmar.Focus() End If Else HttpContext.Current.Session("Redireciona") = "~/Carrinho.aspx" Response.Redirect(lbCadastro.PostBackUrl.Trim) End If 'End If Else lblMsg.Text = funcao.Msg("Sem produto para comprar", MsgBoxStyle.Information) End If Exit Sub erro: 'Return "" HttpContext.Current.Session("Erro") = "Erro: " & Err.Description End Sub codigo de recepção de retorno. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Title = HttpContext.Current.Session("Fantasia") If Request.HttpMethod = "POST" Then '------------------------------------------------------------------- Dim OpRetorno As Long = HttpContext.Current.Request.Form.Item("Referencia") Dim Codigo_Transacao As String = HttpContext.Current.Request.Form.Item("TransacaoID") Dim Status As String = HttpContext.Current.Request.Form.Item("StatusTransacao") Dim Tipo_Pgto As String = HttpContext.Current.Request.Form.Item("TipoPagamento") Dim Anotacao As String = HttpContext.Current.Request.Form.Item("Anotacao") Dim DataTransacao As String = HttpContext.Current.Request.Form.Item("DataTransacao") '----------------------------------------------------------------------- If OpRetorno > 0 Then If Funcao.GravaNova(HttpContext.Current.Session("StrCn") _ , "UpDate VendaOP Set " _ , New Object() {"Fechada", "TipoPgto", "Anotacao", "CodigoTransacao", "Status", "FinalizadoEm", "DataOp"} _ , New Object() {"S", Tipo_Pgto, Anotacao, Codigo_Transacao, Status, Date.Now, DataTransacao} _ , OpRetorno _ , New Object() {"c", "c", "c", "c", "c", "d", "d"} _ , _ , New Object() {"Operacao"} _ , New Object() {OpRetorno}) = True Then End If End If 'o método POST indica que a requisição é o retorno da validação NPI. Dim Token As String = "000000000000000" Dim Pagina As String = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml" Dim Dados As String = HttpContext.Current.Request.Form.ToString + "&Comando=validar" + "&Token=" + Token Dim req As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create(Pagina), System.Net.HttpWebRequest) req.Method = "POST" req.ContentLength = Dados.Length req.ContentType = "application/x-www-form-urlencoded" Dim stOut As New System.IO.StreamWriter(req.GetRequestStream(), System.Text.Encoding.GetEncoding("ISO-8859-1")) stOut.Write(Dados) stOut.Close() Dim stIn As New System.IO.StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-1")) Dim Result As String = stIn.ReadToEnd() stIn.Close() If Result = "VERIFICADO" Then 'o post foi validado Session("Erro") = "A validação do PagSeguro aprovou os dados recebidos, o Sistema Atualizou o status" Funcao.GravaErro() ElseIf Result = "FALSO" Then 'o post nao foi validado Session("Erro") = "A validação do PagSeguro não aprovou os dados recebidos" & " Operacao(" & OpRetorno & ") " _ & "Codigo_Transacao(" & Codigo_Transacao & ") " & "Status(" & Status & ") " _ & "Tipo_Pgto(" & Tipo_Pgto & ") " & "Anotacao(" & Anotacao & ") " _ & "DataTransacao(" & DataTransacao & ") " Funcao.GravaErro() Else 'erro na integração com PagSeguro. Session("Erro") = "Ouve erro na validação do PagSeguro" Funcao.GravaErro() End If ElseIf Request.HttpMethod = "GET" Then '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. End If End Sub Obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
JGD 0 Denunciar post Postado Janeiro 7, 2011 Nilson, veja este link : http://forum.imasters.com.br/index.php?/topic/419584-retorno-automatico-pagseguro-retornando-falso/page__hl__pagseguro asp__fromsearch__1 Creio vai funcionar para você. Pra mim a validação funcionou. O meu problema agora é pegar dos dados validados e gravar no db. Se puder dar alguma dica agradeço JGD Compartilhar este post Link para o post Compartilhar em outros sites
Nilson Cl. 0 Denunciar post Postado Janeiro 7, 2011 JGD boa tarde. eu para pegar os dados do retor procedo desta forma. Veja Codigo '------------------------------------------------------------------- Dim OpRetorno As Long = HttpContext.Current.Request.Form.Item("Referencia") Dim Codigo_Transacao As String = HttpContext.Current.Request.Form.Item("TransacaoID") Dim Status As String = HttpContext.Current.Request.Form.Item("StatusTransacao") Dim Tipo_Pgto As String = HttpContext.Current.Request.Form.Item("TipoPagamento") Dim Anotacao As String = HttpContext.Current.Request.Form.Item("Anotacao") Dim DataTransacao As String = HttpContext.Current.Request.Form.Item("DataTransacao") Dim EmcodRest As String = HttpContext.Current.Request.Form.Item("Encoding") '----------------------------------------------------------------------- Não entendi como fazer a validação funcionar: Compartilhar este post Link para o post Compartilhar em outros sites
JGD 0 Denunciar post Postado Janeiro 7, 2011 Nilson, não funfou não!? o "HttpContext" é objeto xmlHttp retornado? Outra coisa estou usando asp classico. if result = "VERIFICADO" then'O post foi validado pelo PagSeguro. '------------------------------------------------------------------- Dim OpRetorno,Codigo_Transacao,Status,Tipo_Pgto,Anotacao,DataTransacao,EmcodRest OpRetorno = xmlHttp.Current.Request.Form.Item("Referencia") Codigo_Transacao = xmlHttp.Current.Request.Form.Item("TransacaoID") Status = xmlHttp.Current.Request.Form.Item("StatusTransacao") Tipo_Pgto = xmlHttp.Current.Request.Form.Item("TipoPagamento") Anotacao = xmlHttp.Current.Request.Form.Item("Anotacao") DataTransacao = xmlHttp.Current.Request.Form.Item("DataTransacao") EmcodRest = xmlHttp.Current.Request.Form.Item("Encoding") strCMD ="UPdate tbTabela SET stPgto='"& Status &"',formaPGTO='"& Tipo_Pgto &"', stPed='0' where idPed="& OpRetorno &"" Set Rs = Con.Execute(strCMD) elseif result = "FALSO" then 'O post não foi validado pelo PagSeguro. else 'Erro na integração com o PagSeguro. end if Sobre a verificação, segue link novamente. http://forum.imasters.com.br/index.php?/topic/419584-retorno-automatico-pagseguro-retornando-falso/ Veja a partir da linha abaixo: Resolvido. Fica a solução para quem encontrou o mesmo problema que eu (e não são poucos), neste ponto do código É só efetuar as substituições indicadas. Considerando que você esta usando o exemplo da vise. JGD Compartilhar este post Link para o post Compartilhar em outros sites