cieloz 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a01af493ef899c0c0c0cdf065bf203186b4d24c2
4
- data.tar.gz: aeab74a28b3e300a9f4cd1ab1c2f98420db99b0a
3
+ metadata.gz: 77964f0f33904c8eb3964429c696916c43da5a91
4
+ data.tar.gz: 6f65d196587d27f886c781c0a049b1290c65b601
5
5
  SHA512:
6
- metadata.gz: 249a1f443dbd199b335c007de8fcbcba983ebdb30a96cce056e1e224c15830bcdd5500baa1547ad44814b62f4bffd53408796f87a1fcbd405169a2d3771ce597
7
- data.tar.gz: 9a0a1fb4cae3d385f161080d70017c161f7be5a5d7eb4bf123e2715993efbbddb1b050d254ba4e0e33c322ee7f99f7f075579e34878e4d200388759a449ca031
6
+ metadata.gz: 2cbc6e83a74d127cfe2c46bfdd570d0feb60eca2f6f9a9b2a423316988217725c36a98029e6974281151842eacd682d5ce4a0b6f55a68f3ab0130557d66ee9b5
7
+ data.tar.gz: 75b0c51b42376501a1d7e255ee266f35a55bc493729c40a6f910cfb38b38d8eb2e2937491f6e2fe6aef3ab1c51efb5497eb3003bf6e753aafc752dfeb926f18d
@@ -10,6 +10,8 @@ en:
10
10
  direct_auth_available_for_credit_only: Direct auth available for credit only
11
11
  capturar:
12
12
  inclusion: should be true or false
13
+ dados_avs:
14
+ no_capture_with_avs: Automatic capture is not permitted with AVS
13
15
  cieloz/requisicao_transacao/dados_portador:
14
16
  attributes:
15
17
  numero:
@@ -29,4 +31,3 @@ en:
29
31
  bandeira:
30
32
  blank: choose credit card flag
31
33
  inclusion: choose credit card flag
32
-
@@ -10,6 +10,8 @@ pt-BR:
10
10
  direct_auth_available_for_credit_only: Autorização Direta disponível apenas em operações de crédito
11
11
  capturar:
12
12
  inclusion: deveria ser true ou false
13
+ dados_avs:
14
+ no_capture_with_avs: Captura automática não é permitida em conjunto com AVS
13
15
  cieloz/requisicao_transacao/dados_portador:
14
16
  attributes:
15
17
  numero:
@@ -29,4 +31,3 @@ pt-BR:
29
31
  bandeira:
30
32
  blank: escolha a bandeira
31
33
  inclusion: escolha a bandeira
32
-
@@ -20,6 +20,10 @@ module Cieloz
20
20
  RequisicaoTransacao::FormaPagamento.map_parcelado source, opts
21
21
  end
22
22
 
23
+ def avs source, opts={}
24
+ RequisicaoTransacao::DadosAvs.map source, opts
25
+ end
26
+
23
27
  def transacao source, opts={}
24
28
  RequisicaoTransacao.map source, opts
25
29
  end
@@ -80,5 +80,10 @@ module Cieloz
80
80
  send(m, v) if respond_to? m
81
81
  }
82
82
  end
83
+
84
+ def dasherize_attr value
85
+ value.to_s.gsub("@", "").dasherize
86
+ end
87
+
83
88
  end
84
89
  end
@@ -19,14 +19,16 @@ class Cieloz::Requisicao
19
19
  attributes.each { |attr, value|
20
20
  next if value.nil?
21
21
 
22
- unless value.respond_to? :attributes
23
- x.tag! dash(attr), value
24
- else
25
- x.tag! dash(attr) do
22
+ if value.respond_to? :build_xml
23
+ value.build_xml x
24
+ elsif value.respond_to? :attributes
25
+ x.tag! dasherize_attr(attr) do
26
26
  value.attributes.each do |attr, value|
27
- x.tag!(dash(attr), value) unless value.blank?
27
+ x.tag!(dasherize_attr(attr), value) unless value.blank?
28
28
  end
29
29
  end
30
+ else
31
+ x.tag! dasherize_attr(attr), value
30
32
  end
31
33
  }
32
34
  end
@@ -37,7 +39,7 @@ class Cieloz::Requisicao
37
39
 
38
40
  if valid?
39
41
  @id = SecureRandom.uuid if id.blank?
40
- @versao = "1.2.0" if versao.blank?
42
+ @versao = "1.2.1" if versao.blank?
41
43
 
42
44
  http = Net::HTTP.new Cieloz::Configuracao.host, 443
43
45
  http.use_ssl = true
@@ -69,9 +71,4 @@ class Cieloz::Requisicao
69
71
  doc.to_xml
70
72
  end
71
73
  end
72
-
73
- private
74
- def dash value
75
- value.to_s.gsub("@", "").dasherize
76
- end
77
74
  end
@@ -0,0 +1,51 @@
1
+ class Cieloz::RequisicaoTransacao
2
+ class DadosAvs
3
+ CONFERE = 'C'
4
+ NAO_CONFERE = 'N'
5
+ INDISPONIVEL = 'I'
6
+ TEMPORARIAMENTE_INDISPONIVEL = 'T'
7
+ NAO_SUPORTADO = 'X'
8
+
9
+ include Cieloz::Helpers
10
+
11
+ attr_accessor :cep, :endereco, :complemento, :numero, :bairro
12
+
13
+ validates :cep, presence: true, format: { with: /\A(\d{5}-\d{3})\z/ }
14
+
15
+ def self.map(source, opts={})
16
+ cep, endereco, complemento, numero, bairro = attrs_from source, opts,
17
+ :cep, :endereco, :complemento, :numero, :bairro
18
+
19
+ new source: source, opts: opts,
20
+ cep: cep, endereco: endereco, complemento: complemento, numero: numero, bairro: bairro
21
+ end
22
+
23
+ def attributes
24
+ {
25
+ endereco: @endereco,
26
+ complemento: @complemento,
27
+ numero: @numero,
28
+ bairro: @bairro,
29
+ cep: @cep
30
+ }
31
+ end
32
+
33
+ def build_xml builder
34
+ builder.tag! 'avs' do
35
+ builder.cdata! attr_to_xml
36
+ end
37
+ end
38
+
39
+ private
40
+ def attr_to_xml
41
+ x = Builder::XmlMarkup.new
42
+ @xml = x.tag! 'dados-avs' do
43
+ attributes.each do |attr, value|
44
+ next if value.nil?
45
+
46
+ x.tag! dasherize_attr(attr), value
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -5,10 +5,10 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
5
5
  AUTORIZACAO_DIRETA = 3
6
6
  RECORRENTE = 4
7
7
 
8
- hattr_writer :dados_portador, :dados_pedido, :forma_pagamento
9
- attr_reader :dados_portador, :dados_pedido, :forma_pagamento
8
+ hattr_writer :dados_portador, :dados_pedido, :forma_pagamento, :dados_avs
9
+ attr_reader :dados_portador, :dados_pedido, :forma_pagamento, :dados_avs
10
10
  attr_reader :autorizar, :capturar
11
- attr_accessor :campo_livre, :url_retorno
11
+ attr_accessor :campo_livre, :url_retorno, :gerar_token
12
12
 
13
13
  validate :nested_validations
14
14
 
@@ -27,6 +27,9 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
27
27
  validate :parcela_minima?,
28
28
  if: "not @dados_pedido.nil? and not @forma_pagamento.nil?"
29
29
 
30
+ validate :nao_capturar?,
31
+ if: "not @dados_avs.nil?"
32
+
30
33
  validates :autorizar, inclusion: {
31
34
  in: [
32
35
  SOMENTE_AUTENTICAR, AUTORIZAR_SE_AUTENTICADA,
@@ -44,15 +47,16 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
44
47
  validates :campo_livre, length: { maximum: 128 }
45
48
 
46
49
  def self.map(source, opts={})
47
- portador, pedido, pagamento, url, capturar, campo_livre =
50
+ portador, pedido, pagamento, avs, url, capturar, campo_livre, gerar =
48
51
  attrs_from source, opts, :dados_portador, :dados_pedido,
49
- :forma_pagamento, :url_retorno, :capturar, :campo_livre
52
+ :forma_pagamento, :dados_avs, :url_retorno, :capturar, :campo_livre, :gerar_token
50
53
 
51
54
  url ||= Cieloz::Configuracao.url_retorno
55
+ gerar ||= false
52
56
 
53
57
  txn = new source: source, opts: opts, dados_portador: portador,
54
- dados_pedido: pedido, forma_pagamento: pagamento,
55
- campo_livre: campo_livre, url_retorno: url,
58
+ dados_pedido: pedido, forma_pagamento: pagamento, dados_avs: avs,
59
+ campo_livre: campo_livre, url_retorno: url, gerar_token: gerar,
56
60
  dados_ec: Cieloz::Configuracao.credenciais
57
61
 
58
62
  capturar ||= Cieloz::Configuracao.captura_automatica
@@ -68,7 +72,7 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
68
72
  end
69
73
 
70
74
  def nested_validations
71
- nested_attrs = [ :dados_ec, :dados_pedido, :forma_pagamento ]
75
+ nested_attrs = [ :dados_ec, :dados_pedido, :forma_pagamento, :dados_avs ]
72
76
  nested_attrs << :dados_portador if Cieloz::Configuracao.store_mode?
73
77
 
74
78
  nested_attrs.each { |attr|
@@ -86,6 +90,10 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
86
90
  end
87
91
  end
88
92
 
93
+ def nao_capturar?
94
+ add_error :dados_avs, :no_capture_with_avs if @capturar == 'true'
95
+ end
96
+
89
97
  def somente_autenticar
90
98
  @autorizar = SOMENTE_AUTENTICAR
91
99
  self
@@ -147,7 +155,9 @@ class Cieloz::RequisicaoTransacao < Cieloz::Requisicao
147
155
  autorizar: @autorizar,
148
156
  capturar: @capturar,
149
157
  campo_livre: @campo_livre,
150
- bin: (@dados_portador.numero.to_s[0..5] unless @dados_portador.nil?)
158
+ bin: (@dados_portador.numero.to_s[0..5] unless @dados_portador.nil?),
159
+ gerar_token: @gerar_token,
160
+ dados_avs: @dados_avs
151
161
  }
152
162
  end
153
163
 
@@ -1,3 +1,3 @@
1
1
  module Cieloz
2
- VERSION = "0.0.19"
2
+ VERSION = "0.0.20"
3
3
  end
data/lib/cieloz.rb CHANGED
@@ -18,6 +18,7 @@ require "cieloz/requisicao/resposta/transacao"
18
18
  require "cieloz/requisicao_transacao"
19
19
  require "cieloz/requisicao_transacao/dados_portador"
20
20
  require "cieloz/requisicao_transacao/dados_pedido"
21
+ require "cieloz/requisicao_transacao/dados_avs"
21
22
  require "cieloz/requisicao_transacao/forma_pagamento"
22
23
  require "cieloz/requisicao_tid"
23
24
 
@@ -12,6 +12,9 @@ describe Cieloz::RequisicaoTransacao do
12
12
  data_hora: now, descricao: "teste", idioma: "PT", soft_descriptor: "13letterstest"
13
13
  }
14
14
  let(:pagamento) { _::FormaPagamento.new.credito "visa" }
15
+ let(:avs) {
16
+ _::DadosAvs.new cep: '12345-123', endereco: 'Rua Lala', complemento: 'Casa', numero: '123', bairro: 'Brooklyn'
17
+ }
15
18
 
16
19
  it "serializes dados-ec" do
17
20
  subject.submit # @dados_ec is set on submission
@@ -33,6 +36,11 @@ describe Cieloz::RequisicaoTransacao do
33
36
  assert_equal expected_xml(opts) { xml_for :pagamento, dir, binding }, subject.to_xml
34
37
  end
35
38
 
39
+ it "serializes dados-avs" do
40
+ subject.dados_avs = avs
41
+ assert_equal expected_xml(opts) { xml_for :avs, dir, binding }, subject.to_xml
42
+ end
43
+
36
44
  it "serializes simple attributes" do
37
45
  subject.url_retorno = "http://callback.acti.on"
38
46
  subject.autorizacao_direta
@@ -41,6 +49,13 @@ describe Cieloz::RequisicaoTransacao do
41
49
  assert_equal expected_xml(opts) { xml_for :simple_attrs, dir, binding }, subject.to_xml
42
50
  end
43
51
 
52
+ it "doesn't permit automatic capture with AVS" do
53
+ subject.dados_avs = avs
54
+ subject.capturar_automaticamente
55
+ assert !subject.valid?
56
+ assert_equal 'Automatic capture is not permitted with AVS', subject.errors[:dados_avs].first
57
+ end
58
+
44
59
  describe "request posting" do
45
60
  let(:status_txn) { "0" }
46
61
  let(:id) { "1001734898090FD31001" }
@@ -246,6 +246,29 @@ describe Cieloz::RequisicaoTransacao::FormaPagamento do
246
246
  end
247
247
  end
248
248
 
249
+ describe Cieloz::RequisicaoTransacao::DadosAvs do
250
+ it { must_validate_presence_of :cep }
251
+
252
+ it 'validates format of cep' do
253
+ subject.cep = '12345-123'
254
+ assert subject.valid?
255
+
256
+ subject.cep = '12345123'
257
+ refute subject.valid?
258
+ assert_equal [I18n.t('errors.messages.invalid')], subject.errors[:cep]
259
+
260
+ subject.cep = '12345-abc'
261
+ refute subject.valid?
262
+ assert_equal [I18n.t('errors.messages.invalid')], subject.errors[:cep]
263
+ end
264
+
265
+ it "is validated inside RequisicaoTransacao" do
266
+ txn = Cieloz::RequisicaoTransacao.new dados_avs: subject
267
+ refute txn.valid?
268
+ refute txn.errors[:dados_avs].empty?
269
+ end
270
+ end
271
+
249
272
  describe Cieloz::RequisicaoTransacao do
250
273
  let(:_) { subject.class }
251
274
 
@@ -0,0 +1,11 @@
1
+ <avs>
2
+ <![CDATA[
3
+ <dados-avs>
4
+ <endereco><%= avs.endereco %></endereco>
5
+ <complemento><%= avs.complemento %></complemento>
6
+ <numero><%= avs.numero %></numero>
7
+ <bairro><%= avs.bairro %></bairro>
8
+ <cep><%= avs.cep %></cep>
9
+ </dados-avs>
10
+ ]]>
11
+ </avs>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cieloz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fábio Luiz Nery de Miranda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -150,6 +150,7 @@ files:
150
150
  - lib/cieloz/requisicao/resposta/transacao.rb
151
151
  - lib/cieloz/requisicao_tid.rb
152
152
  - lib/cieloz/requisicao_transacao.rb
153
+ - lib/cieloz/requisicao_transacao/dados_avs.rb
153
154
  - lib/cieloz/requisicao_transacao/dados_pedido.rb
154
155
  - lib/cieloz/requisicao_transacao/dados_portador.rb
155
156
  - lib/cieloz/requisicao_transacao/forma_pagamento.rb
@@ -181,6 +182,7 @@ files:
181
182
  - test/unit/requisicao_test.rb
182
183
  - test/unit/requisicao_transacao_test.rb
183
184
  - test/unit/validations_test.rb
185
+ - test/unit/xml/dados-avs.xml
184
186
  - test/unit/xml/dados-ec.xml
185
187
  - test/unit/xml/dados-pagamento.xml
186
188
  - test/unit/xml/dados-pedido.xml
@@ -227,6 +229,7 @@ test_files:
227
229
  - test/unit/requisicao_test.rb
228
230
  - test/unit/requisicao_transacao_test.rb
229
231
  - test/unit/validations_test.rb
232
+ - test/unit/xml/dados-avs.xml
230
233
  - test/unit/xml/dados-ec.xml
231
234
  - test/unit/xml/dados-pagamento.xml
232
235
  - test/unit/xml/dados-pedido.xml