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