Class: AprovaFacil::CartaoCredito

Inherits:
Object
  • Object
show all
Defined in:
lib/aprova_facil/cartao_credito.rb

Defined Under Namespace

Modules: Bandeira

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CartaoCredito

Returns a new instance of CartaoCredito.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/aprova_facil/cartao_credito.rb', line 23

def initialize(options={})
  @documento                    = options[:documento]
  @valor                        = options[:valor]
  @parcelas                     = options[:parcelas] || 1
  @numero_cartao                = options[:numero_cartao]
  @codigo_seguranca             = options[:codigo_seguranca]
  @mes_validade                 = options[:mes_validade]
  @ano_validade                 = options[:ano_validade]
  @pre_autorizacao              = options[:pre_autorizacao] || false
  @ip_comprador                 = options[:ip_comprador]
  @nome_portador                = options[:nome_portador]
  @bandeira                     = options[:bandeira]
  @cpf_portador                 = options[:cpf_portador]
  @data_nascimento              = options[:data_nascimento]
  @nome_mae                     = options[:nome_mae]
  @parcelamento_administradora  = options[:parcelamento_administradora] || true
  @transacao_anterior           = options[:transacao_anterior]
  
  @errors = []
end

Instance Attribute Details

#ano_validadeObject

Returns the value of attribute ano_validade.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def ano_validade
  @ano_validade
end

#bandeiraObject

Returns the value of attribute bandeira.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def bandeira
  @bandeira
end

#codigo_segurancaObject

Returns the value of attribute codigo_seguranca.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def codigo_seguranca
  @codigo_seguranca
end

#cpf_portadorObject

Returns the value of attribute cpf_portador.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def cpf_portador
  @cpf_portador
end

#data_nascimentoObject

Returns the value of attribute data_nascimento.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def data_nascimento
  @data_nascimento
end

#documentoObject

Returns the value of attribute documento.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def documento
  @documento
end

#errorsObject

Returns the value of attribute errors.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def errors
  @errors
end

#ip_compradorObject

Returns the value of attribute ip_comprador.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def ip_comprador
  @ip_comprador
end

#mes_validadeObject

Returns the value of attribute mes_validade.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def mes_validade
  @mes_validade
end

#nome_maeObject

Returns the value of attribute nome_mae.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def nome_mae
  @nome_mae
end

#nome_portadorObject

Returns the value of attribute nome_portador.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def nome_portador
  @nome_portador
end

#numero_cartaoObject

Returns the value of attribute numero_cartao.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def numero_cartao
  @numero_cartao
end

#parcelamento_administradoraObject

Returns the value of attribute parcelamento_administradora.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def parcelamento_administradora
  @parcelamento_administradora
end

#parcelasObject

Returns the value of attribute parcelas.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def parcelas
  @parcelas
end

#pre_autorizacaoObject

Returns the value of attribute pre_autorizacao.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def pre_autorizacao
  @pre_autorizacao
end

#valorObject

Returns the value of attribute valor.



18
19
20
# File 'lib/aprova_facil/cartao_credito.rb', line 18

def valor
  @valor
end

Instance Method Details

#to_paramsObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/aprova_facil/cartao_credito.rb', line 81

def to_params
  params = {}
  params['NumeroDocumento']              = documento if self.documento
  params['ValorDocumento']               = valor
  params['QuantidadeParcelas']           = '%02d' % parcelas 
  params['NumeroCartao']                 = numero_cartao
  params['MesValidade']                  = '%02d' % mes_validade.to_i
  params['AnoValidade']                  = '%02d' % ano_validade
  params['CodigoSeguranca']              = codigo_seguranca
  params['PreAutorizacao']               = pre_autorizacao ? 'S' : 'N'
  params['EnderecoIPComprado']           = ip_comprador
  params['NomePortadorCarta']            = nome_portador if nome_portador
  params['Bandeira']                     = bandeira if bandeira
  params['CPFPortadorCartao']            = cpf_portador.gsub /\D/, '' if cpf_portador
  params['DataNascimentoPortadorCartao'] = data_nascimento.strftime('%Y%m%d') if data_nascimento and data_nascimento.kind_of?(Date)
  params['NomeMaePortadorCarta']         = nome_mae if nome_mae
  params['ParcelamentoAdministrador']    = parcelamento_administradora ? 'S' : 'N'

  params    
end

#valid?Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/aprova_facil/cartao_credito.rb', line 44

def valid?
  errors.clear
  errors << {:valor => 'deve ser informado'} if valor.nil? or !valor.kind_of?(Float)
  
  if parcelas.nil? or (parcelas.kind_of?(Integer) and parcelas == 0)
    errors << {:parcelas => 'deve ser informado'} 
  end
  
  errors << {:numero_cartao => 'deve ser informado'} if numero_cartao.nil? or numero_cartao.empty?
  
  if mes_validade.nil? or mes_validade.empty?        
    errors << {:mes_validade => 'deve ser informado'} 
  elsif mes_validade.size != 2 or mes_validade.match(/\D/)
    errors << {:mes_validade => 'deve ser informado'} 
  end
  
  if ano_validade.nil? or ano_validade.empty?        
    errors << {:ano_validade => 'deve ser informado'} 
  elsif ano_validade.size != 2 or ano_validade.match(/\D/)
    errors << {:ano_validade => 'deve ter 2 dígitos numéricos'} 
  end        
  
  if codigo_seguranca.nil? or codigo_seguranca.empty?        
    errors << {:codigo_seguranca => 'deve ser informado'} 
  elsif codigo_seguranca.match(/\D/)
    errors << {:codigo_seguranca => 'deve até apenas dígitos numéricos'} 
  end        
  
  if ip_comprador.nil? or ip_comprador.empty?
    errors << {:ip_comprador => 'deve ser informado'}
  elsif !ip_comprador.match(/\d+\.\d+\.\d+\.\d+/)
    errors << {:ip_comprador => 'Dese Tem que ser no formato 000.000.000.000'} 
  end        
  
  errors.size == 0
end