Issuu on Google+

Guia de Implementação

Versão 1.2

Pagamento Certo Ruby on Rails

Comércio Eletrônico Locaweb

Autores: Equipe Comércio Eletrônico Fabio Akita – Gerente de Produtos Locaweb

Guia de Implementação

Pagamento Certo Ruby on Rails_

Versão 1.2

http://www.pagamentocerto.com.br comercio@locaweb.com.br Atendimento: http://atendimento.locaweb.com.br

03/03/2009

Pagamento Certo Ruby on Rails

Página 1 de 5


Guia de Implementação

Versão 1.2

Pagamento Certo Ruby on Rails Introdução O Pagamento Certo é um sistema para receber pagamentos online em qualquer site, loja virtual, blog, onde desejar. Você vende pela internet e não tem dor de cabeça na hora de receber, com todas as contas e meios de pagamentos centralizados em um só local. A sua utilização poderá ser feita tanto como pessoa física ou jurídica. O cadastro é gratuíto e pode ser realizado através do endereço http://www.pagamentocerto.com.br As taxas serão cobradas quando você começar a vender. Para mais informações sobre os valores, consulte o endereço http://www.pagamentocerto.com.br

Passo 1: Cadastro do Vendedor Após efetuar o cadastro, acesse o painel de controle do Pagamento Certo através do endereço http://www.pagamentocerto.com.br/painel e cadastre os seus dados bancários para receber a chave de vendedor, que será usada em todas as suas transações. A chave de vendedor será enviada para o e-mail utilizado no cadastro e possui o seguinte formato: "XXXXXXXX-AAAABBBB-CCCC-ZZZZZZZZZZZZ".

Passo 2: Aplicação

Description: Gem que se comunica com o serviço "Pagamento Certo" da Locaweb Homepage: http://pagamentocerto.com.br Clone URL: git://github.com/akitaonrails/lw-pagto-certo.git

Link para Download: http://github.com/akitaonrails/lw-pagto-certo/tree/master

lw-pagto-certo Gem para integração com o serviço Pagamento Certo da Locaweb

DESCRIÇÃO: Encapsula as chamadas SOAP ao servidor do Pagamento Certo, criando os envelopes corretos de dados. REQUISITOS: ActiveSupport SOAP4R Builder

INSTALAÇÃO:

gem install akitaonrails-lw-pagto-certo

03/03/2009

Pagamento Certo Ruby on Rails

Página 2 de 5


Guia de Implementação

Versão 1.2

Pagamento Certo Ruby on Rails Na sua aplicação feita em Ruby on Rails, você tem os seus produtos/carrinho de compras e no processo de finalização da compra será feita a confirmação do pagamento. Neste momento você fará a seguinte chamada: lw = LwPagtoCerto.new(:chave_vendedor => "XXXXXXXX-AAAA-BBBB-CCCC-ZZZZZZZZZZZZ", :url_retorno => "http://meusite.dominio.com.br/confirmacao_pagamento")

A url_retorno tem que ser uma URL válida, acessível pela internet. Abaixo segue diagrama de fluxo deste processo:

Você inicia o processo de transação e recebe um ID da transação

;

Sua aplicação devolve um HTTP POST ao endereço em LwPagtoCerto.DefaultCheckoutUrl com o campo "tdi" idêntico ao ID da transação. Isso redirecionará o seu cliente ao site do Pagamento Certo, com todos os dados do pedido e já pronto para pagar; Depois que o seu cliente conclui a transação, o Pagamento Certo fará um HTTP POST de volta à sua aplicação, na URL que você passou no: url_retorno, devolvendo novamente o ID da transação no "params[:tdi]" (crie um controller Rails e cheque isso na action "create", por exemplo). Se você tiver um recurso assim, por exemplo: # config/routes.rb map.resource :checkout # app/controllers/checkout_controller class CheckoutController < ApplicationController def create id_transacao = params[:tdi] lw = LwPagtoCerto.new(:chave_vendedor => "XXXXXXXX-AAAA-BBBB-CCCC-ZZZZZZZZZZZZ") retorno = lw.consulta(id_transacao) if retorno[:cod_retorno] == "15" flash[:success] = "Pagamento bem sucedido" else flash[:error] = retorno[:mensagem_retorno] end end end

03/03/2009

Pagamento Certo Ruby on Rails

Página 3 de 5


Guia de Implementação

Versão 1.2

Pagamento Certo Ruby on Rails Nesse caso a url_retorno seria www.meusite.com/checkout Como já adiantado no código acima, note a chamada à API de consulta da transação, onde você poderá ver se o processo ocorreu de forma correta ou não. Uma vez criada a instância de LwPagtoCerto, preencha os dados do cliente corretamente conforme o exemplo abaixo: lw.comprador = { :Nome => "Fabio Akita", :Email => "fabio.akita@locaweb.com.br", :Cpf => "12312312300", :Rg => "123456780", :Ddd => "11", :Telefone => "12345678", :TipoPessoa => "Fisica", # :RazaoSocial => "", # :Cnpj => "", } lw.pagamento = { :Modulo => "Boleto", # :Tipo => "", } lw.pedido = { :Numero => "12345", :ValorSubTotal => "2000", :ValorFrete => "000", :ValorAcrescimo => "000", :ValorDesconto => "000", :ValorTotal => "2000", :Itens => { :Item => { :CodProduto => "4321", :DescProduto => "Livro", :Quantidade => "1", :ValorUnitario => "2000", :ValorTotal => "2000", }, }, :Cobranca => { :Endereco => "Rua Foo", :Numero => "123", :Bairro => "Foo", :Cidade => "Sao Paulo", :Cep => "12345678", :Estado => "SP", }, :Entrega => { :Endereco => "Rua Foo", :Numero => "123", :Bairro => "Foo", :Cidade => "Sao Paulo", :Cep => "12345678", :Estado => "SP", }, }

Com o objeto LwPagtoCerto preenchido corretamente você deve chamar o método "inicia", que começará uma transação aberta com o Pagamento Certo, lhe devolvendo o ID da transação e depois deste ponto que se faz o HTTP POST ao Pagamento Certo passando essa ID no campo "tdi" do Post. retorno = lw.inicia() # => {:mensagem_retorno=>"Transa\303\247\303\243o iniciada.", :id_transacao=>"YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ", :codigo=>"45383", :cod_retorno=>"0"}

Além disso, o objeto "retorno" ainda tem um método extra "cod_retorno_mensagem" para traduzir o código no campo: cod_retorno.

03/03/2009

Pagamento Certo Ruby on Rails

Página 4 de 5


Guia de Implementação

Versão 1.2

Pagamento Certo Ruby on Rails Como explicado, depois que o cliente conclui a transação, o Pagamento Certo te redireciona a url_retorno que você informou, repassando o ID da transação e então você poderá verificar o resultado assim: retorno = lw.consulta("YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ") # => {:mensagem_retorno=>"Transa\303\247\303\243o ainda n\303\243o processada.", :id_transacao=>"YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ", :cod_retorno=>"12"}

Aqui também, o objeto "retorno" ainda tem um método extra "cod_retorno_mensagem" para traduzir o código no campo: cod_retorno. Procure por mais constantes no arquivo "lib/lw-pagto-certo/version.rb" REFERÊNCIAS Para entender o fluxo em detalhes bem como cada um dos dados retornados, consulte o arquivo Guia de Implementacao - Pagamento Certo.pdf ou acesse o site: http://pagamentocerto.com.br/downloads/ e baixe o Kit de Integração.

03/03/2009

Pagamento Certo Ruby on Rails

Página 5 de 5


Locaweb