Ir para conteúdo

POWERED BY:

Arquivado

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

Nilson Cl.

Integração PagSeguro

Recommended Posts

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 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

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

×

Informação importante

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