cielo 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3f66f6f04b9f2e7d4daa7ee5573fd5895daa9358
4
+ data.tar.gz: 2002e45b21be46e168fe6fed92f0063225fd646e
5
+ SHA512:
6
+ metadata.gz: babb09b32f697682e40cda01fab9bdf1f4403554e73bb8009fc3f50b38b75933a636f2cf451787ec4687b9c700bc4b8c548b13369f7174595038fe5c14742830
7
+ data.tar.gz: 545e3323467e40837b16e528e88ffe31f0505c4c970dce7f14142031d19fe9fb9b66932d0d3b940f2812b503e109c286ee4f4c402a9f4a8e66f7453d6bcc82a4
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ script: bundle exec rspec spec
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ gem 'builder', ">= 2.0.0", "< 3.1.0"
10
10
  group :development do
11
11
  gem "shoulda", ">= 0"
12
12
  gem "bundler"
13
- gem "jeweler", "~> 1.8.3"
13
+ gem "jeweler"
14
14
  gem "rspec"
15
15
  gem "fakeweb"
16
16
  end
data/Gemfile.lock CHANGED
@@ -1,37 +1,76 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (3.2.3)
5
- i18n (~> 0.6)
6
- multi_json (~> 1.0)
7
- builder (3.0.0)
8
- diff-lcs (1.1.3)
4
+ activesupport (4.0.1)
5
+ i18n (~> 0.6, >= 0.6.4)
6
+ minitest (~> 4.2)
7
+ multi_json (~> 1.3)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 0.3.37)
10
+ addressable (2.3.5)
11
+ atomic (1.1.14)
12
+ builder (3.0.4)
13
+ diff-lcs (1.2.5)
9
14
  fakeweb (1.3.0)
10
- git (1.2.5)
11
- i18n (0.6.0)
12
- jeweler (1.8.3)
15
+ faraday (0.8.8)
16
+ multipart-post (~> 1.2.0)
17
+ git (1.2.6)
18
+ github_api (0.10.1)
19
+ addressable
20
+ faraday (~> 0.8.1)
21
+ hashie (>= 1.2)
22
+ multi_json (~> 1.4)
23
+ nokogiri (~> 1.5.2)
24
+ oauth2
25
+ hashie (2.0.5)
26
+ highline (1.6.20)
27
+ httpauth (0.2.0)
28
+ i18n (0.6.5)
29
+ jeweler (1.8.8)
30
+ builder
13
31
  bundler (~> 1.0)
14
32
  git (>= 1.2.5)
33
+ github_api (= 0.10.1)
34
+ highline (>= 1.6.15)
35
+ nokogiri (= 1.5.10)
15
36
  rake
16
37
  rdoc
17
- json (1.7.3)
18
- multi_json (1.3.4)
19
- rake (0.9.2.2)
20
- rdoc (3.12)
38
+ json (1.8.1)
39
+ jwt (0.1.8)
40
+ multi_json (>= 1.5)
41
+ minitest (4.7.5)
42
+ multi_json (1.8.2)
43
+ multi_xml (0.5.5)
44
+ multipart-post (1.2.0)
45
+ nokogiri (1.5.10)
46
+ oauth2 (0.9.2)
47
+ faraday (~> 0.8)
48
+ httpauth (~> 0.2)
49
+ jwt (~> 0.1.4)
50
+ multi_json (~> 1.0)
51
+ multi_xml (~> 0.5)
52
+ rack (~> 1.2)
53
+ rack (1.5.2)
54
+ rake (10.1.0)
55
+ rdoc (4.0.1)
21
56
  json (~> 1.4)
22
- rspec (2.10.0)
23
- rspec-core (~> 2.10.0)
24
- rspec-expectations (~> 2.10.0)
25
- rspec-mocks (~> 2.10.0)
26
- rspec-core (2.10.0)
27
- rspec-expectations (2.10.0)
28
- diff-lcs (~> 1.1.3)
29
- rspec-mocks (2.10.1)
30
- shoulda (3.0.1)
31
- shoulda-context (~> 1.0.0)
32
- shoulda-matchers (~> 1.0.0)
33
- shoulda-context (1.0.0)
34
- shoulda-matchers (1.0.0)
57
+ rspec (2.14.1)
58
+ rspec-core (~> 2.14.0)
59
+ rspec-expectations (~> 2.14.0)
60
+ rspec-mocks (~> 2.14.0)
61
+ rspec-core (2.14.7)
62
+ rspec-expectations (2.14.4)
63
+ diff-lcs (>= 1.1.3, < 2.0)
64
+ rspec-mocks (2.14.4)
65
+ shoulda (3.5.0)
66
+ shoulda-context (~> 1.0, >= 1.0.1)
67
+ shoulda-matchers (>= 1.4.1, < 3.0)
68
+ shoulda-context (1.1.6)
69
+ shoulda-matchers (2.4.0)
70
+ activesupport (>= 3.0.0)
71
+ thread_safe (0.1.3)
72
+ atomic
73
+ tzinfo (0.3.38)
35
74
 
36
75
  PLATFORMS
37
76
  ruby
@@ -42,6 +81,6 @@ DEPENDENCIES
42
81
  bundler
43
82
  fakeweb
44
83
  i18n
45
- jeweler (~> 1.8.3)
84
+ jeweler
46
85
  rspec
47
86
  shoulda
data/README.rdoc CHANGED
@@ -1,6 +1,8 @@
1
1
  = cielo
2
2
 
3
- Integração com a Cielo via WebServices
3
+ {<img src="https://secure.travis-ci.org/crafters/cielo.png" />}[http://travis-ci.org/crafters/cielo]
4
+
5
+ Integração com a Cielo via WebServices [Buy Page Cielo / Buy Page Loja ]
4
6
 
5
7
  == Funcionalidades Implementadas
6
8
 
@@ -14,11 +16,77 @@ Integração com a Cielo via WebServices
14
16
 
15
17
  === Ambiente de teste (Homologação)
16
18
 
19
+ == Buy Page Loja
20
+
17
21
  transaction = Cielo::Transaction.new
18
- transaction.create!(numero: "XXX", valor: "123123", moeda: "BRL", ...) #inicia uma nova transação
22
+
23
+ transaction_parameters = {
24
+ numero: "XXX",
25
+ valor: "123123",
26
+ moeda: "986",
27
+ bandeira: 'visa',
28
+ :'url-retorno' => 'http://url.retorno',
29
+ cartao_numero: '4012001037141112',
30
+ cartao_validade: '201805',
31
+ cartao_seguranca: '123',
32
+ cartao_portador: 'Lorem Ipsum Dolor'
33
+ }
34
+
35
+ transaction.create!(transaction_parameters, :store) #inicia uma nova transação
36
+
19
37
  transaction.verify!("TID OF THE TRANSACTION") #verifica o status de uma transação
38
+
20
39
  transaction.catch!("TID OF THE TRANSACTION") #captura a transação
21
40
 
41
+ == Buy Page Loja com token
42
+
43
+ token_request = Cielo::Token.new
44
+
45
+ token_parameters = {
46
+ :cartao_numero => '4012888888881881',
47
+ :cartao_validade => '201508',
48
+ :cartao_portador => 'Nome portador' }
49
+ }
50
+
51
+ response = token_request.create! token_parameters, :store
52
+ # O token pode ser armazenado no banco, será sempre igual para o cartão em questão
53
+ token = response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"]
54
+
55
+ transaction = Cielo::Transaction.new
56
+
57
+ transaction_parameters = {
58
+ numero: "XXX",
59
+ valor: "123123",
60
+ moeda: "986",
61
+ bandeira: 'visa',
62
+ parcelas: 2,
63
+ token: token, # Esse token substitui o cartão de crédito
64
+ autorizar: 3 # Quando a transação usa token, a tag 'autorizar' precisa ser 3 ou 4
65
+ }
66
+
67
+ transaction.create!(transaction_parameters, :store) #inicia uma nova transação
68
+
69
+ Caso seja necessário fazer uma transação recorrente, basta alterar a tag autorizar para 4.
70
+
71
+ == Buy Page Cielo
72
+
73
+ transaction = Cielo::Transaction.new
74
+
75
+ transaction_parameters = {
76
+ numero: "XXX",
77
+ valor: "123123",
78
+ moeda: "986",
79
+ bandeira: 'visa',
80
+ :'url-retorno' => 'http://url.retorno',
81
+ }
82
+
83
+ transaction.create!(transaction_parameters, :cielo) #inicia uma nova transação / :cielo é padrão
84
+
85
+ transaction.verify!("TID OF THE TRANSACTION") #verifica o status de uma transação
86
+
87
+ transaction.catch!("TID OF THE TRANSACTION") #captura a transação
88
+
89
+
22
90
  === Rails
23
91
 
24
92
  rails g cielo:install
@@ -39,7 +107,7 @@ Se torna necessário somente configurar o módulo Cielo
39
107
  == Avisos
40
108
 
41
109
  * O retorno da cielo é convertido em um hash, então, atributos no xml como url-retorno ficam :"url-retorno", cuidado com esses detalhes.
42
- * Foi desenvolvido e testado em ruby 1.9.2 e 1.8.7
110
+ * Foi desenvolvido e testado em ruby 2.0.0, 1.9.3, 1.9.2 e 1.8.7
43
111
 
44
112
  == Contributing to cielo
45
113
 
@@ -53,8 +121,9 @@ Se torna necessário somente configurar o módulo Cielo
53
121
 
54
122
  == Colaboradores
55
123
 
56
- * Felipe Rodrigues [ http://github/felipero http://twitter.com/felipero ]
57
- * Rafael Felix [ http://github/fellix http://twitter.com/rs_felix ]
124
+ * Antônio Roberto Silva [ http://github.com/devton , http://twitter.com/dev_ton ]
125
+ * Felipe Rodrigues [ http://github.com/felipero , http://twitter.com/felipero ]
126
+ * Rafael Felix [ http://github.com/fellix , http://twitter.com/rs_felix ]
58
127
  * Gabriel Paladino and Scupen [https://github.com/gabpaladino , https://github.com/scupen] (Ruby 1.8.7 support)
59
128
 
60
129
  == Copyright
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ Jeweler::Tasks.new do |gem|
23
23
  gem.summary = %Q{Integração com a cielo}
24
24
  gem.description = %Q{Integração com a cielo}
25
25
  gem.email = "crafters@crafters.com.br"
26
- gem.authors = ["Crafters Software Studio", "Rafael Felix", "Felipe Rodrigues"]
26
+ gem.authors = ["Crafters Software Studio", "Felipe Rodrigues"]
27
27
  gem.version = Cielo::Version::STRING
28
28
  # dependencies defined in Gemfile
29
29
  end
data/cielo.gemspec CHANGED
@@ -2,14 +2,15 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: cielo 0.1.3 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "cielo"
8
- s.version = "0.1.1"
9
+ s.version = "0.1.3"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Crafters Software Studio", "Rafael Felix", "Felipe Rodrigues"]
12
- s.date = "2012-05-17"
12
+ s.authors = ["Crafters Software Studio", "Felipe Rodrigues"]
13
+ s.date = "2013-12-02"
13
14
  s.description = "Integra\u{e7}\u{e3}o com a cielo"
14
15
  s.email = "crafters@crafters.com.br"
15
16
  s.extra_rdoc_files = [
@@ -18,6 +19,7 @@ Gem::Specification.new do |s|
18
19
  ]
19
20
  s.files = [
20
21
  ".document",
22
+ ".travis.yml",
21
23
  "Gemfile",
22
24
  "Gemfile.lock",
23
25
  "LICENSE.txt",
@@ -26,22 +28,24 @@ Gem::Specification.new do |s|
26
28
  "cielo.gemspec",
27
29
  "lib/cielo.rb",
28
30
  "lib/cielo/connection.rb",
31
+ "lib/cielo/token.rb",
29
32
  "lib/cielo/transaction.rb",
30
33
  "lib/cielo/version.rb",
31
34
  "lib/generators/cielo/install_generator.rb",
32
35
  "lib/generators/templates/cielo.rb",
33
36
  "spec/cielo/connection_spec.rb",
37
+ "spec/cielo/token_spec.rb",
34
38
  "spec/cielo/transaction_spec.rb",
35
39
  "spec/spec_helper.rb"
36
40
  ]
37
41
  s.homepage = "http://github.com/crafters/cielo"
38
42
  s.licenses = ["MIT"]
39
43
  s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.24"
44
+ s.rubygems_version = "2.1.11"
41
45
  s.summary = "Integra\u{e7}\u{e3}o com a cielo"
42
46
 
43
47
  if s.respond_to? :specification_version then
44
- s.specification_version = 3
48
+ s.specification_version = 4
45
49
 
46
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
51
  s.add_runtime_dependency(%q<activesupport>, [">= 3.0.7"])
@@ -49,7 +53,7 @@ Gem::Specification.new do |s|
49
53
  s.add_runtime_dependency(%q<builder>, ["< 3.1.0", ">= 2.0.0"])
50
54
  s.add_development_dependency(%q<shoulda>, [">= 0"])
51
55
  s.add_development_dependency(%q<bundler>, [">= 0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
56
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
53
57
  s.add_development_dependency(%q<rspec>, [">= 0"])
54
58
  s.add_development_dependency(%q<fakeweb>, [">= 0"])
55
59
  else
@@ -58,7 +62,7 @@ Gem::Specification.new do |s|
58
62
  s.add_dependency(%q<builder>, ["< 3.1.0", ">= 2.0.0"])
59
63
  s.add_dependency(%q<shoulda>, [">= 0"])
60
64
  s.add_dependency(%q<bundler>, [">= 0"])
61
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
65
+ s.add_dependency(%q<jeweler>, [">= 0"])
62
66
  s.add_dependency(%q<rspec>, [">= 0"])
63
67
  s.add_dependency(%q<fakeweb>, [">= 0"])
64
68
  end
@@ -68,7 +72,7 @@ Gem::Specification.new do |s|
68
72
  s.add_dependency(%q<builder>, ["< 3.1.0", ">= 2.0.0"])
69
73
  s.add_dependency(%q<shoulda>, [">= 0"])
70
74
  s.add_dependency(%q<bundler>, [">= 0"])
71
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
75
+ s.add_dependency(%q<jeweler>, [">= 0"])
72
76
  s.add_dependency(%q<rspec>, [">= 0"])
73
77
  s.add_dependency(%q<fakeweb>, [">= 0"])
74
78
  end
@@ -1,3 +1,5 @@
1
+ #encoding: utf-8
2
+
1
3
  module Cielo
2
4
  class Connection
3
5
  attr_reader :environment
@@ -5,6 +7,7 @@ module Cielo
5
7
  @environment = eval(Cielo.environment.to_s.capitalize)
6
8
  port = 443
7
9
  @http = Net::HTTP.new(@environment::BASE_URL,port)
10
+ @http.ssl_version = :SSLv3 if @http.respond_to? :ssl_version
8
11
  @http.use_ssl = true
9
12
  @http.open_timeout = 10*1000
10
13
  @http.read_timeout = 40*1000
@@ -18,5 +21,47 @@ module Cielo
18
21
  end
19
22
  @http.request_post(self.environment::WS_PATH, str_params)
20
23
  end
24
+
25
+ def xml_builder(group_name, target=:after, &block)
26
+ xml = Builder::XmlMarkup.new
27
+ xml.instruct! :xml, :version=>"1.0", :encoding=>"ISO-8859-1"
28
+ xml.tag!(group_name, :id => "#{Time.now.to_i}", :versao => "1.2.1") do
29
+ block.call(xml) if target == :before
30
+ xml.tag!("dados-ec") do
31
+ xml.numero Cielo.numero_afiliacao
32
+ xml.chave Cielo.chave_acesso
33
+ end
34
+ block.call(xml) if target == :after
35
+ end
36
+ xml
37
+ end
38
+
39
+ def make_request!(message)
40
+ params = { :mensagem => message.target! }
41
+ result = self.request! params
42
+ parse_response(result)
43
+ end
44
+
45
+ def parse_response(response)
46
+ case response
47
+ when Net::HTTPSuccess
48
+ document = REXML::Document.new(response.body)
49
+ parse_elements(document.elements)
50
+ else
51
+ {:erro => { :codigo => "000", :mensagem => "Impossível contactar o servidor"}}
52
+ end
53
+ end
54
+
55
+ def parse_elements(elements)
56
+ map={}
57
+ elements.each do |element|
58
+ element_map = {}
59
+ element_map = element.text if element.elements.empty? && element.attributes.empty?
60
+ element_map.merge!("value" => element.text) if element.elements.empty? && !element.attributes.empty?
61
+ element_map.merge!(parse_elements(element.elements)) unless element.elements.empty?
62
+ map.merge!(element.name => element_map)
63
+ end
64
+ map.symbolize_keys
65
+ end
21
66
  end
22
67
  end
@@ -0,0 +1,20 @@
1
+ #encoding: utf-8
2
+ module Cielo
3
+ class Token
4
+ def initialize
5
+ @connection = Cielo::Connection.new
6
+ end
7
+
8
+ def create!(parameters = {}, buy_page = :cielo)
9
+ message = @connection.xml_builder('requisicao-token') do |xml|
10
+ xml.tag!("dados-portador") do
11
+ xml.tag!('numero', parameters[:cartao_numero])
12
+ xml.tag!('validade', parameters[:cartao_validade])
13
+ xml.tag!('nome-portador', parameters[:cartao_portador])
14
+ end
15
+ end
16
+
17
+ @connection.make_request! message
18
+ end
19
+ end
20
+ end
@@ -4,48 +4,94 @@ module Cielo
4
4
  def initialize
5
5
  @connection = Cielo::Connection.new
6
6
  end
7
- def create!(parameters={})
8
- analysis_parameters(parameters)
9
- message = xml_builder("requisicao-transacao") do |xml|
10
- xml.tag!("dados-pedido") do
11
- [:numero, :valor, :moeda, :"data-hora", :idioma].each do |key|
12
- xml.tag!(key.to_s, parameters[key].to_s)
13
- end
14
- end
15
- xml.tag!("forma-pagamento") do
16
- [:bandeira, :produto, :parcelas].each do |key|
17
- xml.tag!(key.to_s, parameters[key].to_s)
7
+
8
+ def create!(parameters = {}, buy_page = :cielo)
9
+ if buy_page == :store
10
+ store_page_create!(parameters)
11
+ else
12
+ cielo_page_create!(parameters)
13
+ end
14
+ end
15
+
16
+ def store_page_create!(parameters={})
17
+ analysis_parameters(parameters, :buy_page_store)
18
+ message = @connection.xml_builder('requisicao-transacao') do |xml|
19
+ xml.tag!("dados-portador") do
20
+ if parameters[:token].present?
21
+ xml.tag!('token', parameters[:token])
22
+ else
23
+ xml.tag!('numero', parameters[:cartao_numero])
24
+ xml.tag!('validade', parameters[:cartao_validade])
25
+ xml.tag!('indicador', parameters[:cartao_indicador])
26
+ xml.tag!('codigo-seguranca', parameters[:cartao_seguranca])
27
+ xml.tag!('nome-portador', parameters[:cartao_portador])
28
+ xml.tag!('token', '')
18
29
  end
19
30
  end
20
- xml.tag!("url-retorno", parameters[:"url-retorno"])
21
- xml.autorizar parameters[:autorizar].to_s
22
- xml.capturar parameters[:capturar].to_s
31
+ default_transaction_xml(xml, parameters)
23
32
  end
24
- make_request! message
33
+
34
+ @connection.make_request! message
25
35
  end
26
-
36
+
37
+ def cielo_page_create!(parameters={})
38
+ analysis_parameters(parameters, :buy_page_cielo)
39
+ message = @connection.xml_builder("requisicao-transacao") do |xml|
40
+ default_transaction_xml(xml, parameters)
41
+ end
42
+ @connection.make_request! message
43
+ end
44
+
27
45
  def verify!(cielo_tid)
28
46
  return nil unless cielo_tid
29
- message = xml_builder("requisicao-consulta", :before) do |xml|
47
+ message = @connection.xml_builder("requisicao-consulta", :before) do |xml|
30
48
  xml.tid "#{cielo_tid}"
31
49
  end
32
-
33
- make_request! message
50
+
51
+ @connection.make_request! message
34
52
  end
35
-
53
+
36
54
  def catch!(cielo_tid)
37
55
  return nil unless cielo_tid
38
- message = xml_builder("requisicao-captura", :before) do |xml|
56
+ message = @connection.xml_builder("requisicao-captura", :before) do |xml|
39
57
  xml.tid "#{cielo_tid}"
40
58
  end
41
- make_request! message
59
+ @connection.make_request! message
42
60
  end
43
-
61
+
44
62
  private
45
- def analysis_parameters(parameters={})
46
- [:numero, :valor, :bandeira, :"url-retorno"].each do |parameter|
63
+ def default_transaction_xml(xml, parameters)
64
+ xml.tag!("dados-pedido") do
65
+ [:numero, :valor, :moeda, :"data-hora", :idioma].each do |key|
66
+ xml.tag!(key.to_s, parameters[key].to_s)
67
+ end
68
+ end
69
+ xml.tag!("forma-pagamento") do
70
+ [:bandeira, :produto, :parcelas].each do |key|
71
+ xml.tag!(key.to_s, parameters[key].to_s)
72
+ end
73
+ end
74
+ xml.tag!("url-retorno", parameters[:"url-retorno"])
75
+ xml.autorizar parameters[:autorizar].to_s
76
+ xml.capturar parameters[:capturar].to_s
77
+ xml.tag!("gerar-token", parameters[:"gerar-token"])
78
+ end
79
+
80
+ def analysis_parameters(parameters={}, buy_page = :buy_page_cielo)
81
+ to_analyze = [:numero, :valor, :bandeira, :"url-retorno"]
82
+
83
+ if buy_page == :buy_page_store
84
+ if parameters[:token]
85
+ to_analyze.concat([:token])
86
+ else
87
+ to_analyze.concat([:cartao_numero, :cartao_validade, :cartao_seguranca, :cartao_portador])
88
+ end
89
+ end
90
+
91
+ to_analyze.each do |parameter|
47
92
  raise Cielo::MissingArgumentError, "Required parameter #{parameter} not found" unless parameters[parameter]
48
93
  end
94
+
49
95
  parameters.merge!(:moeda => "986") unless parameters[:moeda]
50
96
  parameters.merge!(:"data-hora" => Time.now.strftime("%Y-%m-%dT%H:%M:%S")) unless parameters[:"data-hora"]
51
97
  parameters.merge!(:idioma => "PT") unless parameters[:idioma]
@@ -54,49 +100,12 @@ module Cielo
54
100
  parameters.merge!(:autorizar => "2") unless parameters[:autorizar]
55
101
  parameters.merge!(:capturar => "true") unless parameters[:capturar]
56
102
  parameters.merge!(:"url-retorno" => Cielo.return_path) unless parameters[:"url-retorno"]
103
+ parameters.merge!(:cartao_indicador => '1') unless parameters[:cartao_indicador] && buy_page == :buy_page_store
104
+ parameters.merge!(:"gerar-token" => false) unless parameters[:"gerar-token"]
105
+
57
106
  parameters
58
107
  end
108
+
59
109
 
60
- def xml_builder(group_name, target=:after, &block)
61
- xml = Builder::XmlMarkup.new
62
- xml.instruct! :xml, :version=>"1.0", :encoding=>"ISO-8859-1"
63
- xml.tag!(group_name, :id => "#{Time.now.to_i}", :versao => "1.1.0") do
64
- block.call(xml) if target == :before
65
- xml.tag!("dados-ec") do
66
- xml.numero Cielo.numero_afiliacao
67
- xml.chave Cielo.chave_acesso
68
- end
69
- block.call(xml) if target == :after
70
- end
71
- xml
72
- end
73
-
74
- def make_request!(message)
75
- params = { :mensagem => message.target! }
76
-
77
- result = @connection.request! params
78
- parse_response(result)
79
- end
80
-
81
- def parse_response(response)
82
- case response
83
- when Net::HTTPSuccess
84
- document = REXML::Document.new(response.body)
85
- parse_elements(document.elements)
86
- else
87
- {:erro => { :codigo => "000", :mensagem => "Impossível contactar o servidor"}}
88
- end
89
- end
90
- def parse_elements(elements)
91
- map={}
92
- elements.each do |element|
93
- element_map = {}
94
- element_map = element.text if element.elements.empty? && element.attributes.empty?
95
- element_map.merge!("value" => element.text) if element.elements.empty? && !element.attributes.empty?
96
- element_map.merge!(parse_elements(element.elements)) unless element.elements.empty?
97
- map.merge!(element.name => element_map)
98
- end
99
- map.symbolize_keys
100
- end
101
110
  end
102
- end
111
+ end
data/lib/cielo/version.rb CHANGED
@@ -2,7 +2,7 @@ module Cielo
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 1
5
+ PATCH = 3
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
data/lib/cielo.rb CHANGED
@@ -3,9 +3,10 @@ require 'active_support/core_ext/class/attribute_accessors'
3
3
  require 'active_support/core_ext/module/attribute_accessors'
4
4
  require 'active_support/core_ext/hash'
5
5
  require "net/http"
6
+ require "net/https"
6
7
  require "rexml/document"
7
8
  require "builder"
8
- [:connection, :transaction].each { |lib| require "cielo/#{lib}" }
9
+ [:connection, :transaction, :token].each { |lib| require "cielo/#{lib}" }
9
10
 
10
11
  module Cielo
11
12
 
@@ -2,11 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  describe Cielo::Connection do
4
4
  before do
5
+ FakeWeb.allow_net_connect = true
6
+
5
7
  @connection = Cielo::Connection.new
6
8
  end
9
+
10
+ after do
11
+ FakeWeb.allow_net_connect = false
12
+ end
13
+
7
14
  it "should estabilish connection when was created" do
8
15
  @connection.environment.should_not be_nil
9
16
  end
17
+
10
18
  describe "making a request" do
11
19
  it "should make a request" do
12
20
  response = @connection.request! :data => "Anything"
@@ -0,0 +1,33 @@
1
+ #encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Cielo::Token do
5
+ let(:card_params) { { :cartao_numero => '4012888888881881', :cartao_validade => '201508', :cartao_portador => 'Nome portador' } }
6
+
7
+ before do
8
+ @token = Cielo::Token.new
9
+ end
10
+
11
+ describe "create a token for a card" do
12
+ before do
13
+ Cielo.stub(:numero_afiliacao).and_return('1006993069')
14
+ Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
15
+
16
+ @params = card_params
17
+ end
18
+
19
+ it 'delivers an successful message and have a card token' do
20
+ FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
21
+ :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><retorno-token versao=\"1.2.1\" id=\"57239017\" xmlns=\"http://ecommerce.cbmp.com.br\"><token><dados-token><codigo-token>TuS6LeBHWjqFFtE7S3zR052Jl/KUlD+tYJFpAdlA87E=</codigo-token><status>1</status><numero-cartao-truncado>455187******0183</numero-cartao-truncado></dados-token></token></retorno-token>", :content_type => "application/xml")
22
+
23
+ response = @token.create! @params, :store
24
+
25
+ response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"].should_not be_nil
26
+ response[:"retorno-token"][:token][:"dados-token"][:"numero-cartao-truncado"].should_not be_nil
27
+
28
+ # Respose type
29
+ # {:"retorno-token"=>{:token=>{:"dados-token"=>{:"codigo-token"=>"2ta/YqYaeyolf2NHkBWO8grPqZE44j3PvRAQxVQQGgE=", :status=>"1", :"numero-cartao-truncado"=>"401288******1881"}}}}
30
+ end
31
+ end
32
+
33
+ end
@@ -2,39 +2,138 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Cielo::Transaction do
5
+ let(:default_params) { {:numero => "1", :valor => "100", :bandeira => "visa", :"url-retorno" => "http://some.thing.com"} }
6
+ let(:card_params) { { :cartao_numero => '4012888888881881', :cartao_validade => '201508', :cartao_indicador => '1', :cartao_seguranca => '973', :cartao_portador => 'Nome portador' } }
7
+ let(:card_token_params) { { :cartao_numero => '4012888888881881', :cartao_validade => '201508', :cartao_portador => 'Nome portador' } }
8
+
5
9
  before do
6
10
  @transaction = Cielo::Transaction.new
11
+ @token = Cielo::Token.new
7
12
  end
8
-
9
- describe "create a transaction" do
13
+
14
+ describe "create a buy page store transaction with token" do
15
+ before do
16
+ Cielo.stub(:numero_afiliacao).and_return('1006993069')
17
+ Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
18
+
19
+ FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
20
+ :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><retorno-token versao=\"1.2.1\" id=\"57239017\" xmlns=\"http://ecommerce.cbmp.com.br\"><token><dados-token><codigo-token>TuS6LeBHWjqFFtE7S3zR052Jl/KUlD+tYJFpAdlA87E=</codigo-token><status>1</status><numero-cartao-truncado>455187******0183</numero-cartao-truncado></dados-token></token></retorno-token>", :content_type => "application/xml")
21
+
22
+ response = @token.create! card_token_params, :store
23
+ token = response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"]
24
+
25
+ @params = default_params.merge(:token => token, :autorizar => 3)
26
+ end
27
+
28
+ it 'delivers an successful message' do
29
+ FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
30
+ :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><transacao versao=\"1.2.1\" id=\"1385758302\" xmlns=\"http://ecommerce.cbmp.com.br\"><tid>10069930690BB0381001</tid><pan>52WC7RsmcNuEUSjrYWAEhCOjoLMnMCm4KMTQBqN7PdM=</pan><dados-pedido><numero>1</numero><valor>100</valor><moeda>986</moeda><data-hora>2013-11-29T18:51:43.854-02:00</data-hora><idioma>PT</idioma><taxa-embarque>0</taxa-embarque></dados-pedido><forma-pagamento><bandeira>visa</bandeira><produto>1</produto><parcelas>1</parcelas></forma-pagamento><status>6</status><autenticacao><codigo>6</codigo><mensagem>Transacao sem autenticacao</mensagem><data-hora>2013-11-29T18:51:43.865-02:00</data-hora><valor>100</valor><eci>7</eci></autenticacao><autorizacao><codigo>6</codigo><mensagem>Transa??o autorizada</mensagem><data-hora>2013-11-29T18:51:43.869-02:00</data-hora><valor>100</valor><lr>00</lr><arp>123456</arp><nsu>766008</nsu></autorizacao><captura><codigo>6</codigo><mensagem>Transacao capturada com sucesso</mensagem><data-hora>2013-11-29T18:51:44.006-02:00</data-hora><valor>100</valor></captura></transacao>", :content_type => "application/xml")
31
+
32
+ response = @transaction.create! @params, :store
33
+
34
+ # 7 is when transactions was not autenticated
35
+ response[:transacao][:autenticacao][:eci].should eq("7")
36
+ end
37
+
38
+ before do
39
+ Cielo.stub(:numero_afiliacao).and_return('1006993069')
40
+ Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
41
+ response = @token.create! card_token_params, :store
42
+ token = response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"]
43
+
44
+ # #autorizar => 4 indicates recurring transaction
45
+ @params = default_params.merge(:token => token, :autorizar => 4)
46
+ end
47
+
48
+ it 'delivers an successful message' do
49
+ FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
50
+ :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><transacao versao=\"1.2.1\" id=\"1385758302\" xmlns=\"http://ecommerce.cbmp.com.br\"><tid>10069930690BB0381001</tid><pan>52WC7RsmcNuEUSjrYWAEhCOjoLMnMCm4KMTQBqN7PdM=</pan><dados-pedido><numero>1</numero><valor>100</valor><moeda>986</moeda><data-hora>2013-11-29T18:51:43.854-02:00</data-hora><idioma>PT</idioma><taxa-embarque>0</taxa-embarque></dados-pedido><forma-pagamento><bandeira>visa</bandeira><produto>1</produto><parcelas>1</parcelas></forma-pagamento><status>6</status><autenticacao><codigo>6</codigo><mensagem>Transacao sem autenticacao</mensagem><data-hora>2013-11-29T18:51:43.865-02:00</data-hora><valor>100</valor><eci>7</eci></autenticacao><autorizacao><codigo>6</codigo><mensagem>Transa??o autorizada</mensagem><data-hora>2013-11-29T18:51:43.869-02:00</data-hora><valor>100</valor><lr>00</lr><arp>123456</arp><nsu>766008</nsu></autorizacao><captura><codigo>6</codigo><mensagem>Transacao capturada com sucesso</mensagem><data-hora>2013-11-29T18:51:44.006-02:00</data-hora><valor>100</valor></captura></transacao>", :content_type => "application/xml")
51
+
52
+ response = @transaction.create! @params, :store
53
+
54
+ # 7 is when transactions was not autenticated
55
+ response[:transacao][:autenticacao][:eci].should eq("7")
56
+ end
57
+ end
58
+
59
+ # Error on system whe uses gerar-token => true (Verify with Cielo)
60
+ # describe "create a buy page store transaction with token generation" do
61
+ # before do
62
+ # Cielo.stub(:numero_afiliacao).and_return('1006993069')
63
+ # Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
64
+
65
+ # default_params.merge!(:"gerar-token" => false)
66
+
67
+ # @params = default_params.merge(card_params)
68
+ # end
69
+
70
+ # it 'delivers an successful message and have a card token' do
71
+ # response = @transaction.create! @params, :store
72
+
73
+ # response[:transacao][:tid].should_not be_nil
74
+ # response[:transacao][:"url-autenticacao"].should_not be_nil
75
+ # # Verifies if token is not nil, it can be used for future transactions
76
+ # response[:transacao][:"codigo-token"].should_not be_nil
77
+ # end
78
+ # end
79
+
80
+ describe "create a buy page store transaction" do
10
81
  before do
11
- @params = {:numero => "1", :valor => "100", :bandeira => "visa", :"url-retorno" => "http://some.thing.com"}
82
+ Cielo.stub(:numero_afiliacao).and_return('1006993069')
83
+ Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
84
+
85
+ @params = default_params.merge(card_params)
86
+ end
87
+
88
+ [:cartao_portador, :cartao_numero, :cartao_validade, :cartao_seguranca, :numero, :valor, :bandeira, :"url-retorno"].each do |parameter|
89
+ it "raises an error when #{parameter} isn't informed" do
90
+ lambda { @transaction.create!(@params.except!(parameter), :store) }.should raise_error(Cielo::MissingArgumentError)
91
+ end
92
+ end
93
+
94
+ it 'delivers an successful message' do
95
+ FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
96
+ :body => "<?xml version='1.0' encoding='ISO-8859-1'?><transacao versao='1.2.1' id='1385759313' xmlns='http://ecommerce.cbmp.com.br'><tid>10069930690BB0441001</tid><pan>52WC7RsmcNuEUSjrYWAEhCOjoLMnMCm4KMTQBqN7PdM=</pan><dados-pedido><numero>1</numero><valor>100</valor><moeda>986</moeda><data-hora>2013-11-29T19:08:34.048-02:00</data-hora><idioma>PT</idioma><taxa-embarque>0</taxa-embarque></dados-pedido><forma-pagamento><bandeira>visa</bandeira><produto>1</produto><parcelas>1</parcelas></forma-pagamento><status>0</status><url-autenticacao>https://qasecommerce.cielo.com.br/web/index.cbmp?id=55152147c2c9e44c340cb4e50d171e37</url-autenticacao></transacao>", :content_type => "application/xml")
97
+
98
+ response = @transaction.create! @params, :store
99
+
100
+ response[:transacao][:tid].should_not be_nil
101
+ response[:transacao][:"url-autenticacao"].should_not be_nil
102
+
103
+ response = @transaction.catch!("1001734898056B3C1001")
104
+ end
105
+ end
106
+
107
+ describe "create a buy page cielo transaction" do
108
+ before do
109
+ @params = default_params
12
110
  end
13
111
  [:numero, :valor, :bandeira, :"url-retorno"].each do |parameter|
14
112
  it "raises an error when #{parameter} isn't informed" do
15
113
  lambda { @transaction.create! @params.except!(parameter) }.should raise_error(Cielo::MissingArgumentError)
16
114
  end
17
115
  end
116
+
18
117
  it "delivers an successful message" do
19
118
  response = @transaction.create! @params
20
-
119
+
21
120
  response[:transacao][:tid].should_not be_nil
22
121
  response[:transacao][:"url-autenticacao"].should_not be_nil
23
-
122
+
24
123
  response = @transaction.catch!("1001734898056B3C1001")
25
-
124
+
26
125
  end
27
-
126
+
28
127
  it "delivers a response with error message when status isn't 200" do
29
128
  FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
30
129
  :body => "Nothing to be found 'round here",
31
130
  :status => ["404", "Not Found"])
32
131
  response = @transaction.create! @params
33
-
132
+
34
133
  response[:erro].should_not be_nil
35
134
  response[:erro][:codigo].should be_eql("000")
36
135
  end
37
-
136
+
38
137
  it "delivers a response with error message when the server send" do
39
138
  FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
40
139
  :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> <erro xmlns=\"http://ecommerce.cbmp.com.br\"> <codigo>001</codigo> <mensagem>Requisição inválida</mensagem> </erro>", :content_type => "application/xml")
@@ -43,9 +142,9 @@ describe Cielo::Transaction do
43
142
  response[:erro].should_not be_nil
44
143
  response[:erro][:codigo].should be_eql("001")
45
144
  end
46
-
145
+
47
146
  end
48
-
147
+
49
148
  describe "Verify a transaction status" do
50
149
  it "returns null when no tid is informed" do
51
150
  @transaction.verify!(nil).should be_nil
@@ -53,14 +152,14 @@ describe Cielo::Transaction do
53
152
  it "returns a successfull message" do
54
153
  FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
55
154
  :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<transacao id=\"1308170973\" versao=\"1.1.0\" xmlns=\"http://ecommerce.cbmp.com.br\">\n <tid>1001734898056B3C1001</tid>\n <dados-pedido>\n <numero>1</numero>\n <valor>100</valor>\n <moeda>986</moeda>\n <data-hora>2011-06-15T18:45:16.705-02:00</data-hora>\n <idioma>PT</idioma>\n </dados-pedido>\n <forma-pagamento>\n <bandeira>visa</bandeira>\n <produto>1</produto>\n <parcelas>1</parcelas>\n </forma-pagamento>\n <status>0</status>\n</transacao>\n\n", :content_type => "application/xml")
56
-
155
+
57
156
  response = @transaction.verify!("1001734898056B3C1001")
58
157
 
59
158
  response[:transacao][:tid].should_not be_nil
60
159
  response[:transacao][:status].should_not be_nil
61
160
  end
62
161
  end
63
-
162
+
64
163
  describe "Catch a transaction" do
65
164
  it "returns null when no tid is informed" do
66
165
  @transaction.catch!(nil).should be_nil
@@ -68,14 +167,14 @@ describe Cielo::Transaction do
68
167
  it "returns a successfull message" do
69
168
  FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
70
169
  :body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<transacao id=\"1308170973\" versao=\"1.1.0\" xmlns=\"http://ecommerce.cbmp.com.br\">\n <tid>1001734898056B3C1001</tid>\n <dados-pedido>\n <numero>1</numero>\n <valor>100</valor>\n <moeda>986</moeda>\n <data-hora>2011-06-15T18:45:16.705-02:00</data-hora>\n <idioma>PT</idioma>\n </dados-pedido>\n <forma-pagamento>\n <bandeira>visa</bandeira>\n <produto>1</produto>\n <parcelas>1</parcelas>\n </forma-pagamento>\n <status>0</status>\n</transacao>\n\n", :content_type => "application/xml")
71
-
170
+
72
171
  response = @transaction.catch!("1001734898056B3C1001")
73
172
 
74
173
  response[:transacao][:tid].should_not be_nil
75
174
  response[:transacao][:status].should_not be_nil
76
175
  end
77
176
  end
78
-
177
+
79
178
  describe "Using a production environment" do
80
179
  before do
81
180
  Cielo.setup do |config|
@@ -84,11 +183,11 @@ describe Cielo::Transaction do
84
183
  config.chave_acesso="e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832"
85
184
  end
86
185
  end
87
-
186
+
88
187
  it "must use the production environment" do
89
188
  Cielo.numero_afiliacao.should be_eql "1001734891"
90
189
  end
91
-
190
+
92
191
  end
93
-
94
- end
192
+
193
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,4 @@
1
1
  require 'cielo'
2
- require 'fakeweb'
2
+ require 'fakeweb'
3
+
4
+ FakeWeb.allow_net_connect = true
metadata CHANGED
@@ -1,150 +1,132 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cielo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Crafters Software Studio
9
- - Rafael Felix
10
8
  - Felipe Rodrigues
11
9
  autorequire:
12
10
  bindir: bin
13
11
  cert_chain: []
14
- date: 2012-05-17 00:00:00.000000000 Z
12
+ date: 2013-12-02 00:00:00.000000000 Z
15
13
  dependencies:
16
14
  - !ruby/object:Gem::Dependency
17
15
  name: activesupport
18
16
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
17
  requirements:
21
- - - ! '>='
18
+ - - '>='
22
19
  - !ruby/object:Gem::Version
23
20
  version: 3.0.7
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
24
  requirements:
29
- - - ! '>='
25
+ - - '>='
30
26
  - !ruby/object:Gem::Version
31
27
  version: 3.0.7
32
28
  - !ruby/object:Gem::Dependency
33
29
  name: i18n
34
30
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
31
  requirements:
37
- - - ! '>='
32
+ - - '>='
38
33
  - !ruby/object:Gem::Version
39
34
  version: '0'
40
35
  type: :runtime
41
36
  prerelease: false
42
37
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
38
  requirements:
45
- - - ! '>='
39
+ - - '>='
46
40
  - !ruby/object:Gem::Version
47
41
  version: '0'
48
42
  - !ruby/object:Gem::Dependency
49
43
  name: builder
50
44
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
45
  requirements:
53
46
  - - <
54
47
  - !ruby/object:Gem::Version
55
48
  version: 3.1.0
56
- - - ! '>='
49
+ - - '>='
57
50
  - !ruby/object:Gem::Version
58
51
  version: 2.0.0
59
52
  type: :runtime
60
53
  prerelease: false
61
54
  version_requirements: !ruby/object:Gem::Requirement
62
- none: false
63
55
  requirements:
64
56
  - - <
65
57
  - !ruby/object:Gem::Version
66
58
  version: 3.1.0
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 2.0.0
70
62
  - !ruby/object:Gem::Dependency
71
63
  name: shoulda
72
64
  requirement: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  type: :development
79
70
  prerelease: false
80
71
  version_requirements: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  - !ruby/object:Gem::Dependency
87
77
  name: bundler
88
78
  requirement: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  type: :development
95
84
  prerelease: false
96
85
  version_requirements: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  - !ruby/object:Gem::Dependency
103
91
  name: jeweler
104
92
  requirement: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
- version: 1.8.3
96
+ version: '0'
110
97
  type: :development
111
98
  prerelease: false
112
99
  version_requirements: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
- version: 1.8.3
103
+ version: '0'
118
104
  - !ruby/object:Gem::Dependency
119
105
  name: rspec
120
106
  requirement: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  type: :development
127
112
  prerelease: false
128
113
  version_requirements: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  - !ruby/object:Gem::Dependency
135
119
  name: fakeweb
136
120
  requirement: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  type: :development
143
126
  prerelease: false
144
127
  version_requirements: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  description: Integração com a cielo
@@ -156,6 +138,7 @@ extra_rdoc_files:
156
138
  - README.rdoc
157
139
  files:
158
140
  - .document
141
+ - .travis.yml
159
142
  - Gemfile
160
143
  - Gemfile.lock
161
144
  - LICENSE.txt
@@ -164,39 +147,37 @@ files:
164
147
  - cielo.gemspec
165
148
  - lib/cielo.rb
166
149
  - lib/cielo/connection.rb
150
+ - lib/cielo/token.rb
167
151
  - lib/cielo/transaction.rb
168
152
  - lib/cielo/version.rb
169
153
  - lib/generators/cielo/install_generator.rb
170
154
  - lib/generators/templates/cielo.rb
171
155
  - spec/cielo/connection_spec.rb
156
+ - spec/cielo/token_spec.rb
172
157
  - spec/cielo/transaction_spec.rb
173
158
  - spec/spec_helper.rb
174
159
  homepage: http://github.com/crafters/cielo
175
160
  licenses:
176
161
  - MIT
162
+ metadata: {}
177
163
  post_install_message:
178
164
  rdoc_options: []
179
165
  require_paths:
180
166
  - lib
181
167
  required_ruby_version: !ruby/object:Gem::Requirement
182
- none: false
183
168
  requirements:
184
- - - ! '>='
169
+ - - '>='
185
170
  - !ruby/object:Gem::Version
186
171
  version: '0'
187
- segments:
188
- - 0
189
- hash: 3672751431091614813
190
172
  required_rubygems_version: !ruby/object:Gem::Requirement
191
- none: false
192
173
  requirements:
193
- - - ! '>='
174
+ - - '>='
194
175
  - !ruby/object:Gem::Version
195
176
  version: '0'
196
177
  requirements: []
197
178
  rubyforge_project:
198
- rubygems_version: 1.8.24
179
+ rubygems_version: 2.1.11
199
180
  signing_key:
200
- specification_version: 3
181
+ specification_version: 4
201
182
  summary: Integração com a cielo
202
183
  test_files: []