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