lib/cieloz/requisicao_transacao.rb in cieloz-0.0.19 vs lib/cieloz/requisicao_transacao.rb in cieloz-0.0.20
- old
+ new
@@ -3,14 +3,14 @@
AUTORIZAR_SE_AUTENTICADA = 1
AUTORIZAR_NAO_AUTENTICADA = 2
AUTORIZACAO_DIRETA = 3
RECORRENTE = 4
- hattr_writer :dados_portador, :dados_pedido, :forma_pagamento
- attr_reader :dados_portador, :dados_pedido, :forma_pagamento
+ hattr_writer :dados_portador, :dados_pedido, :forma_pagamento, :dados_avs
+ attr_reader :dados_portador, :dados_pedido, :forma_pagamento, :dados_avs
attr_reader :autorizar, :capturar
- attr_accessor :campo_livre, :url_retorno
+ attr_accessor :campo_livre, :url_retorno, :gerar_token
validate :nested_validations
with_options if: "Cieloz::Configuracao.store_mode?" do |c|
c.validates :dados_portador, presence: true
@@ -25,10 +25,13 @@
end
validate :parcela_minima?,
if: "not @dados_pedido.nil? and not @forma_pagamento.nil?"
+ validate :nao_capturar?,
+ if: "not @dados_avs.nil?"
+
validates :autorizar, inclusion: {
in: [
SOMENTE_AUTENTICAR, AUTORIZAR_SE_AUTENTICADA,
AUTORIZAR_NAO_AUTENTICADA, AUTORIZACAO_DIRETA, RECORRENTE
]
@@ -42,19 +45,20 @@
end
validates :campo_livre, length: { maximum: 128 }
def self.map(source, opts={})
- portador, pedido, pagamento, url, capturar, campo_livre =
+ portador, pedido, pagamento, avs, url, capturar, campo_livre, gerar =
attrs_from source, opts, :dados_portador, :dados_pedido,
- :forma_pagamento, :url_retorno, :capturar, :campo_livre
+ :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,
- campo_livre: campo_livre, url_retorno: url,
+ 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
@@ -66,11 +70,11 @@
txn
end
def nested_validations
- nested_attrs = [ :dados_ec, :dados_pedido, :forma_pagamento ]
+ 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?
@@ -84,10 +88,14 @@
if parcelas > 0 and valor / parcelas < 500
@dados_pedido.add_error :valor, :minimum_installment_not_satisfied
end
end
+ def nao_capturar?
+ add_error :dados_avs, :no_capture_with_avs if @capturar == 'true'
+ end
+
def somente_autenticar
@autorizar = SOMENTE_AUTENTICAR
self
end
@@ -145,10 +153,12 @@
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?)
+ bin: (@dados_portador.numero.to_s[0..5] unless @dados_portador.nil?),
+ gerar_token: @gerar_token,
+ dados_avs: @dados_avs
}
end
private
def valida_digitos_numero_cartao