Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos,
Estou com minha loja virtual pronta e infelizmente preciso instalar como ferramenta de pagamento o PagSeguro.
O carrinho é próprio, a conexão está correta pois o pedido é enviado corretamente, e então surgiu o problema do ambiente de testes do retorno.
Já realizei muitas buscas e o site do PagSeguro não informa nada de nada! A propósito, que grande porcaria!
Tem um site que oferece opções em Linux, outro oferece opções em Mac e o grande Teoni oferece um script de servidor para Asp.Net.
Eu gostaria de saber se existe uma forma de simular este servidor para ASP pois, não acho que todos estejam fazendo testes e gastando R$ 0,01 centavo para cada tentativa de realização de obtenção do resultado. No passado, se não me engano o próprio Teoni resolveu esta parada.
O arquivo de retorno já está pronto e funcionando.
A URL está habilitada e está funcionando.
Eu gostaria de receber as informações que eles enviam para confirmar o pedido do meu cliente.
Eu até poderia buscar estar informações no meu banco de dados mas, surge o problema da forma de pagamento. Exemplo: Se o cliente paga com crédito, débito ou transferência, normalmente eu poderia dizer que o pagamento foi realizado e o status do pedido estaria em separação. Mas e se o cliente optar por boleto bancário? Daí surge a necessidade de receber as informações de retorno do PagSeguro, além de incluir nisto o número da autorização.
Minha idéia é utilizar minha URL de retorno e ir buscar com XMLHttp, porém eles dizem que nem sempre o retorno será imediato, como eu imagino seja o caso do boleto bancário.
Assim, como é que eu posso fazer estes testes se não tem um ambiente de teste?
Alguém poderia por favor dar uma ajuda?
Obrigado!
Alex_ps
>
Olá amigos,
Estou com minha loja virtual pronta e infelizmente preciso instalar como ferramenta de pagamento o PagSeguro.
O carrinho é próprio, a conexão está correta pois o pedido é enviado corretamente, e então surgiu o problema do ambiente de testes do retorno.
Já realizei muitas buscas e o site do PagSeguro não informa nada de nada! A propósito, que grande porcaria!
Tem um site que oferece opções em Linux, outro oferece opções em Mac e o grande Teoni oferece um script de servidor para Asp.Net.
Eu gostaria de saber se existe uma forma de simular este servidor para ASP pois, não acho que todos estejam fazendo testes e gastando R$ 0,01 centavo para cada tentativa de realização de obtenção do resultado. No passado, se não me engano o próprio Teoni resolveu esta parada.
O arquivo de retorno já está pronto e funcionando.
A URL está habilitada e está funcionando.
Eu gostaria de receber as informações que eles enviam para confirmar o pedido do meu cliente.
Eu até poderia buscar estar informações no meu banco de dados mas, surge o problema da forma de pagamento. Exemplo: Se o cliente paga com crédito, débito ou transferência, normalmente eu poderia dizer que o pagamento foi realizado e o status do pedido estaria em separação. Mas e se o cliente optar por boleto bancário? Daí surge a necessidade de receber as informações de retorno do PagSeguro, além de incluir nisto o número da autorização.
Minha idéia é utilizar minha URL de retorno e ir buscar com XMLHttp, porém eles dizem que nem sempre o retorno será imediato, como eu imagino seja o caso do boleto bancário.
Assim, como é que eu posso fazer estes testes se não tem um ambiente de teste?
Alguém poderia por favor dar uma ajuda?
Obrigado!
Alex_ps
Acho que voce esta pesando muito mais complicando o que é facil, eu faço de forma mais simples, crio uma pagina de retorno que processa os dados que voltaram do pagseguro salvando as informações, não faço nada por xmlhttp, etc, apenas pego o post de retorno do pagseguro. O envio de dados para eles tambem faço postando um formulario, igual a documentação deles, é simples e rapido. Não importa se o post será feito no momento do retorno ou não, pois futuramente com os posts de mudança de transação que eles enviam, o status será modificado, memo que não seja na hora do retorno. O script será executado de qualquer forma, independente se pelo browser ou pelo robo do pagseguro. Não sei se mudaram a forma de fazer, pois faz algum tempo que não uso pagseguro, mas sempre fiz assim, apesar de saber que tambem da pra fazer por requisição de xml.
Xanburzum,
Excelente idéia, se eu não conseguir por outro caminho, vou simular eu mesmo o PagSeguro.
Obrigado!
Anderson,
Agradeço a sua ajuda, na verdade pode até ser que eu esteja viajando mas, como eu não sei o que eles estão enviando por causa da falta de um ambiente de testes, isto acontece.
Estou utilizando como retorno.asp o script postado no site visie e com adição da criação de um arquivo de log.
Até onde eu entendi, este script só server para confirmação e envio do Token.
Até mesmo na parte do IF que verifica se existe a validação ou não.
Neste lugar, se foi validado... atualmente eu transfiro as informações de uma tabela temporária, para uma tabela pedidos e informo o comprador e o logista por e-mail, mas sempre usando informações minhas, não as recuperadas do PagSeguro e este é o erro que eu estou querendo evitar.
Se você não utiliza XMLhttp e as informações do pedido estão vindo para o o mesmo arquivo/url retorno.asp a qualquer momento, como você separa os 'momentos', ou seja:
momento 1 - quando o PagSeguro requere o Token na URL retorno.asp
momento 2 - quando o PagSeguro envia as informações para a URL retorno.asp
Ou sempre é simultâneo, ou seja, mesmo que seja o caso de compra com boleto, ele recupera o Token e me envia as informações do pedido por Post e eu recupero por request.form?
Obrigado!
Alex_ps
Amigos,
Por favor...
Está quase tudo 100%, à exceção das informações do pedido enviadas pelo PagSeguro via POST e que eu não consigo capturar de jeito nenhum.
Estou utilizando o exemplo de retorno.asp sugerido e em um determinado local aparece um If...Else... que diz se o resultado da negociação está sendo concretizado ou não.
Colocando um script de captura e gravação no banco de dados, dentro deste IF...Else... ou mesmo após o script todo, não consigo recuperar informações como "TransacaoID", "TipoPagamento", "StatusTransacao", etc.
Crio as variáveis e coloco TransacaoID = Request("TransacaoID") e o mesmo nas demais variáveis.
O resultado é vazio sempre, seja pago com boleto, pago com cartão, etc.
Alguém pode ajudar por favor?
Obrigado!
Alex_ps
olha esta pagina
Xanburzum,
Valeu pela dica da página mas eu estou um pouco mais na frente.
Eu estou encaminhando o Token para eles e não sei em que momento eles estão me encaminhando informações do pedido, tipo autorização.
A coisa é tão punk que, eu tenho um arquivo de log no início do código, com base em outro código que eu peguei na web...
For each x In Request.Form
valued = clearStr(request.Form(x))
postdata = postdata & "&" & x & "=" & valued
Next
Se eu colocar o Request.Form("TransacaoID") na sql que salva o pedido, o campo fica vazio.
E isto acontece com as demais variáveis enviadas via post pelo PagSeguro, que acima eu monto o arquivo log sem problemas.
É um problema tosco, mas não sei porque raios o request não salva no BD. É como se estivesse vazio mas não está como vejo pelo log.
Abaixo segue o código todo:
Dim mensagem_cliente
Dim TOKEN, timeout
Dim result
'*** Inicio o código de envio e recuperação da autorização de venda do PagSeguro
response.ContentType = "text/HTML"
response.Charset = "ISO-8859-1"
'*** Log para informar que alguém chegou na página, seja usuário ou robo do PagSeguro
WriteToFile "Chegou ate a url de retorno.asp", True
TOKEN = "123456789101112131415"
timeout = 20 'Timeout em segundos
Function notificationPost()
postdata = "Comando=validar&Token=" & TOKEN
For each x In Request.Form
valued = clearStr(request.Form(x))
postdata = postdata & "&" & x & "=" & valued
Next
notificationPost = verify(postdata)
End Function
Function clearStr(str)
str = replace(str, "'","\'")
clearStr = str
End function
Function verify(data)
strUrl = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"
Set xmlHttp = Server.Createobject("MSXML2.ServerXMLHTTP")
xmlHttp.Open "POST", strUrl, False
xmlHttp.setRequestHeader "User-Agent", "asp httprequest"
xmlHttp.setRequestHeader "content-type", "application/x-www-form-urlencoded"
xmlHttp.setRequestHeader "content-length", Len(data)
xmlHttp.Send(data)
retorno = xmlHttp.responseText
xmlHttp.abort()
Set xmlHttp = Nothing
verify = retorno
End function
'*** Nesta área, mandei gravar os dados de GET para saber o que está acontecendo
WriteToFile "Dados recebidos:", True
WriteToFile "GET", True
WriteToFile Request.Querystring, True
'*** Agora, gravando os dados que chegaram via POST
postdata = ""
For each x In Request.Form
valued = clearStr(request.Form(x))
postdata = postdata & "&" & x & "=" & valued
Next
WriteToFile "POST", True
WriteToFile "Total de fields: " & Request.Form.Count, True
WriteToFile postdata, True
If Request.Form.count > 0 then
result = notificationPost()
If Request.Form("TransacaoID") <> empty then
transacaoID = Request.Form("TransacaoID")
Else
transacaoID = ""
End If
' Agora ficou fácil, se chegou via POST, o script irá verificar se ele veio do PagSeguro e gravará no log VERIFICADO ou FALSO
WriteToFile result, True
WriteToFile "", True
WriteToFile "---", True
WriteToFile "", True
If result = "VERIFICADO" then 'O post foi validado pelo PagSeguro.
' mensagem_cliente = "<div class=""txtg"" style=""margin:30px auto auto 50px"">Houve um erro na validação do pagamento por Parte do PagSeguro, por favor entre em contato conosco pelo telefone "&Application("TelefoneLoja")&", informando o ocorrido.<br />Desculpe pelo transtorno!</div>"
ElseIf result = "FALSO" then 'O post não foi validado pelo PagSeguro.
' mensagem_cliente = "<div class=""txtg"" style=""margin:30px auto auto 50px"">Houve um erro na validação do pagamento por Parte do PagSeguro, por favor entre em contato conosco pelo telefone "&Application("TelefoneLoja")&", informando o ocorrido.<br />Desculpe pelo transtorno!</div>" mensagem_cliente = "<div class=""txtg"" style=""margin:30px auto auto 50px"">Houve um erro durante o processo de integração com o PagSeguro, por favor entre em contato conosco pelo telefone "&Application("TelefoneLoja")&", informando o ocorrido.<br />Desculpe pelo transtorno!</div>"
End if
Else
' POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
' No término do checkout o usuário é redirecionado para este bloco.
'Aqui eu salvo o pedido no banco
%>
<!--#include file="../loja/processa-pedido.asp"-->
<% End If %>
Ou seja, o problema não é com o PagSeguro uma vez que as informações estão chegando, como mostra o seu "log".
Seu código está meio confuso. Verifique se está incluindo a rotina de gravação no banco dentro da condição correta, uma vez que o primeiro retorno é a verificação do token e onde você grava o pedido no banco, nos demais, apenas atualização de status do pedido...
Outra dúvida: Você está tratando os "request" ou jogando direto na SQL?
Ambiente de teste para ASP, infelizmente não possui.
Att.
apenas para teste tente guardar os dados em uma variavel de sessão para ver se ele pega os dados.
aqui ele ja esta vazio ?
If Request.Form("TransacaoID") <> empty then
transacaoID = Request.Form("TransacaoID")
Else
transacaoID = ""
End If
você teria que emular uma situação parecida com a buscar no XMLHttp na sua URL de retorno, mas isso tem varios fatores como velocidade da banda do servidor, como ele esta configurado,até mesmo qual o plano contratado, plataforma etc