Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Vasconcelos

SESSION no retorno automático ASP

Recommended Posts

consegui montar o retorno automático, recebo a confirmação, salvo na tabela

PagSeguroTransacoes

mas não consigo fazer o session para pegar no outro retorno qual foi o número do pedido (ou a transação).

Como eu posso exibir ao cliente algo do tipo?

OK, O PEDIDO NÚUMERO X FOI ACEITO PELO PAGSEGURO

e não apenas

OK, O PEDIDO FOI OU NÃO ACEITO, SEI LÁ.

 

Eu não sei se é porque momento que eu estou criando a session é um post do robot ou se é pq eu to fazendo alguma besteira.

Basicamente o script é:

 

If Request.Form.Count > 0 Then


' Recebe o POST enviado pela PagSeguro e armazena na variável str
   str = Request.Form & "&Comando=validar&Token=" & Token

' Envia para a PagSeguro a string para validação dos dados
   SET objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

	objHttp.OPEN "POST", "https://pagseguro.uol.com.br/Security/NPI/Default.aspx", false
	objHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded"
	objHttp.Send str


' Recupera as variáveis postadas pela PagSeguro e armazena nas variáveis locais


' Confirma quando o NPI está VERIFICADO ou FALSO. Se FALSO, então ignore o NPI
' SOMENTE SALVE OS DADOS CASO O RESULTADO SEJA IGUAL À "VERIFICADO"
	If (objHttp.status <> 200 ) Then
	  ' Erro de cabeçalho HTTP

	Else


		If (objHttp.responseText = "VERIFICADO") Then

			vVendedorEmail=request.form("VendedorEmail")
			vTransacaoID=request.form("TransacaoID")
			vReferencia=request.form("Referencia")

'pego os outros campos
' Salva os dados no Banco de Dados

			mySQL="insert into PagSeguroTransacoes(TransacaoID,VendedorEmail,Referencia,

'CRIO UMA SESSION COM O NUMERO DO MEU PEDIDO QUE VEIO LA DO PAGSEGURO, ISSO ESTÁ CORRETO PQ NO BD 
'GRAVA CERTO
		 [color="#FF0000"] [b]session("pagseguro") = vReferencia[/b][/color]


		Else

' Não faz nada
' verificacao negada, é falso
		End If

	end if
	SET objHttp = NOTHING

Else
'Caso não tenha nada no POST, então é só o redirecionamento
'uma frase de finalização pro seu cliente

%>
<!--#include file="topo.asp"-->
<div id="corpo">

<%
	Response.Write("Obrigado por comprar conosco<br>")
[color="#FF0000"]	[b]response.write("codigo_pedido:" & session("pagseguro") & "<br>")
'APARECE EM BRANCO, NADA NA SESSION[/b][/color]

%>  
</div>
<!--#include file="rodape.asp"--> 
<%
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá para fazer o que você quer. Quando troca de sua página para o pagseguro, a session será perdida mesmo.

 

Mas o pagseguro te dá uma opção de campo livre, que é o ref_transacao. Passe o número de seu pedido nele, e no post que receber no retorno automático, ele virá como referencia.

 

Se tiver dúvidas avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oK Cláudio, muitíssimo obrigado pela tua atenção...

 

Eu já estou enviando o número do meu pedido e ele volta como ref_transacao.

Eu não estou entendendo é o seguinte:

São 3 passos, ok?

1 - mostro pro cliente o botão para enviar os dados ao pagseguro

pedidofinalizado.asp

<form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx">

<input type="hidden" name="ref_transacao" value="<%=vID%>">

<input type="hidden" name="email_cobranca" value="testes@testes.com.br">

<input type="hidden" name="tipo" value="CP">

<input type="hidden" name="moeda" value="BRL">

 

2 - o PAGSEGURO retorna para a retorno.asp

2-1 verifico se tem campos de form.

If Request.Form.Count > 0 Then

' envio o token

Token = "123abc"

str = Request.Form & "&Comando=validar&Token=" & Token

objHttp.OPEN "POST", "https://pagseguro.uol.com.br/Security/NPI/Default.aspx", false

 

2-2 pagseguro retorna via robot:

If (objHttp.responseText = "VERIFICADO") Then

'salvo na tabela transacao

insert into PagSeguroTransacoes(TransacaoID,VendedorEmail,[Referencia/color],

 

 

3- ao final de x segundos, o PAGSEGURO chama novamente a retorno.asp

só que nessa hora, não passa dado nenhum (nenhum request.form).

Como eu associo esse retorno ao referência? Não veio nada, como eu fico sabendo que isso aqui é do pedido X?

Eu quero mostrar ao cliente:

OW, OS SEUS DADOS FORAM GRAVADOS, O SEU CARTAO ESTA EM ANALISE (OU APROVADO) OU, OK, você ESCOLHEU BOLETO...

 

Eu não posso ir buscar na tabela PagSeguroTransacoes o LAST_id, vai que aconteçam duas vendas no mesmo tempo.

 

Obrigado pela nova ajuda.

Abraços

Não dá para fazer o que você quer. Quando troca de sua página para o pagseguro, a session será perdida mesmo.

 

Mas o pagseguro te dá uma opção de campo livre, que é o ref_transacao. Passe o número de seu pedido nele, e no post que receber no retorno automático, ele virá como referencia.

 

Se tiver dúvidas avise.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de x segundos ele chama de novo a recibo.asp?

Ops, há algo errado aí. Isso não devia estar acontecendo. Os passos deviam acabar quando você recebe o post para salvar os dados na tabela.

É nesse momento que você recebe o ref_transação.

Quando o cliente foi para o pagseguro você tem que já ter um pedido salto em sua tabela. Quando recebe o número de transação, faz um select em sua tabela e consulta os outros dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

>Depois de x segundos ele chama de novo a recibo.asp?

Não,

é assim,

-mando os dados através botão na RECIBO.ASP (QDO SALVO O PEDIDO NA MINHA TABELA),

-ele chama a RETORNO.ASP com todos os campos (inclusive numero do meu pedido),

-mando o token

-ele retorna o cabeçalho com VERIFICADO (e todos os campos, inclusive MEU PEDIDO, salvo a transação)

nessa hora não consigo escrever na tela, isso foi chamado pelo robot.

-DEPOIS DE X SEGUNDOS. ELE CHAMA NOVAMENTE A RETORNO.ASP

agora sim, é uma página normal, eu posso mandar msg pro meu cliente, mas....como não recebi nenhum parâmetro,

como eu vinculo isso aqui a operação acima (pra saber qual foi o campo TIPO PAGAMENTO, STATUS TRANSACAO)

 

Depois de x segundos ele chama de novo a recibo.asp?

Ops, há algo errado aí. Isso não devia estar acontecendo. Os passos deviam acabar quando você recebe o post para salvar os dados na tabela.

É nesse momento que você recebe o ref_transação.

Quando o cliente foi para o pagseguro você tem que já ter um pedido salto em sua tabela. Quando recebe o número de transação, faz um select em sua tabela e consulta os outros dados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores,

 

 

Acho que o meu problema é parecido com o de vocês (que hoje, já deve ter sido resolvido)...

 

 

O problema da Session no retorno, quando utilizo o pagseguro, quando ponho na última linha conforme mandam:

 

 

.Executar(this.Response);

 

 

Ele registra no serv de testes do pagseguro, qto ao retorno, eu consigo pegar os dados na página que eu designei, porém, observei que eu perco todas as minhas variáveis de sessão....

 

Eu tenho um gridview nessa página... Ele executa o PageLoad, vai para o componente de retorno do PAGSEGURO, consigo gravar no banco, porém, qdo vai preencher a grid com as informações para mostrar o status da compra para o usuário, a minha session foi para o espaço...

 

 

Poderiam me dar uma luz??

 

Programo em C#...

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso poderá resolver facil, fácil se você utilizar o retorno automático apenas para atualizar somente o seu pedido, somente isso... assim você cria toda instrução no arquivo de retorno e está pronto.

 

caso em outra pagina precise de algum dado compartilhado da URL de retorno, você poderá consultar na base de dados, afinal deverá estár la os dados correto?

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.