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 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