Ir para conteúdo

POWERED BY:

Arquivado

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

wace

Retorno PagSeguro em Asp

Recommended Posts

Estou testando com o pagseguro TestServer passando as variáveis via post, o testserver recebe corretamente os dados mas na hora de retornar retorna vazio... estou usando o exemplo do pagseguro mesmo e nao acho a solução.

 

Navegando achei algumas soluções como <input type='hidden' name='encoding' value='UTF-8'> pois poderia ser acentuação.

 

Mas nada adiantou.

 

Sempre vai no ultimo else = Response.write("POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro")

 

<%
response.ContentType = "text/HTML"
response.Charset = "ISO-8859-1"

Dim TOKEN

TOKEN = "00000000000000000000000000000"

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 & "=" & valuedNext
	valued = request.Form(x)
	postData = postData & "&" & x & "=" & Server.URLEncode(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"
'strUrl = "http://localhost:9090/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
	'O post foi validado pelo PagSeguro.
	Response.write("O post foi validado pelo PagSeguro.")
elseif result = "FALSO" then
	'O post não foi validado pelo PagSeguro.
	Response.write("O post não foi validado pelo PagSeguro")
else
	'Erro na integração com o PagSeguro.
	Response.write("Erro na integração com o PagSeguro")
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.

Response.write("POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro")
%>

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

   <%
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente usar um arquivo de log para saber oque está acontecendo no log, uma vez que você não vai conseguir ver na tela o post que o pagseguro enviou

 

retorno.asp

 

<!--#include file="writelog.asp"-->
<%
response.ContentType = "text/HTML"
response.Charset = "ISO-8859-1"

Dim TOKEN

' Insira seu TOKEN
TOKEN = ""

timeout = 30

function notificationPost()

postdata = "comando=validar&token=" & TOKEN

For each x In Request.Form
	postdata = postdata & "&" & x & "=" & Server.UrlEncode(request.Form(x))
Next

notificationPost = verify(postdata)

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

WriteToFile now(), TRUE

if Request.Form.count > 0 then

' POST
WriteToFile "Request recebido: POST", TRUE
WriteToFile Request.Form("TransacaoID"), TRUE
WriteToFile Request.Form("StatusTransacao"), TRUE

result = notificationPost()

WriteToFile result, TRUE

if result = "VERIFICADO" then
	' POST validado
	' Insira uma acao, por exemplo atualizar o status de seu pedido no DB
elseif result = "FALSO" then
	' POST nao validado
	' Insira uma acao, por exemplo resgistrar o ID da transacao em log
else
	' Erro na integracao ou na validacao dos dados
	' Insira uma acao, por exemplo resgistrar o valor contido na variavel 'result' em log
end if

else

' GET
WriteToFile "Request recebido: GET", TRUE
WriteToFile Request.Querystring, TRUE
' Insira uma acao, por exemplo mostrar uma mensagem de agradecimento ao seu cliente
%>
<h3>Obrigado por efetuar a compra!</h3>
<%
end if

WriteToFile "", TRUE
WriteToFile "---", TRUE
WriteToFile "", TRUE

%>

 

writelog.asp

 

<%
dim fs, f, iMode

function WriteToFile(Contents, Append)
on error resume next

if Append = TRUE then
  	iMode = 8
else
  	iMode = 2
end if

set fs = Server.CreateObject("Scripting.FileSystemObject")
set f = fs.OpenTextFile(Server.MapPath("retorno_pagseguro.log"), iMode, TRUE)
f.Write Contents & vbCrLF
f.Close
set f = nothing
set fs = nothing
end function
%>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

senartes

 

Executei o código que você mandou...

 

deu a seguinte mensagem no log:

 

08/08/2011 11:06:44

Request recebido: GET

 

 

---

 

FALSO

 

---

 

Pelo que pesquisei o request tem que ser POST...

Mas como alterar e será isto mesmo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está testando no TestServer?

 

Tente usar no PagSeguro direto.

 

Lá funciona perfeito.

 

 

Vale a pena dar uma olhada na API de notificação.

Achei mais fácil implementar.

 

https://pagseguro.uo...acoes.html#rmcl

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.