cieloz 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +170 -0
  5. data/Rakefile +16 -0
  6. data/cieloz.gemspec +34 -0
  7. data/config/locales/en.yml +11 -0
  8. data/config/locales/pt-BR.yml +11 -0
  9. data/lib/cieloz/bandeiras.rb +22 -0
  10. data/lib/cieloz/builder.rb +71 -0
  11. data/lib/cieloz/configuracao.rb +64 -0
  12. data/lib/cieloz/helpers.rb +35 -0
  13. data/lib/cieloz/homologacao.rb +16 -0
  14. data/lib/cieloz/requisicao/dados_ec.rb +14 -0
  15. data/lib/cieloz/requisicao/resposta/erro.rb +11 -0
  16. data/lib/cieloz/requisicao/resposta/transacao.rb +11 -0
  17. data/lib/cieloz/requisicao/resposta.rb +35 -0
  18. data/lib/cieloz/requisicao.rb +69 -0
  19. data/lib/cieloz/requisicao_tid.rb +23 -0
  20. data/lib/cieloz/requisicao_transacao/dados_pedido.rb +32 -0
  21. data/lib/cieloz/requisicao_transacao/dados_portador.rb +79 -0
  22. data/lib/cieloz/requisicao_transacao/forma_pagamento.rb +94 -0
  23. data/lib/cieloz/requisicao_transacao.rb +126 -0
  24. data/lib/cieloz/version.rb +3 -0
  25. data/lib/cieloz.rb +24 -0
  26. data/readme/cielo_developer_guide_2.0.3.pdf +0 -0
  27. data/readme/cielo_guia_seguranca_ecommerce.pdf +0 -0
  28. data/readme/cielo_payment_states.png +0 -0
  29. data/readme/contrato_de_afiliacao_ao_sistema_cielo.pdf +0 -0
  30. data/readme/credentials.png +0 -0
  31. data/readme/dicas_preventivas_para_vendas_mais_seguras.pdf +0 -0
  32. data/readme/email_cielo.pdf +0 -0
  33. data/readme/lista_de_documentos_necessarios_para_afiliacao_de_vendas_pela_internet_pessoa_juridica.pdf +0 -0
  34. data/readme/mastercard_securecodedemo.swf +0 -0
  35. data/readme/supported_products.png +0 -0
  36. data/readme/termo_de_adesao_de_risco.pdf +0 -0
  37. data/readme/verified_by_visa.png +0 -0
  38. data/test/integration/integration_test.rb +104 -0
  39. data/test/minitest_helper.rb +65 -0
  40. data/test/unit/bandeiras_operacoes_test.rb +25 -0
  41. data/test/unit/builder_test.rb +212 -0
  42. data/test/unit/configuracao_test.rb +85 -0
  43. data/test/unit/requisicao_autorizacao_tid_test.rb +19 -0
  44. data/test/unit/requisicao_cancelamento_test.rb +25 -0
  45. data/test/unit/requisicao_captura_test.rb +25 -0
  46. data/test/unit/requisicao_consulta_test.rb +19 -0
  47. data/test/unit/requisicao_test.rb +84 -0
  48. data/test/unit/requisicao_transacao_test.rb +82 -0
  49. data/test/unit/validations_test.rb +358 -0
  50. data/test/unit/xml/dados-ec.xml +4 -0
  51. data/test/unit/xml/dados-pagamento.xml +5 -0
  52. data/test/unit/xml/dados-pedido.xml +9 -0
  53. data/test/unit/xml/dados-portador.xml +7 -0
  54. data/test/unit/xml/dados-simple_attrs.xml +4 -0
  55. data/test/unit/xml/erro.xml +5 -0
  56. data/test/unit/xml/transacao.xml +19 -0
  57. metadata +280 -0
@@ -0,0 +1,358 @@
1
+ describe Cieloz::Requisicao::DadosEc do
2
+ it { must validate_presence_of :numero }
3
+ it { must validate_presence_of :chave }
4
+
5
+ it "is validated inside RequisicaoTransacao" do
6
+ txn = Cieloz::RequisicaoTransacao.new dados_ec: subject
7
+ refute txn.valid?
8
+ refute txn.errors[:dados_ec].empty?
9
+ end
10
+ end
11
+
12
+ describe Cieloz::RequisicaoTransacao::DadosPortador do
13
+ it { must ensure_length_of(:nome_portador).is_at_most(50) }
14
+
15
+ it { must validate_presence_of :numero }
16
+ it { must ensure_length_of(:numero).is_equal_to 16 }
17
+ it { must validate_numericality_of(:numero).only_integer }
18
+
19
+ it { must validate_presence_of :validade }
20
+ it { must ensure_length_of(:validade).is_equal_to 6 }
21
+ it { must validate_numericality_of(:validade).only_integer }
22
+
23
+ it { must ensure_length_of(:codigo_seguranca)
24
+ .is_at_least(3)
25
+ .is_at_most(4) }
26
+ it { must validate_numericality_of(:codigo_seguranca).only_integer }
27
+
28
+ def mm_values range
29
+ yyyy = 2013
30
+ range.map { |i| mm = '%02d' % (i % 100) ; "#{yyyy}#{mm}" }
31
+ end
32
+
33
+ it "validates validade as yyyymm" do
34
+ must allow_value(*mm_values(1..12)).for(:validade)
35
+
36
+ values = mm_values(13..100) << "199911"
37
+ wont allow_value(*values).for(:validade)
38
+ end
39
+
40
+ describe "indicador and codigo_seguranca validation" do
41
+ let(:_) { subject.class }
42
+ let(:code) { 123 }
43
+
44
+ before do
45
+ subject.instance_variable_set :@codigo_seguranca, code
46
+ refute_nil subject.codigo_seguranca
47
+ end
48
+
49
+ it "sets indicador nao informado" do
50
+ subject.indicador_nao_informado!
51
+ assert_equal _::INDICADOR_NAO_INFORMADO, subject.indicador
52
+ assert_nil subject.codigo_seguranca
53
+ end
54
+
55
+ it "sets indicador when codigo_seguranca is set" do
56
+ subject.codigo_seguranca = code
57
+ assert_equal _::INDICADOR_INFORMADO, subject.indicador
58
+ assert_equal code, subject.codigo_seguranca
59
+ end
60
+
61
+ it "sets indicador ilegivel" do
62
+ subject.indicador_ilegivel!
63
+ assert_equal _::INDICADOR_ILEGIVEL, subject.indicador
64
+ assert_nil subject.codigo_seguranca
65
+ end
66
+
67
+ it "sets indicador inexistente" do
68
+ subject.indicador_inexistente!
69
+ assert_equal _::INDICADOR_INEXISTENTE, subject.indicador
70
+ assert_nil subject.codigo_seguranca
71
+ end
72
+
73
+ it "defaults to NAO_INFORMADO" do
74
+ subject = _.new
75
+ assert_equal _::INDICADOR_NAO_INFORMADO, subject.indicador
76
+ assert_nil subject.codigo_seguranca
77
+ end
78
+ end
79
+
80
+ it "is validated inside RequisicaoTransacao" do
81
+ Cieloz::Configuracao.store_mode!
82
+ txn = Cieloz::RequisicaoTransacao.new dados_portador: subject
83
+ refute txn.valid?
84
+ refute txn.errors[:dados_portador].empty?
85
+ end
86
+ end
87
+
88
+ describe Cieloz::RequisicaoTransacao::DadosPedido do
89
+ it { must validate_presence_of :numero }
90
+ it { must ensure_length_of(:numero)
91
+ .is_at_least(1)
92
+ .is_at_most(20) }
93
+
94
+ it { must validate_presence_of :valor }
95
+ it { must validate_numericality_of(:valor).only_integer }
96
+ it { must ensure_length_of(:valor)
97
+ .is_at_least(1)
98
+ .is_at_most(12) }
99
+
100
+ it { must validate_presence_of :moeda }
101
+ it { must validate_presence_of :data_hora }
102
+
103
+ it { must ensure_length_of(:descricao).is_at_most(1024) }
104
+ it { must ensure_length_of(:soft_descriptor).is_at_most(13) }
105
+
106
+ it { must ensure_inclusion_of(:idioma).in_array(subject.class::IDIOMAS) }
107
+
108
+ it "is validated inside RequisicaoTransacao" do
109
+ txn = Cieloz::RequisicaoTransacao.new dados_pedido: subject
110
+ refute txn.valid?
111
+ refute txn.errors[:dados_pedido].empty?
112
+ end
113
+ end
114
+
115
+ describe Cieloz::RequisicaoTransacao::FormaPagamento do
116
+ let(:all_flags) { Cieloz::Bandeiras::ALL }
117
+
118
+ describe "debito validation" do
119
+ let(:supported_flags) { subject.class::BANDEIRAS_DEBITO }
120
+
121
+ it "validates bandeira is VISA or MASTERCARD" do
122
+ supported_flags.each { |flag|
123
+ subject.debito flag
124
+ must ensure_inclusion_of(:bandeira).in_array(supported_flags)
125
+ }
126
+ end
127
+
128
+ it "accepts payment for VISA and MASTERCARD" do
129
+ supported_flags.each { |flag|
130
+ subject.debito flag
131
+ assert_equal subject.class::DEBITO, subject.produto
132
+ assert_equal flag, subject.bandeira
133
+ assert_equal 1, subject.parcelas
134
+ }
135
+ end
136
+ end
137
+
138
+ it "validates bandeiras for credito" do
139
+ all_flags.each { |flag|
140
+ subject.credito flag
141
+ must ensure_inclusion_of(:bandeira).in_array(all_flags)
142
+ }
143
+ end
144
+
145
+ it "accepts payment for credito" do
146
+ all_flags.each { |flag|
147
+ subject.credito flag
148
+ assert_equal subject.class::CREDITO, subject.produto
149
+ assert_equal flag, subject.bandeira
150
+ assert_equal 1, subject.parcelas
151
+ }
152
+ end
153
+
154
+ describe "validates parcelamento" do
155
+ it "is not supported by DISCOVER" do
156
+ supported_flags = subject.class::BANDEIRAS_PARCELAMENTO
157
+
158
+ subject.parcelado Cieloz::Bandeiras::DISCOVER, 2
159
+ must ensure_inclusion_of(:bandeira).in_array(supported_flags)
160
+ end
161
+
162
+ let(:flag) { all_flags.first }
163
+ let(:max_parcelas) { Cieloz::Configuracao.max_parcelas }
164
+ let(:max_adm_parcelas) { Cieloz::Configuracao.max_adm_parcelas }
165
+
166
+ it "converts 1 installment to CREDITO" do
167
+ pg = subject.parcelado flag, 1
168
+ assert_equal subject.class::CREDITO, pg.produto
169
+ end
170
+
171
+ it "creates a PARCELADO_LOJA payment till max_parcelas" do
172
+ (2..max_parcelas).each do |n|
173
+ pg = subject.parcelado flag, n
174
+ assert_equal subject.class::PARCELADO_LOJA, pg.produto
175
+ assert_equal flag, pg.bandeira
176
+ assert_equal n, pg.parcelas
177
+ end
178
+ end
179
+
180
+ it "creates a PARCELADO_ADM payment between max_installments and max_adm_installments" do
181
+ (max_parcelas+1..max_adm_parcelas).each do |n|
182
+ pg = subject.parcelado flag, n
183
+ assert_equal subject.class::PARCELADO_ADM, pg.produto
184
+ assert_equal flag, pg.bandeira
185
+ assert_equal n, pg.parcelas
186
+ end
187
+ end
188
+
189
+ it "validates parcelas in range 1..max_adm_parcelas" do
190
+ (1..max_adm_parcelas).each {|i|
191
+ assert subject.parcelado(flag, i).valid?, subject.errors.messages
192
+ }
193
+ (-10..0).each { |i|
194
+ refute subject.parcelado(flag, i).valid?, subject.errors.messages
195
+ }
196
+ (max_adm_parcelas+1..max_adm_parcelas+3).each { |i|
197
+ refute subject.parcelado(flag, i).valid?, subject.errors.messages
198
+ }
199
+ # refute not integers parcelas
200
+ refute subject.parcelado(flag, 1.234).valid?
201
+ refute subject.parcelado(flag, "abc").valid?
202
+ end
203
+ end
204
+
205
+ it "is validated inside RequisicaoTransacao" do
206
+ txn = Cieloz::RequisicaoTransacao.new forma_pagamento: subject
207
+ refute txn.valid?
208
+ refute txn.errors[:forma_pagamento].empty?
209
+ end
210
+ end
211
+
212
+ describe Cieloz::Requisicao do
213
+ it { must validate_presence_of :id }
214
+ it { must validate_presence_of :versao }
215
+ it { must validate_presence_of :dados_ec }
216
+ end
217
+
218
+ describe Cieloz::RequisicaoTransacao do
219
+ let(:_) { subject.class }
220
+
221
+ it { must validate_presence_of :dados_ec }
222
+ it { must validate_presence_of :dados_pedido }
223
+ it { must validate_presence_of :forma_pagamento }
224
+
225
+ it "somente autenticar requires url_retorno" do
226
+ subject.somente_autenticar
227
+ must validate_presence_of :url_retorno
228
+ end
229
+
230
+ it "autorizar somente autenticada requires url_retorno" do
231
+ subject.autorizar_somente_autenticada
232
+ must validate_presence_of :url_retorno
233
+ end
234
+
235
+ it "autorizar nao autenticada requires url_retorno" do
236
+ subject.autorizar_nao_autenticada
237
+ must validate_presence_of :url_retorno
238
+ end
239
+
240
+ it "autorizacao direta doesnt require url_retorno" do
241
+ subject.autorizacao_direta
242
+ wont validate_presence_of :url_retorno
243
+ end
244
+
245
+ it { must ensure_length_of(:url_retorno).is_at_least(1).is_at_most(1024) }
246
+
247
+ it "doesnt validate url_retorno length for autorizacao direta" do
248
+ subject.autorizacao_direta
249
+ wont ensure_length_of(:url_retorno).is_at_least(1).is_at_most(1024)
250
+ end
251
+
252
+ it { must validate_presence_of :autorizar }
253
+ it {
254
+ must ensure_inclusion_of(:autorizar).in_array [
255
+ _::SOMENTE_AUTENTICAR, _::AUTORIZAR_SE_AUTENTICADA,
256
+ _::AUTORIZAR_NAO_AUTENTICADA, _::AUTORIZACAO_DIRETA, _::RECORRENTE
257
+ ]
258
+ }
259
+
260
+ it "doesnt support autorizacao_direta on debito operations" do
261
+ pg = subject.class::FormaPagamento.new
262
+ pg.debito Cieloz::Bandeiras::VISA
263
+ subject.forma_pagamento = pg
264
+
265
+ subject.autorizacao_direta
266
+
267
+ refute subject.valid?
268
+ assert_equal "Direct auth available for credit only", subject.errors[:autorizar].first
269
+ end
270
+
271
+ def refute_authentication_supported
272
+ refute subject.valid?
273
+ assert_equal "Authentication not supported", subject.errors[:autorizar].first
274
+ end
275
+
276
+ it "refute authentication support for DINERS, DISCOVER, ELO and AMEX" do
277
+ (Cieloz::Bandeiras::ALL - subject.class::FormaPagamento::SUPORTAM_AUTENTICACAO).each { |b|
278
+ pg = subject.class::FormaPagamento.new
279
+ pg.credito b
280
+ subject.forma_pagamento = pg
281
+
282
+ subject.somente_autenticar
283
+ refute_authentication_supported
284
+
285
+ subject.autorizar_somente_autenticada
286
+ refute_authentication_supported
287
+
288
+ subject.autorizar_nao_autenticada
289
+ refute_authentication_supported
290
+
291
+ subject.recorrente
292
+ refute_authentication_supported
293
+ }
294
+ end
295
+
296
+ it "has authentication support for VISA and MASTERCARD" do
297
+ subject.class::FormaPagamento::SUPORTAM_AUTENTICACAO.each { |b|
298
+ pg = subject.class::FormaPagamento.new
299
+ pg.credito b
300
+ subject.forma_pagamento = pg
301
+
302
+ subject.somente_autenticar
303
+ assert subject.errors[:autorizacao].empty?
304
+
305
+ subject.autorizar_somente_autenticada
306
+ assert subject.errors[:autorizacao].empty?
307
+
308
+ subject.autorizar_nao_autenticada
309
+ assert subject.errors[:autorizacao].empty?
310
+
311
+ subject.recorrente
312
+ assert subject.errors[:autorizacao].empty?
313
+ }
314
+ end
315
+
316
+ it { must validate_presence_of :capturar }
317
+ it { must ensure_inclusion_of(:capturar).in_array(["true", "false"]) }
318
+
319
+ it { must ensure_length_of(:campo_livre).is_at_most(128) }
320
+
321
+ it "extracts bin from DadosPortador" do
322
+ # no DadosPortador - bin should be nil
323
+ assert subject.attributes[:bin].nil?
324
+
325
+ p = subject.class::DadosPortador.new numero: 1234567887654321
326
+ subject.dados_portador = p
327
+ assert_equal "123456", subject.attributes[:bin]
328
+ end
329
+
330
+ it "validates dados portador on mode Buy Page Loja" do
331
+ Cieloz::Configuracao.store_mode!
332
+ must validate_presence_of :dados_portador
333
+ end
334
+
335
+ describe "Buy Page Cielo" do
336
+ it "wont validate dados portador if mode is nil" do
337
+ Cieloz::Configuracao.reset!
338
+ wont validate_presence_of :dados_portador
339
+ end
340
+
341
+ it "wont validate dados portador on hosted mode" do
342
+ Cieloz::Configuracao.cielo_mode!
343
+ wont validate_presence_of :dados_portador
344
+ end
345
+ end
346
+
347
+ it "validates parcela minima is R$ 5,00" do
348
+ subject.dados_pedido = subject.class::DadosPedido.new numero: 123,
349
+ valor: 1400, idioma: "PT", moeda: "986", data_hora: Time.now
350
+
351
+ subject.forma_pagamento = subject.class::FormaPagamento
352
+ .new.parcelado Cieloz::Bandeiras::VISA, 3
353
+
354
+ refute subject.valid?
355
+ msg = "Installment should be greater than or equal to R$ 5,00"
356
+ assert_equal msg, subject.errors[:forma_pagamento].first
357
+ end
358
+ end
@@ -0,0 +1,4 @@
1
+ <dados-ec>
2
+ <numero><%= ec.numero %></numero>
3
+ <chave><%= ec.chave %></chave>
4
+ </dados-ec>
@@ -0,0 +1,5 @@
1
+ <forma-pagamento>
2
+ <bandeira><%= pagamento.bandeira %></bandeira>
3
+ <produto><%= pagamento.produto %></produto>
4
+ <parcelas><%= pagamento.parcelas %></parcelas>
5
+ </forma-pagamento>
@@ -0,0 +1,9 @@
1
+ <dados-pedido>
2
+ <numero><%= pedido.numero %></numero>
3
+ <valor><%= pedido.valor %></valor>
4
+ <moeda><%= pedido.moeda %></moeda>
5
+ <data-hora><%= pedido.attributes[:data_hora] %></data-hora>
6
+ <descricao><%= pedido.descricao %></descricao>
7
+ <idioma><%= pedido.idioma %></idioma>
8
+ <soft-descriptor><%= pedido.soft_descriptor %></soft-descriptor>
9
+ </dados-pedido>
@@ -0,0 +1,7 @@
1
+ <dados-portador>
2
+ <numero><%= portador.numero %></numero>
3
+ <validade><%= portador.validade %></validade>
4
+ <indicador><%= portador.indicador %></indicador>
5
+ <codigo-seguranca><%= portador.codigo_seguranca %></codigo-seguranca>
6
+ </dados-portador>
7
+ <bin><%= portador.numero.to_s[0..5] %></bin>
@@ -0,0 +1,4 @@
1
+ <url-retorno><%= subject.url_retorno %></url-retorno>
2
+ <autorizar><%= subject.autorizar %></autorizar>
3
+ <capturar><%= subject.capturar %></capturar>
4
+ <campo-livre><%= subject.campo_livre %></campo-livre>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="ISO-8859-1"?>
2
+ <erro xmlns="http://ecommerce.cbmp.com.br">
3
+ <codigo><%= err %></codigo>
4
+ <mensagem><![CDATA[<%= msg %>]]></mensagem>
5
+ </erro>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="ISO-8859-1"?>
2
+ <transacao versao="1.2.0" id="468c1608-4ec7-4acd-b7ea-d7bf96e135f5" xmlns="http://ecommerce.cbmp.com.br">
3
+ <tid><%= tid %></tid>
4
+ <dados-pedido>
5
+ <numero><%= pedido.numero %></numero>
6
+ <valor><%= pedido.valor %></valor>
7
+ <moeda><%= pedido.moeda %></moeda>
8
+ <data-hora><%= pedido.data_hora %></data-hora>
9
+ <descricao><%= pedido.descricao %></descricao>
10
+ <idioma><%= pedido.idioma %></idioma>
11
+ </dados-pedido>
12
+ <forma-pagamento>
13
+ <bandeira><%= pagamento.bandeira %></bandeira>
14
+ <produto><%= pagamento.produto %></produto>
15
+ <parcelas><%= pagamento.parcelas %></parcelas>
16
+ </forma-pagamento>
17
+ <status><%= status_txn %></status>
18
+ <url-autenticacao><%= url_cielo %></url-autenticacao>
19
+ </transacao>
metadata ADDED
@@ -0,0 +1,280 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cieloz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Fábio Luiz Nery de Miranda
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activemodel
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: turn
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: fakeweb
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: debugger
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: bourne
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - '='
132
+ - !ruby/object:Gem::Version
133
+ version: 1.3.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - '='
140
+ - !ruby/object:Gem::Version
141
+ version: 1.3.0
142
+ - !ruby/object:Gem::Dependency
143
+ name: shoulda-matchers
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: minitest-matchers
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ description: A utility gem for Cielo Integration
175
+ email:
176
+ - fabio@miranti.net.br
177
+ executables: []
178
+ extensions: []
179
+ extra_rdoc_files: []
180
+ files:
181
+ - .gitignore
182
+ - Gemfile
183
+ - LICENSE.txt
184
+ - README.md
185
+ - Rakefile
186
+ - cieloz.gemspec
187
+ - config/locales/en.yml
188
+ - config/locales/pt-BR.yml
189
+ - lib/cieloz.rb
190
+ - lib/cieloz/bandeiras.rb
191
+ - lib/cieloz/builder.rb
192
+ - lib/cieloz/configuracao.rb
193
+ - lib/cieloz/helpers.rb
194
+ - lib/cieloz/homologacao.rb
195
+ - lib/cieloz/requisicao.rb
196
+ - lib/cieloz/requisicao/dados_ec.rb
197
+ - lib/cieloz/requisicao/resposta.rb
198
+ - lib/cieloz/requisicao/resposta/erro.rb
199
+ - lib/cieloz/requisicao/resposta/transacao.rb
200
+ - lib/cieloz/requisicao_tid.rb
201
+ - lib/cieloz/requisicao_transacao.rb
202
+ - lib/cieloz/requisicao_transacao/dados_pedido.rb
203
+ - lib/cieloz/requisicao_transacao/dados_portador.rb
204
+ - lib/cieloz/requisicao_transacao/forma_pagamento.rb
205
+ - lib/cieloz/version.rb
206
+ - readme/cielo_developer_guide_2.0.3.pdf
207
+ - readme/cielo_guia_seguranca_ecommerce.pdf
208
+ - readme/cielo_payment_states.png
209
+ - readme/contrato_de_afiliacao_ao_sistema_cielo.pdf
210
+ - readme/credentials.png
211
+ - readme/dicas_preventivas_para_vendas_mais_seguras.pdf
212
+ - readme/email_cielo.pdf
213
+ - readme/lista_de_documentos_necessarios_para_afiliacao_de_vendas_pela_internet_pessoa_juridica.pdf
214
+ - readme/mastercard_securecodedemo.swf
215
+ - readme/supported_products.png
216
+ - readme/termo_de_adesao_de_risco.pdf
217
+ - readme/verified_by_visa.png
218
+ - test/integration/integration_test.rb
219
+ - test/minitest_helper.rb
220
+ - test/unit/bandeiras_operacoes_test.rb
221
+ - test/unit/builder_test.rb
222
+ - test/unit/configuracao_test.rb
223
+ - test/unit/requisicao_autorizacao_tid_test.rb
224
+ - test/unit/requisicao_cancelamento_test.rb
225
+ - test/unit/requisicao_captura_test.rb
226
+ - test/unit/requisicao_consulta_test.rb
227
+ - test/unit/requisicao_test.rb
228
+ - test/unit/requisicao_transacao_test.rb
229
+ - test/unit/validations_test.rb
230
+ - test/unit/xml/dados-ec.xml
231
+ - test/unit/xml/dados-pagamento.xml
232
+ - test/unit/xml/dados-pedido.xml
233
+ - test/unit/xml/dados-portador.xml
234
+ - test/unit/xml/dados-simple_attrs.xml
235
+ - test/unit/xml/erro.xml
236
+ - test/unit/xml/transacao.xml
237
+ homepage: https://github.com/fabiolnm/cieloz
238
+ licenses: []
239
+ post_install_message:
240
+ rdoc_options: []
241
+ require_paths:
242
+ - lib
243
+ required_ruby_version: !ruby/object:Gem::Requirement
244
+ none: false
245
+ requirements:
246
+ - - ! '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ required_rubygems_version: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ requirements: []
256
+ rubyforge_project:
257
+ rubygems_version: 1.8.23
258
+ signing_key:
259
+ specification_version: 3
260
+ summary: ''
261
+ test_files:
262
+ - test/integration/integration_test.rb
263
+ - test/minitest_helper.rb
264
+ - test/unit/bandeiras_operacoes_test.rb
265
+ - test/unit/builder_test.rb
266
+ - test/unit/configuracao_test.rb
267
+ - test/unit/requisicao_autorizacao_tid_test.rb
268
+ - test/unit/requisicao_cancelamento_test.rb
269
+ - test/unit/requisicao_captura_test.rb
270
+ - test/unit/requisicao_consulta_test.rb
271
+ - test/unit/requisicao_test.rb
272
+ - test/unit/requisicao_transacao_test.rb
273
+ - test/unit/validations_test.rb
274
+ - test/unit/xml/dados-ec.xml
275
+ - test/unit/xml/dados-pagamento.xml
276
+ - test/unit/xml/dados-pedido.xml
277
+ - test/unit/xml/dados-portador.xml
278
+ - test/unit/xml/dados-simple_attrs.xml
279
+ - test/unit/xml/erro.xml
280
+ - test/unit/xml/transacao.xml