Ir para conteúdo

POWERED BY:

Arquivado

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

Alex_ps

Ambiente de Testes ASP PagSeguro

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha esta pagina

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>"
'   Else                          'Erro na integração com o PagSeguro.
  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 %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.