Pagamento com Moip
Já tem um bom tempo que ando estudando os meios de pagamento brasileiros. Como não quero depender de uma infra-estrutura Windows e também não quero passar por muita burocracia em vários casos, acabou sobrando apenas meios como os gateways de integração (não verdade não são bem gateways).
A diferença básica entre uma integração ou um gateway é que através do gateway o usuário nunca sai do seu site. Você recolhe os dados e envia através de conexão segura (SSL ) para o gateway que passa por uma série passos padrozinados.
Este passos normalmente são authorize, capture, purchase ou void. E através destes passos é possível que uma biblioteca como o Active Merchant consiga abstrair as dificuldades e facilitar a transação com vários gateways.
Porém, como não temos gateways padronizados no Brasil (ao menos não encontrei nenhum) sobraram as integrações. Integração é algo no estilo Paypal, onde o usuário é redirecionado para o site da organização que realiza a captura dos dados e a cobrança.
O bacana é que o ActiveMerchant também tem meios de pagamento através de integração, porém as soluções deste tipo no Brasil também são bem despadronizadas. O que dificulta uma implementação deste meios de pagamento com o ActiveMerchant.
E pensando em encontrar uma boa solução para pagamentos dos meus clientes, venho testando os que parecem ser mais interessante, como por exemplo o pagamento certo da Locaweb (veja a app de teste que fiz). Também testei o pagseguro e o pagamento digital, mas nem criei uma app de teste porque ambos são muito bagunçados, documentação ruim, api estranha com métodos horrorosos, suporte inexistente (ao menos não encontrei) e por aí vai.
Então, na semana passada comecei a testar o MoIP. Testei todas as ferramentas deles: intregação simples, integração HTML e integração via API Rest.
Apesar de um pouco desconhecido ainda, eles são muito melhor do que todo o resto que testei no Brasil. De todos, é o que mais se aproxima do Paypal.
Primeira vantagem do Moip é que ele possui um sandbox, que é um ambiente idêntico ao real só que as transações não acontecem de verdade, desta forma você pode testar a vontade. Quando falo de uma ambiente de testes não é aquele tipo de solução do PagSeguro que é um servidorzinho de testes que você tem que instalar na sua máquina, e sim um sandbox mantido pelo próprio Moip semelhante ao caso do Paypal.
Segundo, a API é bem documentada (tem falhas, como parâmetros escondidos, mas já é 100x melhor do que os outros) . Possui IPN, que é notificação de pagamento, ou seja, após o pagamento o MoIP vai ficar contatando sua app e enviando o status da transação.
Terceiro, possui pagamento recorrente, mas este eu não testei pois prefiro tratar estas coisas na minha app.
Para terminar, eles possuem uma API Rest. Se você não quer tanta flexibilidade, então pode usar só um form simples através da integração HTML, mas se estiver usando Rails é melhor que use API Rest já que isto é muito simples no Rails.
Eu também ia dizer que o suporte é uma vantagem, mas ultimamente não tem sido. Mandei um email reportando duas incompatibilidades com o Safari e eles nem me responderam, também fiz algumas perguntas nesta semana e até hoje nada. Reportei duas falhas sobre o Safari através do sistema de Tickets e fui respondido em menos de 24h. Inclusivo pedindo mais sugestões, além de em pouco tempo terem resolvido os problemas. Também fiz algumas perguntas que não estavam na documentação e me responderam com muito clareza.
Ainda não tive tempo de tentar uma integração com o ActiveMerchant (acredito que é totalmente possível), mas para fins de testes e aprendizado criei uma appzinha básica no github que usa o HTTParty para comunicar com Moip via API Rest.
O ponto central da integração (da forma que eu fiz), é uma classe na pasta lib do Rails que contém o código abaixo:
Este código faz nada mais que incluir o HTTParty, montar um xml simples com o builder e depois fazer um post autenticado (com os dados que vieram do arquivo gateway.yml). O método charge faz tudo isto e retorna um xml que é convertido em um hash para você usar dentro de sua app.
Desta forma eu posso chamar em qualquer controller algo como abaixo:
Então se você está afim de encontrar um jeito fácil de pagamento com Rails no Brasil, acesse este link