Integração PagSeguro
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"](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.
Discussão (3)
Carregando comentários...