cielo 0.1.1 → 0.1.3

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 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: []