cielo 0.1.4 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f800a29b21bbdf1a7dc8c06a32a2d6c1464f3a7
4
- data.tar.gz: c711b739a98b6a613edb340f35d1bca1c5e3da67
3
+ metadata.gz: b43856db1eb4a50fbfc9e3c2bfd9022b114375d8
4
+ data.tar.gz: aecbf80ba9ca794a0ebe301978aebf447284fe51
5
5
  SHA512:
6
- metadata.gz: 0bb83165042178256c8d74e839441cca617b93e791eb081c288d0ee3ec15c945358ff702897eca60eb2f4ad76267f6cb0e8ac4508cad9c159bfdcbfc510c3714
7
- data.tar.gz: 77b7ad4f04eeff1c6a3d27f1f9af61b11624af5d48a2222511401bcdbfbaf5ea23430b3280b37094ca612bb707c1a86a7326fba88f30928e6a823cf7df6741ae
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
- gem "rspec"
15
- gem "fakeweb"
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
- * Caputra de transação
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.4 ruby lib
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.4"
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 = "2013-12-02"
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.11"
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"])
@@ -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
- def initialize
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 = :SSLv3 if @http.respond_to? :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, target=:after, &block)
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 => "1.2.1") do
29
- block.call(xml) if target == :before
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) if target == :after
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
- 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])
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
 
@@ -1,8 +1,17 @@
1
1
  #encoding: utf-8
2
+ require 'bigdecimal'
2
3
  module Cielo
3
4
  class Transaction
4
- def initialize
5
- @connection = Cielo::Connection.new
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
- 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', '')
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
- default_transaction_xml(xml, parameters)
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", :before) do |xml|
48
- xml.tid "#{cielo_tid}"
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", :before) do |xml|
57
- xml.tid "#{cielo_tid}"
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, :cartao_seguranca, :cartao_portador])
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
@@ -2,7 +2,7 @@ module Cielo
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 4
5
+ PATCH = 5
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -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
- end
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
@@ -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 = @token.create! @params, :store
18
+ response = token.create! card_params, :store
24
19
 
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
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
- before do
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 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')
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
- # default_params.merge!(:"gerar-token" => false)
72
+ Cielo.stub(:numero_afiliacao).and_return('1006993069')
73
+ Cielo.stub(:chave_acesso).and_return('25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3')
66
74
 
67
- # @params = default_params.merge(card_params)
68
- # end
75
+ default_params.merge!(:"gerar-token" => true, :autorizar => 3)
76
+
77
+ @params = default_params.merge(card_params)
78
+ end
69
79
 
70
- # it 'delivers an successful message and have a card token' do
71
- # response = @transaction.create! @params, :store
80
+ it 'delivers an successful message and have a card token' do
81
+ response = @transaction.create! @params, :store
72
82
 
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
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
@@ -1,4 +1,9 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter "/spec/"
4
+ end
1
5
  require 'cielo'
2
6
  require 'fakeweb'
7
+ require 'watir-webdriver'
3
8
 
4
- FakeWeb.allow_net_connect = true
9
+ FakeWeb.allow_net_connect = false
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
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: 2013-12-02 00:00:00.000000000 Z
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.1.11
201
+ rubygems_version: 2.4.5
174
202
  signing_key:
175
203
  specification_version: 4
176
204
  summary: Integração com a cielo