cielo 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -2
- data/Gemfile.lock +20 -0
- data/README.rdoc +12 -2
- data/cielo.gemspec +7 -4
- data/lib/cielo/connection.rb +20 -12
- data/lib/cielo/token.rb +7 -5
- data/lib/cielo/transaction.rb +65 -24
- data/lib/cielo/version.rb +1 -1
- data/lib/generators/templates/cielo.rb +5 -2
- data/spec/cielo/connection_spec.rb +24 -2
- data/spec/cielo/token_spec.rb +4 -9
- data/spec/cielo/transaction_spec.rb +53 -19
- data/spec/spec_helper.rb +6 -1
- metadata +51 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b43856db1eb4a50fbfc9e3c2bfd9022b114375d8
|
4
|
+
data.tar.gz: aecbf80ba9ca794a0ebe301978aebf447284fe51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbfc915f125e4b2e270d72bd00029a400e0bef881293c4ece4299062d3db806d4379ed66ee2c8ccee0276dcdc4a3026fd8b606ee1721e7688d25780c3bdc4ad6
|
7
|
+
data.tar.gz: 07bb9dbd69917a3bf877614eeb4e3f3440f5546b0192dbea4a5d59d54caa371fc4d5767ac1a3948274ccf30488200919bb5d48a33101cae5238a30c9d9a55a98
|
data/Gemfile
CHANGED
@@ -8,9 +8,11 @@ gem 'builder', ">= 2.0.0"
|
|
8
8
|
# Add dependencies to develop your gem here.
|
9
9
|
# Include everything needed to run rake, tests, features, etc.
|
10
10
|
group :development do
|
11
|
+
gem 'watir-webdriver'
|
11
12
|
gem "shoulda", ">= 0"
|
12
13
|
gem "bundler"
|
13
14
|
gem "jeweler"
|
14
|
-
|
15
|
-
|
15
|
+
gem "rspec"
|
16
|
+
gem "fakeweb"
|
17
|
+
gem "simplecov"
|
16
18
|
end
|
data/Gemfile.lock
CHANGED
@@ -10,10 +10,14 @@ GEM
|
|
10
10
|
addressable (2.3.5)
|
11
11
|
atomic (1.1.14)
|
12
12
|
builder (3.2.2)
|
13
|
+
childprocess (0.4.0)
|
14
|
+
ffi (~> 1.0, >= 1.0.11)
|
13
15
|
diff-lcs (1.2.5)
|
16
|
+
docile (1.1.5)
|
14
17
|
fakeweb (1.3.0)
|
15
18
|
faraday (0.8.8)
|
16
19
|
multipart-post (~> 1.2.0)
|
20
|
+
ffi (1.9.3)
|
17
21
|
git (1.2.6)
|
18
22
|
github_api (0.10.1)
|
19
23
|
addressable
|
@@ -62,15 +66,29 @@ GEM
|
|
62
66
|
rspec-expectations (2.14.4)
|
63
67
|
diff-lcs (>= 1.1.3, < 2.0)
|
64
68
|
rspec-mocks (2.14.4)
|
69
|
+
rubyzip (1.1.0)
|
70
|
+
selenium-webdriver (2.39.0)
|
71
|
+
childprocess (>= 0.2.5)
|
72
|
+
multi_json (~> 1.0)
|
73
|
+
rubyzip (~> 1.0)
|
74
|
+
websocket (~> 1.0.4)
|
65
75
|
shoulda (3.5.0)
|
66
76
|
shoulda-context (~> 1.0, >= 1.0.1)
|
67
77
|
shoulda-matchers (>= 1.4.1, < 3.0)
|
68
78
|
shoulda-context (1.1.6)
|
69
79
|
shoulda-matchers (2.4.0)
|
70
80
|
activesupport (>= 3.0.0)
|
81
|
+
simplecov (0.10.0)
|
82
|
+
docile (~> 1.1.0)
|
83
|
+
json (~> 1.8)
|
84
|
+
simplecov-html (~> 0.10.0)
|
85
|
+
simplecov-html (0.10.0)
|
71
86
|
thread_safe (0.1.3)
|
72
87
|
atomic
|
73
88
|
tzinfo (0.3.38)
|
89
|
+
watir-webdriver (0.6.4)
|
90
|
+
selenium-webdriver (>= 2.18.0)
|
91
|
+
websocket (1.0.7)
|
74
92
|
|
75
93
|
PLATFORMS
|
76
94
|
ruby
|
@@ -84,3 +102,5 @@ DEPENDENCIES
|
|
84
102
|
jeweler
|
85
103
|
rspec
|
86
104
|
shoulda
|
105
|
+
simplecov
|
106
|
+
watir-webdriver
|
data/README.rdoc
CHANGED
@@ -2,13 +2,16 @@
|
|
2
2
|
|
3
3
|
{<img src="https://secure.travis-ci.org/crafters/cielo.png" />}[http://travis-ci.org/crafters/cielo]
|
4
4
|
|
5
|
+
{<img src="https://codeclimate.com/github/crafters/cielo/badges/gpa.svg" />}[https://codeclimate.com/github/crafters/cielo]
|
6
|
+
|
5
7
|
Integração com a Cielo via WebServices [Buy Page Cielo / Buy Page Loja ]
|
6
8
|
|
7
9
|
== Funcionalidades Implementadas
|
8
10
|
|
9
11
|
* Criação de transação
|
10
12
|
* Consulta de stauts de transação
|
11
|
-
*
|
13
|
+
* Captura de transação
|
14
|
+
* Cancelamento de transação
|
12
15
|
|
13
16
|
== USO
|
14
17
|
|
@@ -38,6 +41,8 @@ Integração com a Cielo via WebServices [Buy Page Cielo / Buy Page Loja ]
|
|
38
41
|
|
39
42
|
transaction.catch!("TID OF THE TRANSACTION") #captura a transação
|
40
43
|
|
44
|
+
transaction.cancel!("TID OF THE TRANSACTION") #cancela a transação
|
45
|
+
|
41
46
|
== Buy Page Loja com token
|
42
47
|
|
43
48
|
token_request = Cielo::Token.new
|
@@ -68,6 +73,8 @@ Integração com a Cielo via WebServices [Buy Page Cielo / Buy Page Loja ]
|
|
68
73
|
|
69
74
|
Caso seja necessário fazer uma transação recorrente, basta alterar a tag autorizar para 4.
|
70
75
|
|
76
|
+
Uma transação com um o campo "gerar-token" => true, gera um token correspondente que pode ser armazenado para transações futuras.
|
77
|
+
|
71
78
|
== Buy Page Cielo
|
72
79
|
|
73
80
|
transaction = Cielo::Transaction.new
|
@@ -85,7 +92,8 @@ Caso seja necessário fazer uma transação recorrente, basta alterar a tag auto
|
|
85
92
|
transaction.verify!("TID OF THE TRANSACTION") #verifica o status de uma transação
|
86
93
|
|
87
94
|
transaction.catch!("TID OF THE TRANSACTION") #captura a transação
|
88
|
-
|
95
|
+
|
96
|
+
transaction.cancel!("TID OF THE TRANSACTION") #captura a transação
|
89
97
|
|
90
98
|
=== Rails
|
91
99
|
|
@@ -125,6 +133,8 @@ Se torna necessário somente configurar o módulo Cielo
|
|
125
133
|
* Felipe Rodrigues [ http://github.com/felipero , http://twitter.com/felipero ]
|
126
134
|
* Rafael Felix [ http://github.com/fellix , http://twitter.com/rs_felix ]
|
127
135
|
* Gabriel Paladino and Scupen [https://github.com/gabpaladino , https://github.com/scupen] (Ruby 1.8.7 support)
|
136
|
+
* Wilbert Ribeiro [https://github.com/wilbert/cielo, https://twitter.com/wilbertribeiro ]
|
137
|
+
* Elton Okada [https://github.com/eltonokada, https://twitter.com/eltonokada ]
|
128
138
|
|
129
139
|
== Copyright
|
130
140
|
|
data/cielo.gemspec
CHANGED
@@ -2,15 +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.
|
5
|
+
# stub: cielo 0.1.5 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "cielo"
|
9
|
-
s.version = "0.1.
|
9
|
+
s.version = "0.1.5"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Crafters Software Studio", "Felipe Rodrigues"]
|
13
|
-
s.date = "
|
13
|
+
s.date = "2014-01-21"
|
14
14
|
s.description = "Integra\u{e7}\u{e3}o com a cielo"
|
15
15
|
s.email = "crafters@crafters.com.br"
|
16
16
|
s.extra_rdoc_files = [
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
s.homepage = "http://github.com/crafters/cielo"
|
42
42
|
s.licenses = ["MIT"]
|
43
43
|
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = "2.1.
|
44
|
+
s.rubygems_version = "2.1.9"
|
45
45
|
s.summary = "Integra\u{e7}\u{e3}o com a cielo"
|
46
46
|
|
47
47
|
if s.respond_to? :specification_version then
|
@@ -51,6 +51,7 @@ Gem::Specification.new do |s|
|
|
51
51
|
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.7"])
|
52
52
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
53
53
|
s.add_runtime_dependency(%q<builder>, [">= 2.0.0"])
|
54
|
+
s.add_development_dependency(%q<watir-webdriver>, [">= 0"])
|
54
55
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
55
56
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
56
57
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
@@ -60,6 +61,7 @@ Gem::Specification.new do |s|
|
|
60
61
|
s.add_dependency(%q<activesupport>, [">= 3.0.7"])
|
61
62
|
s.add_dependency(%q<i18n>, [">= 0"])
|
62
63
|
s.add_dependency(%q<builder>, [">= 2.0.0"])
|
64
|
+
s.add_dependency(%q<watir-webdriver>, [">= 0"])
|
63
65
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
64
66
|
s.add_dependency(%q<bundler>, [">= 0"])
|
65
67
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
@@ -70,6 +72,7 @@ Gem::Specification.new do |s|
|
|
70
72
|
s.add_dependency(%q<activesupport>, [">= 3.0.7"])
|
71
73
|
s.add_dependency(%q<i18n>, [">= 0"])
|
72
74
|
s.add_dependency(%q<builder>, [">= 2.0.0"])
|
75
|
+
s.add_dependency(%q<watir-webdriver>, [">= 0"])
|
73
76
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
74
77
|
s.add_dependency(%q<bundler>, [">= 0"])
|
75
78
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
data/lib/cielo/connection.rb
CHANGED
@@ -2,36 +2,44 @@
|
|
2
2
|
|
3
3
|
module Cielo
|
4
4
|
class Connection
|
5
|
+
VERSAO_DEFAULT = '1.2.1'
|
5
6
|
attr_reader :environment
|
6
|
-
|
7
|
+
attr_reader :numero_afiliacao
|
8
|
+
attr_reader :chave_acesso
|
9
|
+
attr_reader :versao
|
10
|
+
|
11
|
+
def initialize numero_afiliacao = Cielo.numero_afiliacao, chave_acesso = Cielo.chave_acesso, versao = VERSAO_DEFAULT
|
7
12
|
@environment = eval(Cielo.environment.to_s.capitalize)
|
13
|
+
@numero_afiliacao = numero_afiliacao
|
14
|
+
@chave_acesso = chave_acesso
|
15
|
+
@versao = versao
|
8
16
|
port = 443
|
9
17
|
@http = Net::HTTP.new(@environment::BASE_URL,port)
|
10
|
-
@http.ssl_version = :
|
18
|
+
@http.ssl_version = :TLSv1 if @http.respond_to? :ssl_version
|
11
19
|
@http.use_ssl = true
|
12
20
|
@http.open_timeout = 10*1000
|
13
21
|
@http.read_timeout = 40*1000
|
14
22
|
end
|
15
|
-
|
23
|
+
|
16
24
|
def request!(params={})
|
17
25
|
str_params = ""
|
18
|
-
params.each do |key, value|
|
26
|
+
params.each do |key, value|
|
19
27
|
str_params+="&" unless str_params.empty?
|
20
28
|
str_params+="#{key}=#{value}"
|
21
29
|
end
|
22
30
|
@http.request_post(self.environment::WS_PATH, str_params)
|
23
31
|
end
|
24
32
|
|
25
|
-
def xml_builder(group_name,
|
33
|
+
def xml_builder(group_name, &block)
|
26
34
|
xml = Builder::XmlMarkup.new
|
27
35
|
xml.instruct! :xml, :version=>"1.0", :encoding=>"ISO-8859-1"
|
28
|
-
xml.tag!(group_name, :id => "#{Time.now.to_i}", :versao =>
|
29
|
-
block.call(xml
|
36
|
+
xml.tag!(group_name, :id => "#{Time.now.to_i}", :versao => @versao) do
|
37
|
+
block.call(xml, :before)
|
30
38
|
xml.tag!("dados-ec") do
|
31
|
-
xml.numero Cielo.numero_afiliacao
|
32
|
-
xml.chave Cielo.chave_acesso
|
39
|
+
xml.numero @numero_afiliacao #Cielo.numero_afiliacao
|
40
|
+
xml.chave @chave_acesso #Cielo.chave_acesso
|
33
41
|
end
|
34
|
-
block.call(xml
|
42
|
+
block.call(xml, :after)
|
35
43
|
end
|
36
44
|
xml
|
37
45
|
end
|
@@ -51,7 +59,7 @@ module Cielo
|
|
51
59
|
{:erro => { :codigo => "000", :mensagem => "Impossível contactar o servidor"}}
|
52
60
|
end
|
53
61
|
end
|
54
|
-
|
62
|
+
|
55
63
|
def parse_elements(elements)
|
56
64
|
map={}
|
57
65
|
elements.each do |element|
|
@@ -64,4 +72,4 @@ module Cielo
|
|
64
72
|
map.symbolize_keys
|
65
73
|
end
|
66
74
|
end
|
67
|
-
end
|
75
|
+
end
|
data/lib/cielo/token.rb
CHANGED
@@ -6,11 +6,13 @@ module Cielo
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def create!(parameters = {}, buy_page = :cielo)
|
9
|
-
message = @connection.xml_builder('requisicao-token') do |xml|
|
10
|
-
|
11
|
-
xml.tag!(
|
12
|
-
|
13
|
-
|
9
|
+
message = @connection.xml_builder('requisicao-token') do |xml, target|
|
10
|
+
if target == :after
|
11
|
+
xml.tag!("dados-portador") do
|
12
|
+
xml.tag!('numero', parameters[:cartao_numero])
|
13
|
+
xml.tag!('validade', parameters[:cartao_validade])
|
14
|
+
xml.tag!('nome-portador', parameters[:cartao_portador])
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
data/lib/cielo/transaction.rb
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
#encoding: utf-8
|
2
|
+
require 'bigdecimal'
|
2
3
|
module Cielo
|
3
4
|
class Transaction
|
4
|
-
|
5
|
-
|
5
|
+
|
6
|
+
attr_reader :numero_afiliacao
|
7
|
+
attr_reader :chave_acesso
|
8
|
+
attr_reader :versao
|
9
|
+
|
10
|
+
def initialize numero_afiliacao = Cielo.numero_afiliacao, chave_acesso = Cielo.chave_acesso, versao = '1.2.1'
|
11
|
+
@numero_afiliacao = numero_afiliacao
|
12
|
+
@chave_acesso = chave_acesso
|
13
|
+
@versao = versao
|
14
|
+
@connection = Cielo::Connection.new @numero_afiliacao, @chave_acesso, @versao
|
6
15
|
end
|
7
16
|
|
8
17
|
def create!(parameters = {}, buy_page = :cielo)
|
@@ -15,20 +24,22 @@ module Cielo
|
|
15
24
|
|
16
25
|
def store_page_create!(parameters={})
|
17
26
|
analysis_parameters(parameters, :buy_page_store)
|
18
|
-
message = @connection.xml_builder('requisicao-transacao') do |xml|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
message = @connection.xml_builder('requisicao-transacao') do |xml, target|
|
28
|
+
if target == :after
|
29
|
+
xml.tag!("dados-portador") do
|
30
|
+
if parameters[:token].present?
|
31
|
+
xml.tag!('token', parameters[:token])
|
32
|
+
else
|
33
|
+
xml.tag!('numero', parameters[:cartao_numero])
|
34
|
+
xml.tag!('validade', parameters[:cartao_validade])
|
35
|
+
xml.tag!('indicador', parameters[:cartao_indicador])
|
36
|
+
xml.tag!('codigo-seguranca', parameters[:cartao_seguranca])
|
37
|
+
xml.tag!('nome-portador', parameters[:cartao_portador])
|
38
|
+
xml.tag!('token', '')
|
39
|
+
end
|
29
40
|
end
|
41
|
+
default_transaction_xml(xml, parameters)
|
30
42
|
end
|
31
|
-
default_transaction_xml(xml, parameters)
|
32
43
|
end
|
33
44
|
|
34
45
|
@connection.make_request! message
|
@@ -36,16 +47,20 @@ module Cielo
|
|
36
47
|
|
37
48
|
def cielo_page_create!(parameters={})
|
38
49
|
analysis_parameters(parameters, :buy_page_cielo)
|
39
|
-
message = @connection.xml_builder("requisicao-transacao") do |xml|
|
40
|
-
|
50
|
+
message = @connection.xml_builder("requisicao-transacao") do |xml, target|
|
51
|
+
if target == :after
|
52
|
+
default_transaction_xml(xml, parameters)
|
53
|
+
end
|
41
54
|
end
|
42
55
|
@connection.make_request! message
|
43
56
|
end
|
44
57
|
|
45
58
|
def verify!(cielo_tid)
|
46
59
|
return nil unless cielo_tid
|
47
|
-
message = @connection.xml_builder("requisicao-consulta"
|
48
|
-
|
60
|
+
message = @connection.xml_builder("requisicao-consulta") do |xml, target|
|
61
|
+
if target == :before
|
62
|
+
xml.tid "#{cielo_tid}"
|
63
|
+
end
|
49
64
|
end
|
50
65
|
|
51
66
|
@connection.make_request! message
|
@@ -53,8 +68,33 @@ module Cielo
|
|
53
68
|
|
54
69
|
def catch!(cielo_tid)
|
55
70
|
return nil unless cielo_tid
|
56
|
-
message = @connection.xml_builder("requisicao-captura"
|
57
|
-
|
71
|
+
message = @connection.xml_builder("requisicao-captura") do |xml, target|
|
72
|
+
if target == :before
|
73
|
+
xml.tid "#{cielo_tid}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
@connection.make_request! message
|
77
|
+
end
|
78
|
+
|
79
|
+
def authorize!(cielo_tid)
|
80
|
+
return nil unless cielo_tid
|
81
|
+
message = @connection.xml_builder("requisicao-autorizacao-tid") do |xml, target|
|
82
|
+
if target == :before
|
83
|
+
xml.tid "#{cielo_tid}"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
@connection.make_request! message
|
87
|
+
end
|
88
|
+
|
89
|
+
def cancel!(cielo_tid, valor=0)
|
90
|
+
return nil unless cielo_tid
|
91
|
+
message = @connection.xml_builder("requisicao-cancelamento") do |xml, target|
|
92
|
+
if target == :before
|
93
|
+
xml.tid "#{cielo_tid}"
|
94
|
+
end
|
95
|
+
if target == :after
|
96
|
+
xml.valor "#{valor}" if BigDecimal.new(valor.nil? ? 0 : valor) > 0
|
97
|
+
end
|
58
98
|
end
|
59
99
|
@connection.make_request! message
|
60
100
|
end
|
@@ -81,10 +121,11 @@ module Cielo
|
|
81
121
|
to_analyze = [:numero, :valor, :bandeira, :"url-retorno"]
|
82
122
|
|
83
123
|
if buy_page == :buy_page_store
|
84
|
-
if parameters[:token]
|
85
|
-
to_analyze.concat([:token])
|
124
|
+
if parameters[:token].present?
|
125
|
+
to_analyze.concat([:token])
|
86
126
|
else
|
87
|
-
to_analyze.concat([:cartao_numero, :cartao_validade, :
|
127
|
+
to_analyze.concat([:cartao_numero, :cartao_validade, :cartao_portador])
|
128
|
+
to_analyze.concat([:cartao_seguranca]) unless ['1.0.0', '1.1.0', '1.1.1'].include?(@versao)
|
88
129
|
end
|
89
130
|
end
|
90
131
|
|
@@ -106,6 +147,6 @@ module Cielo
|
|
106
147
|
parameters
|
107
148
|
end
|
108
149
|
|
109
|
-
|
150
|
+
|
110
151
|
end
|
111
152
|
end
|
data/lib/cielo/version.rb
CHANGED
@@ -5,15 +5,18 @@ Cielo.setup do |config|
|
|
5
5
|
# config.environment = :test
|
6
6
|
|
7
7
|
# Número de afiliação fornecido pela cielo.
|
8
|
-
# O numero padrão é o número usado para testes.
|
8
|
+
# O numero padrão é o número usado para testes.
|
9
|
+
# Utilize "1001734898" para testes Buy page Cielo e "1006993069" para Buy page loja
|
9
10
|
# config.numero_afiliacao = "1001734898"
|
10
11
|
|
11
12
|
# Chave de acesso para autenticação.
|
12
13
|
# O número padrão é o número usado para os testes.
|
14
|
+
# hash para Buy Page Cielo: "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832"
|
15
|
+
# hash para Buy page Loja: "25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3"
|
13
16
|
# config.chave_acesso = "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832"
|
14
17
|
|
15
18
|
# Após o processamento pela cielo, o usuário será redirecionado para uma página.
|
16
19
|
# que é configurada abaixo, nessa action você pode consultar o status do TID
|
17
20
|
# para poder mostrar na tela.
|
18
21
|
# config.return_path = "http://localhost:3000"
|
19
|
-
end
|
22
|
+
end
|
@@ -5,14 +5,26 @@ describe Cielo::Connection do
|
|
5
5
|
FakeWeb.allow_net_connect = true
|
6
6
|
|
7
7
|
@connection = Cielo::Connection.new
|
8
|
+
@connection2 = Cielo::Connection.new "1001734898", "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832"
|
8
9
|
end
|
9
10
|
|
10
11
|
after do
|
11
12
|
FakeWeb.allow_net_connect = false
|
12
13
|
end
|
13
|
-
|
14
|
+
|
14
15
|
it "should estabilish connection when was created" do
|
15
16
|
@connection.environment.should_not be_nil
|
17
|
+
@connection2.environment.should_not be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'use version 1.2.1 by default' do
|
21
|
+
@connection.versao.should eq '1.2.1'
|
22
|
+
Cielo::Connection::VERSAO_DEFAULT.should eq '1.2.1'
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'can use other version' do
|
26
|
+
connection = Cielo::Connection.new "1001734898", "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832", "1.1.1"
|
27
|
+
connection.versao.should eq '1.1.1'
|
16
28
|
end
|
17
29
|
|
18
30
|
describe "making a request" do
|
@@ -23,4 +35,14 @@ describe Cielo::Connection do
|
|
23
35
|
response.should be_kind_of Net::HTTPSuccess
|
24
36
|
end
|
25
37
|
end
|
26
|
-
|
38
|
+
|
39
|
+
describe "passing an access key and a client number" do
|
40
|
+
it "should make a request whithout any problem" do
|
41
|
+
response = @connection2.request! :data => "Anything"
|
42
|
+
|
43
|
+
response.body.should_not be_nil
|
44
|
+
response.should be_kind_of Net::HTTPSuccess
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/spec/cielo/token_spec.rb
CHANGED
@@ -3,27 +3,22 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe Cielo::Token do
|
5
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
|
6
|
+
let(:token) { Cielo::Token.new }
|
10
7
|
|
11
8
|
describe "create a token for a card" do
|
12
9
|
before do
|
13
10
|
Cielo.stub(:numero_afiliacao).and_return('1006993069')
|
14
11
|
Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
|
15
|
-
|
16
|
-
@params = card_params
|
17
12
|
end
|
18
13
|
|
19
14
|
it 'delivers an successful message and have a card token' do
|
20
15
|
FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
|
21
16
|
: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
17
|
|
23
|
-
response =
|
18
|
+
response = token.create! card_params, :store
|
24
19
|
|
25
|
-
response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"].
|
26
|
-
response[:"retorno-token"][:token][:"dados-token"][:"numero-cartao-truncado"].
|
20
|
+
response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"].should eq 'TuS6LeBHWjqFFtE7S3zR052Jl/KUlD+tYJFpAdlA87E='
|
21
|
+
response[:"retorno-token"][:token][:"dados-token"][:"numero-cartao-truncado"].should eq '455187******0183'
|
27
22
|
|
28
23
|
# Respose type
|
29
24
|
# {:"retorno-token"=>{:token=>{:"dados-token"=>{:"codigo-token"=>"2ta/YqYaeyolf2NHkBWO8grPqZE44j3PvRAQxVQQGgE=", :status=>"1", :"numero-cartao-truncado"=>"401288******1881"}}}}
|
@@ -5,14 +5,15 @@ describe Cielo::Transaction do
|
|
5
5
|
let(:default_params) { {:numero => "1", :valor => "100", :bandeira => "visa", :"url-retorno" => "http://some.thing.com"} }
|
6
6
|
let(:card_params) { { :cartao_numero => '4012888888881881', :cartao_validade => '201508', :cartao_indicador => '1', :cartao_seguranca => '973', :cartao_portador => 'Nome portador' } }
|
7
7
|
let(:card_token_params) { { :cartao_numero => '4012888888881881', :cartao_validade => '201508', :cartao_portador => 'Nome portador' } }
|
8
|
+
let(:authentication_card_params){ { :cartao_numero => '5453010000066167', :cartao_validade => '201805', :cartao_seguranca => "123", :cartao_portador => "Nome portador" }}
|
8
9
|
|
9
10
|
before do
|
10
11
|
@transaction = Cielo::Transaction.new
|
11
12
|
@token = Cielo::Token.new
|
12
13
|
end
|
13
14
|
|
14
|
-
describe "create a buy page store transaction with token" do
|
15
|
-
before do
|
15
|
+
describe "create a buy page store transaction with token" do
|
16
|
+
before do
|
16
17
|
Cielo.stub(:numero_afiliacao).and_return('1006993069')
|
17
18
|
Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
|
18
19
|
|
@@ -34,10 +35,16 @@ describe Cielo::Transaction do
|
|
34
35
|
# 7 is when transactions was not autenticated
|
35
36
|
response[:transacao][:autenticacao][:eci].should eq("7")
|
36
37
|
end
|
38
|
+
end
|
37
39
|
|
38
|
-
|
40
|
+
describe "create a recurring transaction with token" do
|
41
|
+
before do
|
39
42
|
Cielo.stub(:numero_afiliacao).and_return('1006993069')
|
40
43
|
Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
|
44
|
+
|
45
|
+
FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
|
46
|
+
: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")
|
47
|
+
|
41
48
|
response = @token.create! card_token_params, :store
|
42
49
|
token = response[:"retorno-token"][:token][:"dados-token"][:"codigo-token"]
|
43
50
|
|
@@ -56,26 +63,27 @@ describe Cielo::Transaction do
|
|
56
63
|
end
|
57
64
|
end
|
58
65
|
|
59
|
-
# Error on system
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
66
|
+
# Error on system when uses gerar-token => true (Verify with Cielo)
|
67
|
+
describe "create a buy page store transaction with token generation" do
|
68
|
+
before do
|
69
|
+
FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
|
70
|
+
:body => "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><transacao versao=\"1.2.1\" id=\"1390315327\" xmlns=\"http://ecommerce.cbmp.com.br\"><tid>10069930690DCC341001</tid><pan>52WC7RsmcNuEUSjrYWAEhCOjoLMnMCm4KMTQBqN7PdM=</pan><dados-pedido><numero>1</numero><valor>100</valor><moeda>986</moeda><data-hora>2014-01-21T12:42:08.865-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>2014-01-21T12:42:08.872-02:00</data-hora><valor>100</valor><eci>7</eci></autenticacao><autorizacao><codigo>6</codigo><mensagem>Transa??o autorizada</mensagem><data-hora>2014-01-21T12:42:08.885-02:00</data-hora><valor>100</valor><lr>00</lr><arp>123456</arp><nsu>904244</nsu></autorizacao><captura><codigo>6</codigo><mensagem>Transacao capturada com sucesso</mensagem><data-hora>2014-01-21T12:42:08.912-02:00</data-hora><valor>100</valor></captura><token><dados-token><codigo-token>2ta/YqYaeyolf2NHkBWO8grPqZE44j3PvRAQxVQQGgE=</codigo-token><status>1</status><numero-cartao-truncado>401288******1881</numero-cartao-truncado></dados-token></token></transacao>", :content_type => "application/xml")
|
64
71
|
|
65
|
-
|
72
|
+
Cielo.stub(:numero_afiliacao).and_return('1006993069')
|
73
|
+
Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
|
66
74
|
|
67
|
-
|
68
|
-
|
75
|
+
default_params.merge!(:"gerar-token" => true, :autorizar => 3)
|
76
|
+
|
77
|
+
@params = default_params.merge(card_params)
|
78
|
+
end
|
69
79
|
|
70
|
-
|
71
|
-
|
80
|
+
it 'delivers an successful message and have a card token' do
|
81
|
+
response = @transaction.create! @params, :store
|
72
82
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
# end
|
78
|
-
# end
|
83
|
+
response[:transacao][:tid].should_not be_nil
|
84
|
+
response[:transacao][:token][:"dados-token"][:"codigo-token"].should_not be_nil
|
85
|
+
end
|
86
|
+
end
|
79
87
|
|
80
88
|
describe "create a buy page store transaction" do
|
81
89
|
before do
|
@@ -175,6 +183,21 @@ describe Cielo::Transaction do
|
|
175
183
|
end
|
176
184
|
end
|
177
185
|
|
186
|
+
describe "Cancel a transaction" do
|
187
|
+
it "returns null when no tid is informed" do
|
188
|
+
@transaction.cancel!(nil).should be_nil
|
189
|
+
end
|
190
|
+
it "returns a successfull message" do
|
191
|
+
FakeWeb.register_uri(:any, "https://qasecommerce.cielo.com.br/servicos/ecommwsec.do",
|
192
|
+
: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")
|
193
|
+
|
194
|
+
response = @transaction.cancel!("1001734898056B3C1001")
|
195
|
+
|
196
|
+
response[:transacao][:tid].should_not be_nil
|
197
|
+
response[:transacao][:status].should_not be_nil
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
178
201
|
describe "Using a production environment" do
|
179
202
|
before do
|
180
203
|
Cielo.setup do |config|
|
@@ -188,6 +211,17 @@ describe Cielo::Transaction do
|
|
188
211
|
Cielo.numero_afiliacao.should be_eql "1001734891"
|
189
212
|
end
|
190
213
|
|
214
|
+
it "must use the production client number" do
|
215
|
+
@connection = Cielo::Connection.new
|
216
|
+
@connection.numero_afiliacao.should be_eql "1001734891"
|
217
|
+
end
|
218
|
+
|
219
|
+
it "must use the configuration informed" do
|
220
|
+
@connection2 = Cielo::Connection.new "0100100100", "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa800"
|
221
|
+
@connection2.numero_afiliacao.should be_eql "0100100100"
|
222
|
+
@connection2.chave_acesso.should be_eql "e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa800"
|
223
|
+
end
|
224
|
+
|
191
225
|
end
|
192
226
|
|
193
227
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cielo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Crafters Software Studio
|
@@ -9,118 +9,146 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-06-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 3.0.7
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 3.0.7
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: i18n
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: builder
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: 2.0.0
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 2.0.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: watir-webdriver
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: shoulda
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
59
73
|
requirements:
|
60
|
-
- -
|
74
|
+
- - ">="
|
61
75
|
- !ruby/object:Gem::Version
|
62
76
|
version: '0'
|
63
77
|
type: :development
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
|
-
- -
|
81
|
+
- - ">="
|
68
82
|
- !ruby/object:Gem::Version
|
69
83
|
version: '0'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: bundler
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
73
87
|
requirements:
|
74
|
-
- -
|
88
|
+
- - ">="
|
75
89
|
- !ruby/object:Gem::Version
|
76
90
|
version: '0'
|
77
91
|
type: :development
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
|
-
- -
|
95
|
+
- - ">="
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '0'
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: jeweler
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
87
101
|
requirements:
|
88
|
-
- -
|
102
|
+
- - ">="
|
89
103
|
- !ruby/object:Gem::Version
|
90
104
|
version: '0'
|
91
105
|
type: :development
|
92
106
|
prerelease: false
|
93
107
|
version_requirements: !ruby/object:Gem::Requirement
|
94
108
|
requirements:
|
95
|
-
- -
|
109
|
+
- - ">="
|
96
110
|
- !ruby/object:Gem::Version
|
97
111
|
version: '0'
|
98
112
|
- !ruby/object:Gem::Dependency
|
99
113
|
name: rspec
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
101
115
|
requirements:
|
102
|
-
- -
|
116
|
+
- - ">="
|
103
117
|
- !ruby/object:Gem::Version
|
104
118
|
version: '0'
|
105
119
|
type: :development
|
106
120
|
prerelease: false
|
107
121
|
version_requirements: !ruby/object:Gem::Requirement
|
108
122
|
requirements:
|
109
|
-
- -
|
123
|
+
- - ">="
|
110
124
|
- !ruby/object:Gem::Version
|
111
125
|
version: '0'
|
112
126
|
- !ruby/object:Gem::Dependency
|
113
127
|
name: fakeweb
|
114
128
|
requirement: !ruby/object:Gem::Requirement
|
115
129
|
requirements:
|
116
|
-
- -
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: simplecov
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
117
145
|
- !ruby/object:Gem::Version
|
118
146
|
version: '0'
|
119
147
|
type: :development
|
120
148
|
prerelease: false
|
121
149
|
version_requirements: !ruby/object:Gem::Requirement
|
122
150
|
requirements:
|
123
|
-
- -
|
151
|
+
- - ">="
|
124
152
|
- !ruby/object:Gem::Version
|
125
153
|
version: '0'
|
126
154
|
description: Integração com a cielo
|
@@ -131,8 +159,8 @@ extra_rdoc_files:
|
|
131
159
|
- LICENSE.txt
|
132
160
|
- README.rdoc
|
133
161
|
files:
|
134
|
-
- .document
|
135
|
-
- .travis.yml
|
162
|
+
- ".document"
|
163
|
+
- ".travis.yml"
|
136
164
|
- Gemfile
|
137
165
|
- Gemfile.lock
|
138
166
|
- LICENSE.txt
|
@@ -160,17 +188,17 @@ require_paths:
|
|
160
188
|
- lib
|
161
189
|
required_ruby_version: !ruby/object:Gem::Requirement
|
162
190
|
requirements:
|
163
|
-
- -
|
191
|
+
- - ">="
|
164
192
|
- !ruby/object:Gem::Version
|
165
193
|
version: '0'
|
166
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
195
|
requirements:
|
168
|
-
- -
|
196
|
+
- - ">="
|
169
197
|
- !ruby/object:Gem::Version
|
170
198
|
version: '0'
|
171
199
|
requirements: []
|
172
200
|
rubyforge_project:
|
173
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.4.5
|
174
202
|
signing_key:
|
175
203
|
specification_version: 4
|
176
204
|
summary: Integração com a cielo
|