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 +7 -0
- data/.travis.yml +6 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +65 -26
- data/README.rdoc +74 -5
- data/Rakefile +1 -1
- data/cielo.gemspec +12 -8
- data/lib/cielo/connection.rb +45 -0
- data/lib/cielo/token.rb +20 -0
- data/lib/cielo/transaction.rb +76 -67
- data/lib/cielo/version.rb +1 -1
- data/lib/cielo.rb +2 -1
- data/spec/cielo/connection_spec.rb +8 -0
- data/spec/cielo/token_spec.rb +33 -0
- data/spec/cielo/transaction_spec.rb +118 -19
- data/spec/spec_helper.rb +3 -1
- metadata +28 -47
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
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,37 +1,76 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activesupport (
|
5
|
-
i18n (~> 0.6)
|
6
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
11
|
-
|
12
|
-
|
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.
|
18
|
-
|
19
|
-
|
20
|
-
|
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.
|
23
|
-
rspec-core (~> 2.
|
24
|
-
rspec-expectations (~> 2.
|
25
|
-
rspec-mocks (~> 2.
|
26
|
-
rspec-core (2.
|
27
|
-
rspec-expectations (2.
|
28
|
-
diff-lcs (
|
29
|
-
rspec-mocks (2.
|
30
|
-
shoulda (3.0
|
31
|
-
shoulda-context (~> 1.0.0)
|
32
|
-
shoulda-matchers (
|
33
|
-
shoulda-context (1.
|
34
|
-
shoulda-matchers (
|
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
|
84
|
+
jeweler
|
46
85
|
rspec
|
47
86
|
shoulda
|
data/README.rdoc
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
= cielo
|
2
2
|
|
3
|
-
|
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
|
-
|
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
|
-
*
|
57
|
-
*
|
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", "
|
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.
|
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", "
|
12
|
-
s.date = "
|
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.
|
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 =
|
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>, ["
|
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>, ["
|
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>, ["
|
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
|
data/lib/cielo/connection.rb
CHANGED
@@ -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
|
data/lib/cielo/token.rb
ADDED
@@ -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
|
data/lib/cielo/transaction.rb
CHANGED
@@ -4,48 +4,94 @@ module Cielo
|
|
4
4
|
def initialize
|
5
5
|
@connection = Cielo::Connection.new
|
6
6
|
end
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
21
|
-
xml.autorizar parameters[:autorizar].to_s
|
22
|
-
xml.capturar parameters[:capturar].to_s
|
31
|
+
default_transaction_xml(xml, parameters)
|
23
32
|
end
|
24
|
-
|
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
|
46
|
-
|
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
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
|
-
|
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
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.
|
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:
|
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:
|
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:
|
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.
|
179
|
+
rubygems_version: 2.1.11
|
199
180
|
signing_key:
|
200
|
-
specification_version:
|
181
|
+
specification_version: 4
|
201
182
|
summary: Integração com a cielo
|
202
183
|
test_files: []
|