Vocês provavelmente já conhecem o PagSeguro, sistema de pagamentos do UOL que permite transações financeiras seguras pela internet, poupando vendedores e pequenas lojas da burocracia de ter que fazer contrato com operadoras de cartão de crédito e bancos para poder vender on-line.
Recentemente temos usado muito o pagseguro na interAtiva!, tanto para sistemas de clientes quando para sistemas próprios, e também para receber pagamentos de pessoas de longe de forma rápida, flexível e segura.
Se um cliente de São Paulo, por exemplo, nos contrata para criar um sistema para sua empresa, ele pode nos pagar o sistema em até 15x (dependendo do cartão de crédito), mas nós recebemos o valor completo do trabalho em 14 dias. Além disso, caso algo inesperado ocorra, podemos cancelar o pagamento em até 14 dias.
Uma das ferramentas que o PagSeguro disponibiliza para os vendedores é o carrinho de compras, que pode ser utilizado o do próprio PagSeguro, ou então do próprio cliente.
Quando construímos sistemas que vendem alguma coisa, geralmente utilizamos o carrinho de compras próprio, e o retorno automático do PagSeguro para acompanhar o status da transação, e, quando completa, liberar a entrega do produto ao comprador. Caso este produto seja acesso a um SaaS, por exemplo, basta liberar a conta do cliente ao receber o aviso do PagSeguro que a transação foi concluída.
Mas, e como testar tudo isso? Seria bastante complicado eu ter que comprar algo de mim mesmo e pagar para poder testar o retorno automático do PagSeguro e o funcionamento do meu sistema, não?
Neste ponto, devo ressaltar que considero um erro grande do pessoal do PagSeguro não ter criado um “sandbox” para a realização de testes, como o PayPal disponibiliza por exemplo.
No entanto, o pessoal da Visie criou uma biblioteca em PHP para trabalhar com PagSeguro, bem como um servidor de testes, escrito em Python, para testar a integração com o sistema. O servidor de testes basicamente “imita” o PagSeguro, para que você possa testar a integração do sistema com seu site.
Vou guiá-lo neste post pelos passos necessários para utilizar o servidor no Mac.
Obtenha o servidor de testes
Para obter o servidor de testes, entre no Guia do Desenvolvedor PagSeguro da Visie, na página Ambiente de Testes. Baixe o pacote e descompacte-o em algum lugar no seu computador. Eu matenho ele numa pasta na minha pasta de projetos chamada “pagseguro_sandbox”.
Configure o ambiente
Embora o servidor de testes já acompanhe um ótimo manual de configuração, vou guiá-lo pelos passos de configuração aqui, caso tenha ficado alguma dúvida.
Dentro da pasta do servidor de testes, há uma outra pasta chamada “pagseguroMockup”, abra o arquivo “settings.py” que se encontra dentro desta pasta, e troque o valor da variável “retornourl” para a sua URL de retorno automático local. Observe:

O próximo passo será uma correção que precisamos fazer no script “pagseguro.py”, dentro desta mesma pasta, exatamente na linha 63. Troque isto:
'Referencia': ''.join(data['ref_transacao']), #'ref_transacao',
Por isto:
'Referencia': 'ref_transacao',
Isto é apenas um hack para evitar erros no servidor depois. Tive que fazer isto para que ele funcione direito por aqui, não tenho a mínima idéia do motivo, mas simplesmente funciona.
Gere uma chave SSL para o servidor de testes
Este passo é um pouco confuso, mas nada difícil. Como o servidor de testes do PagSeguro roda na porta 443, de conexões seguras, através do protocolo HTTPS, precisamos gerar uma chave SSL para ele, claro que será uma chave “dummy”, mas é necessário. Para isto, entre na pasta “PagSeguroTestsServer” no terminal, e rode o comando:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Este comando irá gerar um arquivo “server.pem”, que é necessário para o servidor rodar.
Aponte o endereço do PagSeguro para o servidor de testes
Agora, para fazer com que o seu sistema que usa PagSeguro “pense” que o servidor de testes é o PagSeguro, você precisa editar o arquivo /etc/hosts, criando um apontamento para que o endereço “pagseguro.uol.com.br” aponte para o servidor local.
Isto deve ser feito editando-se o arquivo /etc/hosts. Assim:

Acrescente isto no arquivo:

Pronto! Agora vamos rodar o servidor de testes. Para isto, estando na pasta do servidor, rode o seguinte comando:
sudo python ./PagSeguroServer.py
Para testar se o servidor está funcionando, podemos tentar acessar a url no navegador: https://pagseguro.uol.com.br
Seu navegador provavelmente irá alertar sobre o certificado SSL ser inválido, mas não se preocupe, afinal trata-se do nosso servidor de testes local. Se você receber um retorno “Why GETting?” quando acessar a URL, então está tudo funcionando perfeitamente.
Outra coisa que recomendo que você faça é pular a etapa de verificação dos dados com o PagSeguro, pois como nosso servidor de testes não é o PagSeguro, os dados podem não validar corretamente e a transação não ocorrer corretamente.
Agora basta testar sua aplicação PagSeguro. Lembre-se que, enquanto estiver com a linha do /etc/hosts apontando o server local para o pagseguro, você não irá conseguir acessar o servidor, portanto após fazer os testes, comente ou remova a linha.
Só para você ter uma idéia de como o servidor de testes se comporta, observe o que ocorre ao realizar uma compra com o servidor de testes:

Espero que o artigo tenha sido útil para todos que estão começando a utilizar o PagSeguro para realizar pagamentos on-line. Caso você tenha alguma dúvida ou sugestão, não deixe de comentar. Vale lembrar que também existe uma forma de testar o PagSeguro no Windows, com .NET, dê uma lida aqui.
Abraços e até a próxima!

Utilizando o servidor de testes do PagSeguro no Mac…
Utilizando o servidor de testes do PagSeguro no Mac…
Testei aqui e eu recebo um Unknown data quando eu uso meu botao de comprar gerado no pagseguro.