Ir para conteúdo

Arquivado

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

Douglas Evaristo Santos

Retorno compra pagSeguro

Recommended Posts

Boa noite amigos... Então, passei a noite testando o retorno do pagseguro, e não consigo pegar os dados da transação!! Veja abaixo meu código. Acredito que não tem nada de errado no codigo, já que peguei da documentação e já vi pela web q é isso ai mesmo! O retorno ocorre beleza, porem cai naquela ultimo caso "Post não recebido!". Não sei pq não está retornando o post! Agradeço desde já a ajuda de todos!

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Untitled Document</title>
</head>
<body>
<%
response.ContentType = "text/HTML"
response.Charset = "ISO-8859-1"

Dim TOKEN

TOKEN = "-- meu token --"

timeout = 20 

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

if Request.Form.count > 0 then
	
	result = notificationPost()
	
	if Request.Form("TransacaoID") <> empty then
		transacaoID = Request.Form("TransacaoID")
	Else
		transacaoID = ""
	end If
	
	if result = "VERIFICADO" then
		t="Verificado"
	TransacaoID = trim(Request.Form("TransacaoID"))
	Anotacao =	trim(Request.Form("Anotacao"))
	DataTransacao =	trim(Request.Form("DataTransacao"))
	TipoPagamento =	trim(Request.Form("TipoPagamento"))
	StatusTransacao = trim(Request.Form("StatusTransacao"))
	CliNome =	trim(Request.Form("CliNome"))
	CliEmail =	trim(Request.Form("CliEmail"))
	Produto =	trim(Request.Form("ProdId"))
	elseif result = "FALSO" then
		t="Falso - O post não foi validado pelo PagSeguro."
	else
		t="Erro de intregramao com o PagSeguro."
	end if
	
else
		t="Post não recebido!"
	%>
	
    <h3>Obrigado por efetuar a compra.</h3>

<%
end if
%>

<%=t%>//Transação id:<%=TransacaoID%>//Transação id:<%=DataTransacao%>//Email cliente:<%=CliEmail%>

</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo retorno.asp executa as ações de enviar um POST de volta ao verificador de POST do PagSeguro e verifica se o POST recebido é VERIFICADO ou FALSO. Coloque seu retorno automático para apontar para este arquivo e altere o arquivo nas seguintes linhas.

'TOKEN = "cole aqui o token do vendedor"

Descomente esta linha (linha 7) e cole o TOKEN gerado no painel de controle de sua conta PagSeguro.

if result = "VERIFICADO" then 'O post foi validado pelo PagSeguro. elseif result = "FALSO" then 'O post não foi validado pelo PagSeguro. else 'Erro na integração com o PagSeguro. end if

Coloque aqui (linha 65) o seu código que deve ser executado caso o POST seja válido ou não. Aconselhamos a fazer um log de tudo o que acontecer nesta parte para entender o que aconteceu com seu POST.

<h3>Obrigado por efetuar a compra.</h3>

Nesta linha (linha 78), cole o código HTML que deve aparecer ao seu comprador quando ele finalizar a compra junto ao PagSeguro.

 

A biblioteca pode ser conseguida direto no github, onde o desenvolvedor pode acompanhar o desenvolvimento de novas funcionalidades da biblioteca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o TOKEN está correto

Compartilhar este post


Link para o post
Compartilhar em outros sites

o TOKEN está correto

 

Sim sim.... Está tudo ok! Tanto que realiza ok a requisição... e está caindo no ultimo caso lá (t="Post não recebido!") não sei pq!!! Tô puto pq está tudo ok e configurado!!! Não tem explicação!!

 

Tem q mexer alguma coisa será no painel do pagseguro?? Eu já configurei o retorno para essa pagina e tudo!! Foda viu!? :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

entra em contato com o suporte do pagseguro , pode ser uma instabilidade deles...

Compartilhar este post


Link para o post
Compartilhar em outros sites

só pra entender, você quer o retorno da transação após a compra ou retorno caso mude o status da compra no pagseguro?

 

Retorno automatico de dados:
https://pagseguro.uol.com.br/desenvolvedor/retorno_automatico_de_dados.jhtml

 

Após a transação o retorno:
https://pagseguro.uol.com.br/integracao/pagina-de-redirecionamento.jhtml

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema pode setar com os acentos, já viu algumas pessoas terem problemas assim, no caso tente realizar uma compra com um endereço sem acentos e veja se retorna retornou VERIFICADO, o problema é como fazer o encoding da url antes de solicitar a verificação.

neste ponto do código

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


substitua a linha


valued = clearStr(request.Form(x))
por
valued = request.Form(x)

pois não será necessário usar a função clearStr

e substitua

postData = postData & "&" & x & "=" & valued

por

postData = postData & "&" & x & "=" & Server.URLEncode(valued)

assim você fara o Encode substituindo assim caracteres especiais pelo Hexadecimal equivalente.

E não se esqueça de colocar

Response.Charset = "ISO-8859-1"

Compartilhar este post


Link para o post
Compartilhar em outros sites

entra em contato com o suporte do pagseguro , pode ser uma instabilidade deles...

Já entrei... Só não tive resposta ainda... Mais é a unica solução, pois não adianta mais nada!

 

Você já deu uma olhada neste tópico:

http://forum.imasters.com.br/topic/295416-retorno-automtico-pagseguro/

 

?

 

Pode ajudar !!

Abraços

Olhei sim, e chequei todos os pontos... Não sei pq não está funcionando mesmo! Mais obrigado pela atenção!

 

só pra entender, você quer o retorno da transação após a compra ou retorno caso mude o status da compra no pagseguro?

 

Retorno automatico de dados:

https://pagseguro.uol.com.br/desenvolvedor/retorno_automatico_de_dados.jhtml

 

Após a transação o retorno:

https://pagseguro.uol.com.br/integracao/pagina-de-redirecionamento.jhtml

Quero apenas o retorno da compra, bem mais simples... Muitas pessoas me sugeriram usar essa api de notificações, porem eles não disponibilizam nem um exemplo em ASP classico... Fica complicado!

 

 

o problema pode setar com os acentos, já viu algumas pessoas terem problemas assim, no caso tente realizar uma compra com um endereço sem acentos e veja se retorna retornou VERIFICADO, o problema é como fazer o encoding da url antes de solicitar a verificação.

 

neste ponto do código

 

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

 

substitua a linha

 

valued = clearStr(request.Form(x))
por
valued = request.Form(x)

pois não será necessário usar a função clearStr

 

e substitua

postData = postData & "&" & x & "=" & valued

por

postData = postData & "&" & x & "=" & Server.URLEncode(valued)

assim você fara o Encode substituindo assim caracteres especiais pelo Hexadecimal equivalente.

 

E não se esqueça de colocar

Response.Charset = "ISO-8859-1"

Então, não é isso tb... Já fiz varios testes e nada! Mais obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Humberto, o meu está ativo a Página fixa de redirecionamento. Será que é necessario ativar o Página de redirecionamento dinâmico? O complicado é que "Para utilizar a página de redirecionamento dinâmico (por transação), será necessário que você implemente e aceite somente pagamentos via API." E eu não quero fazer a venda com a api...



 

Humberto, pô, vc me deu uma ideia bem melhor, vou consultar o status pelo id via XML mesmo! Ai vou ler no asp graças a esse codigo do XAm (http://forum.imasters.com.br/topic/451585-ler-xml-de-outro-servidor/)

 

Muito obrigado mesmo galera!!!! :D :D :D :D :D :D :D :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois se quiser poste o code completo, para futuras consultas sobre a dúvida...

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro está gerando atualmente

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.