29
e-Commerce em Rails - Spree em Português
by AkitaOnRails on Aug.29.2008 at 09:56pm
O Sean acabou anunciando antes da hora :-) Mas tudo bem, vamos lá: tudo começou porque o Gregg lançou o EnvyCasts para vender seus excelentes screencasts. Obviamente ele precisava de algum sistema de e-commerce para isso.
Fazer um e-commerce do zero não se faz do dia para a noite. Daí entra o Spree, um projeto open source que implementa um e-commerce bem simples em Rails, mas que já deve servir para a maioria das pequenas lojas – não, não serve para ser a próxima Amazon :-)
Ele se utiliza da gem ActiveMerchant para se comunicar com os gateways americanos de pagamentos.
É aqui que eu entro: faltava uma aplicação como essa aqui no Brasil. Como ninguém fez, ontem de madrugada resolvi fazer a parte de localização que faltava para português. O resultado você pode ver no site de demonstração e clicar na nossa bandeira. A parte de localização tinha alguns defeitos, faltava separar strings, então eu dei um pequeno tapa em algumas áreas. O Sean já deu merge no projeto principal.
Depois de ter olhado o código já vi várias partes que podem melhorar. Uma das coisas que fiz foi adicionar suporte a localização às extensions. O Spree pode ser extendido via essas extensions, então era importante que ela também fosse localizada. Outra coisa que se ninguém começar eu quero acrescentar é Page Caching, pelo menos às páginas públicas de produtos.
Mas o projeto que quero tentar fazer é criar gateways para pagamentos em instituições financeiras do Brasil. A Locaweb tem suporte a isso e quero ver se consigo integrar. Se conseguir isso vai significar uma pequena loja feita em Rails que é viável para pequenos negócios e ainda extensível via Ruby. Só para garantir que eu não estou reinventando a roda, alguém já tentou fazer gateways desse tipo em ActiveMerchant? Se não, outra pergunta, alguém está a fim de ajudar nessa implementação? Só para terem uma idéia, dêem uma olhada nos exemplos em ASP e PHP que tem na atual Loja de exemplo da Locaweb.







Fábio,
eu criei um projeto a algumas semanas com o propósito de aglomerar os meios de pagamentos brasileiros, http://github.com/kivanio/acts_as_payment/tree/master
hoje tenho a parte de boletos do banco do brasil completa e com leitura de retorno, se achar interessante colaborar com o projeto fique a vontade, aliás quanto mais gente melhor, pois existem muitos meios de pagamentos a serem adicionados ao projeto.
Akita, ao cadastrar um novo cliente no spree, se um campo é deixado em branco a mensagem de erro resultante está em espanhol: “no puede estar en blanco”. :)
@kivanio voce acha que seria facil adicionar suporte ao ActiveMerchant?
Akita não sei a que pé anda, mas você já deu uma olhada no subtruct? Quando precisei fazer uma proposta de e-commerce para um cliente foi ele que usei como base no orçamento.
Outra coisa é que eu gostaria de ajudar no projeto sim, posso fazer o page caching e também outros cachings… como devo precisar disso logo logo tenho interesse em ajudar nesse projeto. També tenho o livro do peepcode sobre ActiveMerchant mas ainda não li, talvez eu possa ajudar nisso também. ;)
Ao meu ver integrar nossas formas de pagamento ao sistema do ActiveMerchant é inviável.
O ActiveMerchant funciona com proxy de pagamento disponível apenas nos US, o único sistema parecido no Brasil é o oferecido pela Locaweb, que não se trata do mesmo modelo de proxy, na Locaweb o proxy foi implementado seguindo as regras de homologação das operadoras, que no Brasil, existem que o site não capture informações do cartão do cliente.
Tendo o fato acima, o ActiveMerchant tem um API toda com base em capturar os dados do cartão e envia-los ao proxy, quando no Brasil teríamos que fazer algo que trabalhe diretamente com a operadora ou com o proxy da Locaweb.
No caso do Visa ainda existe uma agravante, quando se trabalha diretamente com a operadora de cartão é necessário a utilização de um servidor com Windows, ela exige a utilização de componentes feitos em VB (CGI pra ser mais exato) que depende de Windows, para isso eu fui atrás de duas soluções, a primeira foi tentar fazer estes componentes funcionar com Wine, obtive parcial sucesso, mas embarranquei em alguns problemas de API que o pessoal do Wine nunca viu na vida :P, não desisti de tentar isso mas ainda vou levar um tempo ate corrigir todos os erros.
Outra solução foi instalar Windows em máquina virtual no servidor dedicado que tenho para o projeto, mas nem todo mundo pode contar com isso, mas nesse caso podem usar o proxy da Locaweb.
Para quem já esta pensando que falar com o Visa sobre componentes para ambiente POSIX seria mais fácil, esteja a vontade para cobrar deles, trabalho com e-commerce a mais de 5 anos, e bem antes de mim já tinha gente cobrando isso deles e nada até hoje. Vamos todos petelhar eles?!?!?!
De qualquer maneira acredito que nosso ambiente de pagamento é completamente diferente do ActiveMerchant, se implementássemos funcionalidades junto ao plugin deles estaríamos adicionando peso a ActiveMerchant.
Para o Brasil poderíamos trabalhar com 3 plugins para pagamento por cartão:
- Pagamento direto pela operadora, sem uso de proxy;
- Pagamento pelo proxy da Locaweb;
- Pagamento pelo serviço checkout da Pagseguro;
Penso em três plugins diferente porque quem trabalha com uma forma de pagamento normalmente não trabalho com outra. Mas tudo isso é uma idéia, estou disposto a contribuir com a experiência que tenho em trabalhar com pagamento direto nas operadoras e com o proxy da Locaweb.
Que bacana, esta semana estava usando o spree, postei ate no rubyOnBr umas duvidas, mas achei muito complicado o comercio eletronico do spree, estou pensando em desenvolver algo bem mais simples onde um iniciante em rails possa ver o codigo e conseguir alterar para estudo ou uso pessoal, tenho a parte da noite livre e ja começo a me organizar para brincar.
Meu objetivo: não dá para “bater” esse outro cara mas precisava ser competitivo. Conversei com o Sean ontem e ele vai implementar um sistema de taxonomia mais inteligente do que o burro estilo “categoria → sub-categoria” por exemplo.
Uma coisa que falta: um bom skin. Algum designer se habilita a mexer nos css pelo menos? :-)
Akita! sou iniciante no Rails se tiver alguma tarefa boba :)
adoraria ajudar, depois de ter ouvido o podcast seu e do carlos, lembro q vc mencionou sobre um e-commerce em rails, dai comentei com um amigo falatava um e-commerce em rails nacional, Tai o incentivo que faltava :)
iurims@gmail.com
Uma coisa que pode ser adicionada é a busca de cep do brazilian rails, temos que alterar a combo de estados tb.
Akita, se você der uma olhada no issue tracker do Substruct metade dos patches e todos os testes são meus :). Atualmente estou implementando uma loja para mim mesmo e estou utilizando o Substruct, a parte que falta e que eu começaria a implementar agora é exatamente a parte de pagamento e envio pois o resto já está feito.
Qualquer coisa é só entrar em contato: edmundo.vn@gmail.com
Vi esse spree a um tempo atrás, mas como estou iniciando em rails nao me aventurei a adaptar os modulos de pagamento que a locaweb disponibiliza para integrar em php.
Acho que seria uma grande jogada da locaweb, disponibilizar os kits de integração com rails.
Fica aí a sugestão Akita :D
Olá Akita, e aí? O projeto vai continuar com o Spree mesmo? Eu tinha me oferecido para fazer a parte de page caching mas como acho que um bom skin é mais importante por enquanto, posso cuidar disso… vou tentar fazer isso hoje ok?
Acho muito importante uma solução de e-commerce para o Brasil… já estou fazendo o fork do seu repo.
@Fábio,
Como já disseram ai para cima, “penso” que não seria uma boa idéia colocar no active_merchant, realmente temos outras características no Brasil, outros agravantes como a Visa(somente ela, pelo que vi, os demais seria mais tranquilo fazer, a maioria é por post/get), ainda teríamos de convencer o pessoal do plugin a incluir nossa vasta e diferente codificação junto ao plugin deles.
Além do fato de "achar"que nossos meios não interessariam muito aos gringos já que poderiam ser somente utilizados com instituições brasileiras, com exceção de paypal e métodos internacionais.
Por isso criei o gem/plugin separado, talvez até poderíamos usar o merchant como dependência e utilizar algum método que já esteja disponível nele, como validações e etc.
Por enquanto é isso que penso, mas precisa ser melhor conversado, eu procurei dar um primeiro start criando o plugin, já tem uma pessoa(Tiago) ajudando e acredito que agora com sua divulgação, mais pessoas podem vir a contribuir, também já registrei um domínio e estou finalizando um blog/site para ficar de hall da fama para quem contribuir e poder incentivar novas pessoas a ajudarem.
@Akita, quanto ao layout posso dar uma mão no skin(e não só o CSS), sem problemas.
Cara,
O UOL lancou algo parecido com o paypal para pagamentos. Dá uma olhada depois.
O link do site abaixo: http://pagseguro.uol.com.br
Muito legal pessoal, para quem quiser colaborar não tem enrosco :-) Façam um fork do meu fork e comecem a desenvolver seus branches. Daí me enviem pull requests que eu centralizo as atualizações.
Akita, me interessei muito por esse projeto e quero ajudar, mas só posso a partir de 01 de Outubro/2008, pois meu tempo está lotado.
Se nessa data vocês precisarem de uma força extra, estarei a disposição!
Abraço
Atualmente estou ajudando um amigo a remodelar o seu e-commerce a partir da loja exemplo da locaweb. Seria muito bom que o fruto desta colaboração substituísse o atual sistema da empresa que é precário. Como eu seria um belo beneficiado deste esforço em massa, também me disponibilizo a ajudar, mas não programo (bom, de programadores vocês estão mais do que bem munidos) sou um arquiteto de informação.
Meu contato: inteligenciacoletiva arroba gmail.com
Se houver o interesse de tornar a produção disto em algo multi-disciplinar, não hesitem em entrar em contato.
Tenho interesse em ajudar também! Já integrei lojas com Visanet e Komerci (Master Card). Como foi dito o VBV ainda só pode ser instalado na plataforma Windows, mas o Komerci disponibiliza uma biblioteca em Java. Essa biblioteca gera um código de verificação que é enviado p/ o gateway da Redecard.
Certa vez escrevi esta classe em Ruby:
http://mferracioli.com/komerci.rb.txt
Abraços