Class: Cieloz::RequisicaoTransacao

Inherits:
Requisicao show all
Defined in:
lib/cieloz/requisicao_transacao.rb,
lib/cieloz/requisicao_transacao/dados_pedido.rb,
lib/cieloz/requisicao_transacao/dados_portador.rb,
lib/cieloz/requisicao_transacao/forma_pagamento.rb

Defined Under Namespace

Classes: DadosPedido, DadosPortador, FormaPagamento

Constant Summary collapse

SOMENTE_AUTENTICAR =
0
AUTORIZAR_SE_AUTENTICADA =
1
AUTORIZAR_NAO_AUTENTICADA =
2
AUTORIZACAO_DIRETA =
3
RECORRENTE =
4

Instance Attribute Summary collapse

Attributes inherited from Requisicao

#dados_ec, #id, #versao

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Requisicao

#parse, #requested_xml, #submit, #to_xml

Methods included from Helpers

#attributes=, included, #initialize

Instance Attribute Details

#autorizarObject (readonly)

Returns the value of attribute autorizar.



10
11
12
# File 'lib/cieloz/requisicao_transacao.rb', line 10

def autorizar
  @autorizar
end

#campo_livreObject

Returns the value of attribute campo_livre.



11
12
13
# File 'lib/cieloz/requisicao_transacao.rb', line 11

def campo_livre
  @campo_livre
end

#capturarObject (readonly)

Returns the value of attribute capturar.



10
11
12
# File 'lib/cieloz/requisicao_transacao.rb', line 10

def capturar
  @capturar
end

#dados_pedidoObject (readonly)

Returns the value of attribute dados_pedido.



9
10
11
# File 'lib/cieloz/requisicao_transacao.rb', line 9

def dados_pedido
  @dados_pedido
end

#dados_portadorObject (readonly)

Returns the value of attribute dados_portador.



9
10
11
# File 'lib/cieloz/requisicao_transacao.rb', line 9

def dados_portador
  @dados_portador
end

#forma_pagamentoObject (readonly)

Returns the value of attribute forma_pagamento.



9
10
11
# File 'lib/cieloz/requisicao_transacao.rb', line 9

def forma_pagamento
  @forma_pagamento
end

#url_retornoObject

Returns the value of attribute url_retorno.



11
12
13
# File 'lib/cieloz/requisicao_transacao.rb', line 11

def url_retorno
  @url_retorno
end

Class Method Details

.map(source, opts = {}) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/cieloz/requisicao_transacao.rb', line 46

def self.map(source, opts={})
  portador, pedido, pagamento, url, capturar, campo_livre =
    attrs_from source, opts, :dados_portador, :dados_pedido,
    :forma_pagamento, :url_retorno, :capturar, :campo_livre

  url ||= Cieloz::Configuracao.url_retorno

  txn = new source: source, opts: opts, dados_portador: portador,
    dados_pedido: pedido, forma_pagamento: pagamento,
    campo_livre: campo_livre, url_retorno: url,
    dados_ec: Cieloz::Configuracao.credenciais

  capturar ||= Cieloz::Configuracao.captura_automatica

  case capturar.to_s
  when 'true' then txn.capturar_automaticamente
  else        txn.nao_capturar_automaticamente
  end

  txn.send pagamento.metodo_autorizacao if pagamento

  txn
end

Instance Method Details

#attributesObject



140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/cieloz/requisicao_transacao.rb', line 140

def attributes
  {
    dados_ec:         @dados_ec,
    dados_portador:   @dados_portador,
    dados_pedido:     @dados_pedido,
    forma_pagamento:  @forma_pagamento,
    url_retorno:      @url_retorno,
    autorizar:        @autorizar,
    capturar:         @capturar,
    campo_livre:      @campo_livre,
    bin:              (@dados_portador.numero.to_s[0..5] unless @dados_portador.nil?)
  }
end

#autorizacao_diretaObject



104
105
106
107
# File 'lib/cieloz/requisicao_transacao.rb', line 104

def autorizacao_direta
  @autorizar = AUTORIZACAO_DIRETA
  self
end

#autorizacao_direta?Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/cieloz/requisicao_transacao.rb', line 109

def autorizacao_direta?
  @autorizar == AUTORIZACAO_DIRETA
end

#autorizar_nao_autenticadaObject



99
100
101
102
# File 'lib/cieloz/requisicao_transacao.rb', line 99

def autorizar_nao_autenticada
  @autorizar = AUTORIZAR_NAO_AUTENTICADA
  self
end

#autorizar_somente_autenticadaObject



94
95
96
97
# File 'lib/cieloz/requisicao_transacao.rb', line 94

def autorizar_somente_autenticada
  @autorizar = AUTORIZAR_SE_AUTENTICADA
  self
end

#capturar_automaticamenteObject



118
119
120
121
# File 'lib/cieloz/requisicao_transacao.rb', line 118

def capturar_automaticamente
  @capturar = "true"
  self
end

#nao_capturar_automaticamenteObject



123
124
125
126
# File 'lib/cieloz/requisicao_transacao.rb', line 123

def nao_capturar_automaticamente
  @capturar = "false"
  self
end

#nested_validationsObject



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/cieloz/requisicao_transacao.rb', line 70

def nested_validations
  nested_attrs = [ :dados_ec, :dados_pedido, :forma_pagamento ]
  nested_attrs << :dados_portador if Cieloz::Configuracao.store_mode?

  nested_attrs.each { |attr|
    attr_value = instance_variable_get "@#{attr}"
    if not attr_value.nil? and not attr_value.valid?
      errors.add attr, attr_value.errors
    end
  }
end

#parcela_minima?Boolean

Returns:

  • (Boolean)


82
83
84
85
86
87
# File 'lib/cieloz/requisicao_transacao.rb', line 82

def parcela_minima?
  valor, parcelas = @dados_pedido.valor.to_i, @forma_pagamento.parcelas.to_i
  if parcelas > 0 and valor / parcelas < 500
    @dados_pedido.add_error :valor, :minimum_installment_not_satisfied
  end
end

#recorrenteObject



113
114
115
116
# File 'lib/cieloz/requisicao_transacao.rb', line 113

def recorrente
  @autorizar = RECORRENTE
  self
end

#somente_autenticarObject



89
90
91
92
# File 'lib/cieloz/requisicao_transacao.rb', line 89

def somente_autenticar
  @autorizar = SOMENTE_AUTENTICAR
  self
end

#suporta_autenticacao?Boolean

Returns:

  • (Boolean)


134
135
136
137
138
# File 'lib/cieloz/requisicao_transacao.rb', line 134

def suporta_autenticacao?
  if not autorizacao_direta? and not @forma_pagamento.suporta_autenticacao?
    errors.add :autorizar, :authentication_not_supported
  end
end

#suporta_autorizacao_direta?Boolean

Returns:

  • (Boolean)


128
129
130
131
132
# File 'lib/cieloz/requisicao_transacao.rb', line 128

def suporta_autorizacao_direta?
  if autorizacao_direta? and @forma_pagamento.debito?
    errors.add :autorizar, :direct_auth_available_for_credit_only
  end
end