Ir para conteúdo

POWERED BY:

Arquivado

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

LBarcelosM

Integração com C# ASP.NET

Recommended Posts

Boa tarde meus caros, estou aqui pedindo ajuda para configurar a integração da API de retorno do PagSeguro pois a documentação está muito falha e não explica direito o que fazer e quando fazer, alguns parâmetros de como está minha configuração no PagSeguro :

 

PÁGINA DE REDIRECIONAMENTO : Ativado e definida a página que será redirecionada.

NOTIFICAÇÃO DE TRANSAÇÕES : Ativado e a página eu coloquei a mesma do parâmetro acima

RETORNO AUTOMÁTICO DE DADOS : Ativado e a página eu coloquei a mesma do parâmetro acima

 

Pelo que eu li na documentação do PagSeguro você tem que validar o recebimento do post na sua página que é redirecionada e eles informaram inclusive um código, o seguinte :

 

if (Request.HttpMethod == "POST")
       {
           //o método POST indica que a requisição é o retorno da validação NPI.


           string Token = "numero do token";
           string Pagina = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml";

           string Dados = "";
           foreach (var key in this.Request.Form.AllKeys)
           {
               if (!String.IsNullOrEmpty(key))
               {
                   String value = this.Request.Form[key].ToString();
                   value = HttpUtility.UrlEncode(value, Encoding.GetEncoding("ISO-8859-1"));
                   Dados += String.Format("{0}={1}&", key, value);
               }
           }
           Dados += "Comando=validar&Token=" + Token;

           System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(Pagina);

           req.Method = "POST";
           req.ContentLength = Dados.Length;
           req.ContentType = "application/x-www-form-urlencoded";

           System.IO.StreamWriter stOut = new System.IO.StreamWriter(req.GetRequestStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
           stOut.Write(Dados);
           stOut.Close();

           System.IO.StreamReader stIn = new System.IO.StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
           string Result = stIn.ReadToEnd();
           stIn.Close();



             dbDataContext db = new dbDataContext();
             page p = new page();
             p.conteudo = Result;
             p.link = Dados;
             db.pages.InsertOnSubmit(p);
             db.SubmitChanges();


           if (Result == "VERIFICADO")
           {
               //o post foi validado


           }
           else if (Result == "FALSO")
           {
               //o post nao foi validado

           }
           else
           {
               //erro na integração com PagSeguro.

           }
       }
       else if (Request.HttpMethod == "GET")
       {
           //o método GET indica que a requisição é o retorno do Checkout PagSeguro para o site vendedor.
           //no término do checkout o usuário é redirecionado para este bloco.
       }

 

Acredito que é praticamente copiar e colar no Page_Load da minha página de retorno, certo?

 

Eu coloquei nesta página também um componente do tipo PagSeguroRetorno onde a única configuração que fiz nele foi o Token que gerei no site do PagSeguro, eu vi que nele há alguns eventos como por exemplo :

 

FalhaProcessarRetorno

VendaEfetuada

VendaNaoAutenticada

...e mais alguns...

 

O problema é que não há explicação de em que hora será chamado cada evento deste, por exemplo no VendaEfetuada será chamado quando o cliente efetuar o pagamento via cartão de credito no site ou quando for realmente aprovada a transação? VendaNaoAutenticada será chamado quando o cliente cancelar o pagamento ou se o pagamento não for aprovado?

 

Se puderem me auxiliar com esta integração eu ficarei muito grato.

 

Muito obrigado.

 

ATT,

LBarcelosM

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes

 

Boa tarde meus caros, estou aqui pedindo ajuda para configurar a integração da API de retorno do PagSeguro pois a documentação está muito falha e não explica direito o que fazer e quando fazer, alguns parâmetros de como está minha configuração no PagSeguro :

 

PÁGINA DE REDIRECIONAMENTO : Ativado e definida a página que será redirecionada.

NOTIFICAÇÃO DE TRANSAÇÕES : Ativado e a página eu coloquei a mesma do parâmetro acima

RETORNO AUTOMÁTICO DE DADOS : Ativado e a página eu coloquei a mesma do parâmetro acima

 

Só para você entender um pouco:

PÁGINA DE REDIRECIONAMENTO: Será a pagina que irá mostrar para o usuário algo como "Obrigado pela compra..." - O ideal é que não esperar retorno de dados nessa pagina, utilize-a apenas para mostrar os dados para seu comprador.

NOTIFICAÇÃO DE TRANSAÇÕES e RETORNO AUTOMÁTICO DE DADOS: Essas paginas nunca será mostrada para o usuário, esqueça tentar mostrar alguma coisa na tela utilizando essa pagina, ela devera apenas processar imformações.

 

Captura de dados

PÁGINA DE REDIRECIONAMENTO: recebe apenas o código da transação via get ( se tiver marcado a opção para enviar o código ) o qual deverá utilizar a API de consulta por código de transação para pegar os detalhes da transação - TENTE USAR ESSES DADOS APENAS PARA MOSTRAR PARA SEU USUÁRIO, NÃO ATUALIZE SEU BANCO NESSA PARTE

NOTIFICAÇÃO DE TRANSAÇÕES: Recebe dois posts, um com o código da notificação e outro com o tipo da notificação. o qual deverá utilizar a API de notificação para pegar os dados - NÃO TENTE PRINTAR NA TELA UTILIZANDO ESSA PAGINA.

RETORNO AUTOMÁTICO DE DADOS: Recebe o post com alguns dados da transação o qual você precisa validar com o pagseguro se os dados são realmente verdadeiros.

 

 

Bom agora vamos ao que interessa.

 

Tanto para o retorno quanto a API de notificação, aconselho utilizar sistemas de log para ir mapeando o que vai acontecendo, sugestão... Onde você iria incluir o echo, você iria incluir a função para gravar no log.

 

Uma coisa muito importante, se você está utilizando a API de notificação, não tem motivos para usar o retorno de dados, uma vez que a API de notificação tem muito mais recursos.

 

O seu código abaixo é sobre o retorno de dados, caso queira manter então deixe desativado a API, ( eu aconselho utilizar somente a API)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa cara me ajudou bastante, agora vamos por partes mesmo :joia:

 

A "PÁGINA DE REDIRECIONAMENTO" será chamada se - somente-se o usuário fechar o pagamento ou será chamada se ele não aceitar pagar também?

Entendi, eu vi nas configurações do PagSeguro que eu posso enviar o número de referência por parâmetro e ainda definir no nome do parâmetro :clap:

 

Agora as 2 seguintes páginas "NOTIFICAÇÃO DE TRANSAÇÕES" e "RETORNO AUTOMÁTICO DE DADOS" eu fiquei com um pouco de dúvida, preciso utilizar ambas? porque pelo que explicou a página "NOTIFICAÇÃO DE TRANSAÇÕES" já é suficiente, sendo que ela retorna o código da notificação e o tipo, neste caso eu preciso saber se o tipo for (o tipo definido para pagamento efetuado ou pagamento liberado) eu atualizo o banco liberando o produto para o cliente e você disse que a página "RETORNO AUTOMÁTICO DE DADOS" retorna vários dados da transação porém eu tenho que validar com o PagSeguro...

 

Meu caso é bem simples, os passos que preciso :

 

1 - Chamar o PagSeguro com os itens e valores e solicitar o pagamento(isso já está fazendo).

2 - Caso o cliente decida mesmo comprar e efetue o pagamento redirecione para uma página onde eu possa agradecer o cliente e mostrar o código da transação do pagamento na tela pra ele para que ele possa guardar e acompanhar no PagSeguro caso necessite(isso pela sua explicação ja deu pra entender que basta configurar a "PÁGINA DE REDIRECIONAMENTO" o que não sei ainda é se ela será chamada somente se o cliente efetuar o pagamento).

3 - Por fim eu preciso somente se o pagamento for aprovado mesmo enviar para mim o id que eu enviei para o PagSeguro na hora da compra(que seria o ID do pedido) e o código do pagamento do PagSeguro(lembrando que preciso só quando o pagamento for aprovado/liberado ou se o cliente desistir do pagamento).

 

Pelo que entendi este código que postei só seria necessário caso eu não usasse a API ou seja o componente PagSeguroRetorno e neste componente quais eventos e como eu faco para pegar os dados que informei que preciso nos 3 passos acima?

 

Muito obrigado pela ajuda meu caro... te devo 1...

 

Abraco...

 

ATT,

LBarcelosM

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.