Class: LwPagtoCerto
- Inherits:
-
Object
- Object
- LwPagtoCerto
- Defined in:
- lib/lw-pagto-certo.rb,
lib/lw-pagto-certo/version.rb
Constant Summary collapse
- DefaultEndpointUrl =
"https://www.pagamentocerto.com.br/vendedor/vendedor.asmx"
- DefaultCheckoutUrl =
"https://www.pagamentocerto.com.br/pagamento/pagamento.aspx"
- VERSION =
'0.0.5'
- MODULO_CARTAO =
"CartaoCredito"
- MODULO_BOLETO =
"Boleto"
- TIPO_VISA =
"Visa"
- TIPO_AMEX =
"AmericanExpress"
- TIPO_PESSOA_FISICA =
"Fisica"
- TIPO_PESSOA_JURIDICA =
"Juridica"
- MODULO =
[MODULO_CARTAO, MODULO_BOLETO]
- TIPO =
[TIPO_VISA, TIPO_AMEX]
- TIPO_PESSOA =
[TIPO_PESSOA_FISICA, TIPO_PESSOA_JURIDICA]
- INICIA_COD_RETORNO =
{ :"0" => "Transação iniciada.", :"1" => "Dados de entrada incorretos:", :"2" => "Vendedor não autenticado.", :"3" => "Conta de vendedor desativada.", :"4" => "Conta de comprador desativada.", :"5" => "Dados de comprador incorretos:", :"6" => "XML inválido:", :"7" => "XML mal formatado.", :"8" => "Dados de pagamento incorretos:", :"9" => "Dados de pedido incorretos:", :"10" => "Erro ao iniciar a transação.", :"21" => "CPF não pertence à conta de comprador informada.", }
- FINALIZA_COD_RETORNO =
{ :"11" => "Transação não encontrada.", :"12" => "Transação ainda não processada.", :"13" => "Transação em processamento.", :"14" => "Transação expirada.", :"15" => "Transação processada.", :"16" => "Erro ao consultar a transação.", :"17" => "Transação com tempo de pagamento expirado.", :"18" => "Usuário fechou a janela de pagamento.", :"19" => "Pagamento cancelado pelo usuário.", :"20" => "Número máximo de tentativas de pagamento atingido.", }
Instance Attribute Summary collapse
-
#chave_vendedor ⇒ Object
chave criada ao se cadastrar no Pagto.
-
#comprador ⇒ Object
Dados de comprador - Hash { :Nome => “”, # 3 a 255 :Email => “”, # 5 a 100 :Cpf => “”, # 11 :Rg => “”, # opcional 5 a 14 :Ddd => “”, # opcional 2 :Telefone => “”, # opcional 7 a 8 :TipoPessoa => “”, # 6 a 8 :RazaoSocial => “”, # 5 a 255 :Cnpj => “”, # 1 a 50 }.
-
#pagamento ⇒ Object
Dados de pagamento - Hash { :Modulo => “”, # 6 a 13 :Tipo => “”, # opcional 0 a 15 }.
-
#pedido ⇒ Object
Dados do Pedido - Hash { :Numero => “”, # seu número interno de controle do pedido :ValorSubTotal => “000”, # dinheiro = 999.88 = 99988 :ValorFrete => “000”, # centavos são sempre os dois ultimos digitos :ValorAcrescimo => “000”, :ValorDesconto => “000”, :ValorTotal => “000”, :Itens => { :Item => { :CodProduto => “”, # 1 a 40 :DescProduto => “”, # 1 a 100 :Quantidade => “0”, # :ValorUnitario => “000”, # 3 a 14 :ValorTotal => “000”, # 3 a 14 }, }, :Cobranca => { :Endereco => “”, :Numero => “”, :Bairro => “”, :Cidade => “”, :Cep => “”, # 8 dígitos :Estado => “”, # precisa ser válido, como ex. SP, RJ, etc. }, :Entrega => { :Endereco => “”, :Numero => “”, :Bairro => “”, :Cidade => “”, :Cep => “”, # 8 dígitos :Estado => “”, # precisa ser válido, como ex. SP, RJ, etc. } }.
-
#url_retorno ⇒ Object
URL da sua aplicação para onde o Pagto.
Instance Method Summary collapse
-
#build_transacao ⇒ Object
Usado internamento pelo Inicia Transacao para gerar o XML que define a transacao sendo iniciada.
-
#consulta(id_transacao = "") ⇒ Object
Consulta os Dados de uma Transação que já foi Paga.
- #consultaPedido(id_transacao = "") ⇒ Object
- #endpoint_url(url) ⇒ Object
-
#inicia(transacao = nil) {|_self| ... } ⇒ Object
Inicia Transação.
-
#initialize(options = {}) {|_self| ... } ⇒ LwPagtoCerto
constructor
A new instance of LwPagtoCerto.
Constructor Details
#initialize(options = {}) {|_self| ... } ⇒ LwPagtoCerto
Returns a new instance of LwPagtoCerto.
75 76 77 78 79 80 81 82 |
# File 'lib/lw-pagto-certo.rb', line 75 def initialize( = {}) self.chave_vendedor = [:chave_vendedor] || "" self.url_retorno = [:url_retorno] || "" %w(comprador pagamento pedido).each do |method| send("#{method}=".to_sym, {}) end yield(self) if block_given? end |
Instance Attribute Details
#chave_vendedor ⇒ Object
chave criada ao se cadastrar no Pagto. Certo
12 13 14 |
# File 'lib/lw-pagto-certo.rb', line 12 def chave_vendedor @chave_vendedor end |
#comprador ⇒ Object
Dados de comprador - Hash
:Nome => "", # 3 a 255
:Email => "", # 5 a 100
:Cpf => "", # 11
:Rg => "", # opcional 5 a 14
:Ddd => "", # opcional 2
:Telefone => "", # opcional 7 a 8
:TipoPessoa => "", # 6 a 8
:RazaoSocial => "", # 5 a 255
:Cnpj => "", # 1 a 50
27 28 29 |
# File 'lib/lw-pagto-certo.rb', line 27 def comprador @comprador end |
#pagamento ⇒ Object
Dados de pagamento - Hash {
:Modulo => "", # 6 a 13
:Tipo => "", # opcional 0 a 15
}
34 35 36 |
# File 'lib/lw-pagto-certo.rb', line 34 def pagamento @pagamento end |
#pedido ⇒ Object
Dados do Pedido - Hash {
:Numero => "", # seu número interno de controle do pedido
:ValorSubTotal => "000", # dinheiro = 999.88 = 99988
:ValorFrete => "000", # centavos são sempre os dois ultimos digitos
:ValorAcrescimo => "000",
:ValorDesconto => "000",
:ValorTotal => "000",
:Itens => {
:Item => {
:CodProduto => "", # 1 a 40
:DescProduto => "", # 1 a 100
:Quantidade => "0", #
:ValorUnitario => "000", # 3 a 14
:ValorTotal => "000", # 3 a 14
},
},
:Cobranca => {
:Endereco => "",
:Numero => "",
:Bairro => "",
:Cidade => "",
:Cep => "", # 8 dígitos
:Estado => "", # precisa ser válido, como ex. SP, RJ, etc.
},
:Entrega => {
:Endereco => "",
:Numero => "",
:Bairro => "",
:Cidade => "",
:Cep => "", # 8 dígitos
:Estado => "", # precisa ser válido, como ex. SP, RJ, etc.
}
}
70 71 72 |
# File 'lib/lw-pagto-certo.rb', line 70 def pedido @pedido end |
#url_retorno ⇒ Object
URL da sua aplicação para onde o Pagto. Certo redirecionará após o pagto.
13 14 15 |
# File 'lib/lw-pagto-certo.rb', line 13 def url_retorno @url_retorno end |
Instance Method Details
#build_transacao ⇒ Object
Usado internamento pelo Inicia Transacao para gerar o XML que define a transacao sendo iniciada. Utilize os accessors comprador, pagamento e pedido conforme comentado no começo do arquivo
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/lw-pagto-certo.rb', line 158 def build_transacao result = "" xml = Builder::XmlMarkup.new(:indent => 2, :target => result) xml.instruct! xml.LocaWeb do |lw| lw.Comprador do |c| %w(Nome Email Cpf Rg Ddd Telefone TipoPessoa RazaoSocial Cnpj).each do |field| eval "c.#{field} comprador[field.to_sym]" if comprador[field.to_sym] end end lw.Pagamento do |p| %w(Modulo Tipo).each do |field| eval "p.#{field} pagamento[field.to_sym]" if pagamento[field.to_sym] end end lw.Pedido do |p| %w(Numero ValorSubTotal ValorFrete ValorAcrescimo ValorDesconto ValorTotal).each do |field| eval "p.#{field} pedido[field.to_sym]" if pedido[field.to_sym] end if pedido[:Itens] p.Itens do |items| pedido[:Itens].each do |key, item| items.Item do %w(CodProduto DescProduto Quantidade ValorUnitario ValorTotal).each do |field| eval "items.#{field} item[field.to_sym]" if item[field.to_sym] end end end end end if pedido[:Cobranca] p.Cobranca do |c| %w(Endereco Numero Bairro Cidade Cep Estado).each do |field| eval "c.#{field} pedido[:Cobranca][field.to_sym]" if pedido[:Cobranca][field.to_sym] end end end if pedido[:Entrega] p.Entrega do |c| %w(Endereco Numero Bairro Cidade Cep Estado).each do |field| eval "c.#{field} pedido[:Cobranca][field.to_sym]" if pedido[:Entrega][field.to_sym] end end end end end result end |
#consulta(id_transacao = "") ⇒ Object
Consulta os Dados de uma Transação que já foi Paga
lw = LwPagtoCerto.new(:chave_vendedor => “xxxxx”, :url_retorno => “dominio.com/pagto”) retorno = lw.consulta(“xxxxxxxx”) # passa Id da transação retornada ao chamar “inicia”
puts retorno puts retorno puts retorno puts retorno # => “26/3/2009 15:19:41” puts retorno
131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/lw-pagto-certo.rb', line 131 def consulta(id_transacao = "") payload = ConsultaTransacao.new self.chave_vendedor, id_transacao response = LwPagtoCerto.soap.consultaTransacao(payload) response = Hash.from_xml(response.consultaTransacaoResult) response = response["loca_web"]["transacao"].symbolize_keys if response[:CodRetorno] response.instance_eval do def cod_retorno_mensagem LwPagtoCerto::FINALIZA_COD_RETORNO[self[:CodRetorno].to_sym] end end end response end |
#consultaPedido(id_transacao = "") ⇒ Object
146 147 148 149 150 151 152 |
# File 'lib/lw-pagto-certo.rb', line 146 def consultaPedido(id_transacao = "") payload = ConsultaTransacao.new self.chave_vendedor, id_transacao response = LwPagtoCerto.soap.consultaTransacao(payload) response = Hash.from_xml(response.consultaTransacaoResult) return response["loca_web"]["pedido"].symbolize_keys if response["loca_web"]["pedido"] return [] end |
#endpoint_url(url) ⇒ Object
207 208 209 |
# File 'lib/lw-pagto-certo.rb', line 207 def endpoint_url(url) soap.endpoint_url = url end |
#inicia(transacao = nil) {|_self| ... } ⇒ Object
Inicia Transação
Passa a estrutura Hash com os elementos de Transação documentadas acima ou pega a configuração feita via “setters”
Exemplo:
lw = LwPagtoCerto.new(:chave_vendedor => “xxxxx”, :url_retorno => “dominio.com/pagto”) lw.comprador = { :Nome => “Fabio”, :Email => “[email protected]”, .….} lw.pagamento = { :Modulo => LwPagtoCerto::Modulo::BOLETO } … retorno = lw.inicia do |l|
l.cobranca = { :Endereco => "", :Numero => "", ..... }
end
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/lw-pagto-certo.rb', line 101 def inicia(transacao = nil) transacao = transacao || build_transacao yield(self) if block_given? payload = IniciaTransacao.new( self.chave_vendedor, self.url_retorno, transacao ) response = LwPagtoCerto.soap.iniciaTransacao(payload) response = Hash.from_xml(response.iniciaTransacaoResult) response = response["loca_web"]["transacao"].symbolize_keys response[:data] = Time.parse(response[:data].gsub(/(\d+)\/(\d+)\/(\d+)\s(.*)/, "#{$3}-#{$2}-#{$1}T#{$4}")) if response[:data] if response[:CodRetorno] response.instance_eval do def cod_retorno_mensagem LwPagtoCerto::INICIA_COD_RETORNO[self[:CodRetorno].to_sym] end end end response end |