Class: Cieloz::RequisicaoTransacao

Inherits:
Requisicao show all
Defined in:
lib/cieloz/requisicao_transacao.rb,
lib/cieloz/requisicao_transacao/dados_avs.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: DadosAvs, 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=, #dasherize_attr, 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_avsObject (readonly)

Returns the value of attribute dados_avs.



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

def dados_avs
  @dados_avs
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

#gerar_tokenObject

Returns the value of attribute gerar_token.



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

def gerar_token
  @gerar_token
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



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

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

  url ||= Cieloz::Configuracao.url_retorno
  gerar ||= false

  txn = new source: source, opts: opts, dados_portador: portador,
    dados_pedido: pedido, forma_pagamento: pagamento, dados_avs: avs,
    campo_livre: campo_livre, url_retorno: url, gerar_token: gerar,
    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



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/cieloz/requisicao_transacao.rb', line 148

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?),
    gerar_token:      @gerar_token,
    dados_avs:        @dados_avs
  }
end

#autorizacao_diretaObject



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

def autorizacao_direta
  @autorizar = AUTORIZACAO_DIRETA
  self
end

#autorizacao_direta?Boolean

Returns:

  • (Boolean)


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

def autorizacao_direta?
  @autorizar == AUTORIZACAO_DIRETA
end

#autorizar_nao_autenticadaObject



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

def autorizar_nao_autenticada
  @autorizar = AUTORIZAR_NAO_AUTENTICADA
  self
end

#autorizar_somente_autenticadaObject



102
103
104
105
# File 'lib/cieloz/requisicao_transacao.rb', line 102

def autorizar_somente_autenticada
  @autorizar = AUTORIZAR_SE_AUTENTICADA
  self
end

#capturar_automaticamenteObject



126
127
128
129
# File 'lib/cieloz/requisicao_transacao.rb', line 126

def capturar_automaticamente
  @capturar = "true"
  self
end

#nao_capturar?Boolean

Returns:

  • (Boolean)


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

def nao_capturar?
  add_error :dados_avs, :no_capture_with_avs if @capturar == 'true'
end

#nao_capturar_automaticamenteObject



131
132
133
134
# File 'lib/cieloz/requisicao_transacao.rb', line 131

def nao_capturar_automaticamente
  @capturar = "false"
  self
end

#nested_validationsObject



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/cieloz/requisicao_transacao.rb', line 74

def nested_validations
  nested_attrs = [ :dados_ec, :dados_pedido, :forma_pagamento, :dados_avs ]
  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)


86
87
88
89
90
91
# File 'lib/cieloz/requisicao_transacao.rb', line 86

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



121
122
123
124
# File 'lib/cieloz/requisicao_transacao.rb', line 121

def recorrente
  @autorizar = RECORRENTE
  self
end

#somente_autenticarObject



97
98
99
100
# File 'lib/cieloz/requisicao_transacao.rb', line 97

def somente_autenticar
  @autorizar = SOMENTE_AUTENTICAR
  self
end

#suporta_autenticacao?Boolean

Returns:

  • (Boolean)


142
143
144
145
146
# File 'lib/cieloz/requisicao_transacao.rb', line 142

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)


136
137
138
139
140
# File 'lib/cieloz/requisicao_transacao.rb', line 136

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