quarta-feira, 26 de dezembro de 2012

Integração com PagSeguro Parte 1

Conceito e configuração da conta.


1. Introdução

O PagSeguro é uma solução nacional para pagamentos online mantida pela UOL. Estas soluções visam facilitar a vida de compradores e vendedores e a mais famosa é o PayPal.

Como o Paypal não atuava oficialmente no Brasil, era preciso usar cartão de crédito internacional e acabava dificultando as coisas para quem compra e principalmente para quem vende.

O PagSeguro funciona bem e até agora se provou seguro, tanto para quem compra quanto para quem vende.

O maior defeito do PagSeguro, em minha opinião, é a falta de um Sandbox oficial para testes. Até existem opções criadas por terceiros, mas não são suportadas e a que eu testei nem funcionava mais com a API nova de integração.

Isto não é problema para compradores e vendedores, mas dificulta o trabalho dos desenvolvedores pois torna o teste mais trabalhoso e custoso.

Minha intenção aqui é mostrar, em alguns posts, como eu fiz para integrar um sistema meu com o PagSeguro.

2. Fluxo resumido da operação

O fluxo inicia com o usuário finalizando a compra escolhendo o modo de pagamento PagSeguro. Feito isto a aplicação faz o processamento desta venda utilizando a API do PagSeguro e recebe uma URL.

O sistema deve redirecionar o usuário para esta URL, para que ele possa finalizar o pagamento.

Depois que o pagamento é finalizado o usuário é redirecionado de volta para o sistema de origem e o fluxo das notificações se inicia.

O PagSeguro fará um ou mais POSTs em uma página de seu sistema passando dois parâmetros: notificationcode e notificationtype.

São com estas notificações que o PagSeguro informará a seu sistema o que está acontecendo com a transação.

A página que recebe o post deve utilizar o código da notificação para acessar o PagSeguro via API e obter o status da transação, obtendo várias informações como se o pagamento foi autorizado ou não.

Mais detalhes podem ser vistos neste link: https://pagseguro.uol.com.br/integracao/pagamentos-via-api.jhtml

Outra informação importante é que caso o PagSeguro não consiga enviar os dados da notificação para seu sistema, "o PagSeguro irá envia-la novamente a cada 2 horas, até um máximo de 5 tentativas".

Mas caso seu sistema fique fora do ar por mais tempo é possível obter as informações das transações realizando uma consulta por data: https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-por-intervalo-de-datas.html.

3. Configuração da Conta

O primeiro passo é converter sua conta para Vendedor ou Empresa, você vai precisar disto para fazer os testes iniciais. Como não há disponibilidade de um sandbox de testes, será necessário realizar umas compras e depois cancelar.

Depois de converter a conta, será possível acessar o menu 'Integrações' e a primeira configuração será  a 'Pagina de redirecionamento'. 

Essa é a página para qual o cliente será redirecionado depois que finalizar o pagamento no PagSeguro. Eu pessoalmente prefiro o redirecionamento dinâmico, pois em caso de alguma mudança na aplicação, eu não preciso que o cliente reconfigure este parâmetro.

Você vai configurar o nome do parâmetro que o PagSeguro vai utilizar para informar o código da transação. Com este nome, você pode via API buscar as informações sobre esta transação, para informar ao cliente.


O segundo item do menu permite a criação do 'Token de segurança', que será utilizado na autenticação entre o sistema e o PagSeguro. Depois de criado ele fica visível apenas na criação e caso você esqueça ou perca, basta gerar novamente.

No terceiro item é onde ativaremos o 'Pagamento via API'


O quarto item do menu, é o 'Notificação de transações' e será o ultimo a ser configurado. Aqui vamos definir qual página de nosso sistema receberá as notificações sobre as mudanças de status das transações.

Por causa dessa característica, mesmo na fase de desenvolvimento será preciso configurar com uma URL válida. 

Isto é chato e as duas possibilidades que eu vejo são:
1. Utilizar seu servidor local. Para isso é preciso que o PagSeguro tenha acesso externo via internet. Isso pode ser complicado caso você esteja acessando a internet via um roteador ADSL ou proxy.
2. Utilizar um servidor de homologação. No meu caso eu criei uma conta no Amazon EC2 e montei um ambiente de homologação.


Nós primeiros testes, para conseguir debugar com a aplicação rodando localmente, eu iniciava o teste de minha maquina e depois monitorava as notificações que eram enviadas pelo PagSeguro para o meu servidor de homologação.

Eu monitorava logando em um arquivo os dados enviados via GET/POST para a página:

================= 2012-12-07 19:06:52 ==================
notificationcode=1F2964-960Z850D85F6-0BB4T3AFBC5E-2997F0
notificationtype=transaction


Com estes dados em mãos eu posso repassar para meu sistema local, via URL no navegador:

processaNotificacao.wsp?notificationcode=1F2964-960Z850D85F6-0BB4T3AFBC5E-2997F0&notificationtype=transaction

Minha recomendação é que todos os POSTs/GETs recebidos pela página de notificação sejam logados, assim caso não seja processado algo em seu sistema por causa de um bug, o processamento pode ser feito manualmente.

No próximo post eu falarei sobre a utilização da API e sobre a criação de tabelas para guardar em banco tudo que foi processado, realizando um controle melhor e evitando o acesso ao PagSeguro sem necessidade.

[]'s


Nenhum comentário: