PagSeguro: Guia de Utilização com ASP.NET MVC

Olá pessoal!
Depois de bastante tempo sem publicar por aqui – afinal tive meu casamento, lua de mel, projetos indo pro ar, etc, etc – resolvi fazer um post sobre algo que utilizamos em um projeto recente da NBR.

Para  aqueles que estão pensando em utilizar uma solução de pagamento online, o PagSeguro é uma ótima opção. Porém, sua documentação para integração com ASP.NET MVC, ou qualquer outra linguagem, não é 100%.
Por este motivo, este post servirá como guia para utilização com ASP.NET MVC, mas poderá servir de base para utilização em qualquer outra plataforma.

Como o objetivo aqui não é apresentar o PagSeguro, acesse seu site para conhecer o funcionamento.

1. Qual é o fluxo do PagSeguro?

O fluxo do PagSeguro é simples. O site que está vendendo algum produto ou serviço deverá enviar ao PagSeguro as informações da compra, como quantidade, produto, frete, etc. Este “envio” pode ser realizado como um post para um endereço do PagSeguro. A partir deste ponto o usuário estará no ambiente da UOL, onde deverá realizar um rápido cadastro, selecionar a forma de pagamento e concluir o processo. Neste momento, o PagSeguro pode ser configurado para retornar para uma URL específica do seu site, e consequentemente apresentar uma mensagem específica de retorno para o usuário.

Portanto, resumidamente podemos colocar:

  1. Seu site obtém as informações de compra, monta um formulário e envia-o para a URL do PagSeguro;
  2. O PagSeguro inicia o processo de pagamento, requisitando o cadastro do usuário (não é o mesmo cadastro do seu site);
  3. O cliente, já no ambiente do PagSeguro, solicita a forma de pagamento desejada;
  4. O usuário insere as informações e conclui o processo;
  5. O PagSeguro retorna para o seu site através da URL de retorno configurada no PagSeguro pelo administrador da conta;
  6. Em um outro momento, que não exatamente no retorno para a sua URL configurada, o PagSeguro chama a mesma URL passando informações via POST sobre o status da compra.

Em muitas conversas encontro dúvidas no passo 6. A mais comum delas é se o PagSeguro, ao retorna para a sua URL de retorno no fluxo do cliente, já envia as informações sobre o status da compra. Neste caso não, pois ele executa o verbo GET na sua URL. Quando, para esta mesma URL, ele executar o verbo POST, estará passando as informações da compra.

2. Como realizar sua implementação no ASP.NET MVC?

Portanto, se através da mesma URL configurada no PagSeguro, teremos o retorno da navegação do cliente no processo de compra e o recebimento das informações do status da compra, no ASP.NET MVC basta criarmos duas actions em um controller, uma configurada para GET e outra para POST.

   1:  public ActionResult Retorno()
   2:  {
   3:      // ...
   4:  }
 
   1:  [HttpPost]
   2:  public ActionResult Retorno(FormCollection form)
   3:  {
   4:      // ...
   5:  }
 

O primeiro método deverá retornar uma tela informativa ao cliente, informando, por exemplo, o status da compra dele.
O segundo método deverá obter as informações do FormCollection e tratá-las no sistema, para atualização do status do pedido. É importante destacar que a cada alteração do status do pedido dentro do PagSeguro, uma requisição para a URL de retorno através de POST será realizada.

É muito importante também citar que apenas a requisição ao GET é síncrona, dentro do fluxo de navegação do cliente. Já para a outra requisição não podemos determinar quando será realizada.
Porém, no projeto que utilizamos a solução, o retorno via POST do pagseguro é extremamente rápida, e em alguns momentos o retorno do GET já apresenta um status atualizado para o cliente.

3. Como testar localmente?

Um grande problema deste esquema é a dificuldade de testes. No projeto que publicamos, realizamos dois tipos de teste para  o PagSeguro. Em um, no período de desenvolvimento, o nosso fluxo de compra não chega ao PagSeguro, paramos no momento em que a compra é registrada no sistema com o status “Registrado”. Neste ponto, ativamos um HTML simples nosso, que simula o retorno do PagSeguro à nossa action Retorno configurada como POST, passando as informações necessárias.

Em produção, toda comunicação de retorno com o PagSeguro é logada no banco de dados. Gravamos todas as chaves/valores que chegam via POST para análise da comunicação.

Conclusão

O PagSeguro é uma ferramente excelente. Sua documentação e ambiente de teste não estão OK, mas seu funcionamento e agilidade compensam tudo isso.

Abraços.

1 Comment

Comments have been disabled for this content.