pagseguro-oficial 2.0.5 → 2.0.6

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: f1f8e2e4b489f3e61836e032ffdb59abd5fc5260
4
- data.tar.gz: ed7b50c45c771d5bae7d545556c5453f67a66546
3
+ metadata.gz: 788279b727dd7437ae09d37c26ae11bac42e8310
4
+ data.tar.gz: d2523d522ed794650fe5d807c64104e230a11824
5
5
  SHA512:
6
- metadata.gz: 97200bbddcd310de48999f219bb65ac8df682c874da71f8267327ee7657eaaaec4b2a228e48faabc992e6dfebe80efded5b1142d3d7dc6f3a3a490c0b449d89b
7
- data.tar.gz: 5d0ef25bdec187a122e446e05d65b9315abb57807adc5aeba3d3766917ef8ee352e3693266a8e5be26482c27fe2ad520527d991990af914403201311f0a2704d
6
+ metadata.gz: e24fe077d815397578847a3d2e842803d2ba2894eb82a846ee521989d694891a551f3105d9ca9dda5b8a30c294c0b68a6c4c8de8811ba4ee94ea626e95e9663f
7
+ data.tar.gz: 1fcd33a1722fd8d9b985f3385220ada6dc81a1b183f77f3bbb9b950a7bbb728a44ca6f3bbef02dc0405b3c36f33c26b1e3965abe80826fc4ebd95b264b695a5a
data/.gitignore CHANGED
@@ -18,3 +18,11 @@ Gemfile.lock
18
18
  .env
19
19
  *~
20
20
  .rvmrc
21
+ .ruby-gemset
22
+ .ruby-version
23
+
24
+ #################
25
+ ## IntelliJ
26
+ #################
27
+ .idea/
28
+ *.iml
data/.travis.yml CHANGED
@@ -1,9 +1,12 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.2.0
4
+ - 2.1.5
3
5
  - 2.0.0
4
6
  - 1.9.3
5
7
  - jruby-19mode
6
8
 
7
9
  notifications:
8
10
  email:
9
- - fnando.vieira@gmail.com
11
+ - lucas.renan@codeminer42.com
12
+ - vitor.kusiaki@codeminer42.com
data/CHANGELOG.md ADDED
@@ -0,0 +1,36 @@
1
+ ## Next release - 2.0.7
2
+
3
+ - Suporte para adicionar parâmetros dinamicamente na criação de requisições de pagamentos (isso possibilita a utilização de parâmetros da api que ainda não foram mapeados na gem)
4
+
5
+ ## Stable
6
+
7
+ 2.0.6
8
+
9
+ - Adicionando environment sandbox, entre outras melhorias
10
+
11
+ 2.0.5
12
+
13
+ - Fixa a versão da biblioteca Aitch; a versão antiga não possui a mesma API utilizada nesta gem.
14
+
15
+ 2.0.4
16
+
17
+ - PaymentRequest com email e token alternativos
18
+
19
+ 2.0.3
20
+
21
+ - Ajuste no parser XML e paginação de relatórios.
22
+ - Incluindo parâmetro para indicar a página inicial em uma busca de transações.
23
+ - Correções de testes.
24
+
25
+ 2.0.2
26
+
27
+ - Atualização dos tipos e códigos de meio de pagamento.
28
+ - Correção do exemplo payment_request.
29
+
30
+ 2.0.1
31
+
32
+ - Classes de domínios que representam pagamentos, notificações e transações.
33
+ - Criação de checkouts via API.
34
+ - Tratamento de notificações de pagamento enviadas pelo PagSeguro.
35
+ - Consulta de transações.
36
+
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
- gem "pry-meta", platforms: :ruby
4
+ gem "pry-meta", platforms: [:ruby_20, :ruby_21]
data/README.md CHANGED
@@ -58,7 +58,7 @@ class CheckoutController < ApplicationController
58
58
 
59
59
  payment = PagSeguro::PaymentRequest.new
60
60
 
61
- # Você também pode fazer o request de pagamento usando credenciais
61
+ # Você também pode fazer o request de pagamento usando credenciais
62
62
  # diferentes, como no exemplo abaixo
63
63
 
64
64
  payment = PagSeguro::PaymentRequest.new(email: 'abc@email', token: 'token')
@@ -76,6 +76,12 @@ class CheckoutController < ApplicationController
76
76
  }
77
77
  end
78
78
 
79
+ # Caso você precise passar parâmetros para a api que ainda não foram
80
+ # mapeados na gem, você pode fazer de maneira dinâmica utilizando um
81
+ # simples hash.
82
+ payment.extra_params << { extraParam: 'value' }
83
+ payment.extra_params << { itemExtra1: 'value1' }
84
+
79
85
  response = payment.register
80
86
 
81
87
  # Caso o processo de checkout tenha dado errado, lança uma exceção.
@@ -257,29 +263,20 @@ payment.max_uses = 100
257
263
  payment.max_age = 3600 # em segundos
258
264
  ```
259
265
 
260
- ## Changelog
261
-
262
- 2.0.4
266
+ #### Definindo environment e/ou encoding
263
267
 
264
- - PaymentRequest com email e token alternativos
265
-
266
- 2.0.3
268
+ ```ruby
269
+ PagSeguro.environment = "production" # production ou sandbox
270
+ PagSeguro.encoding = "UTF-8" # UTF-8 ou ISO-8859-1
271
+ ```
267
272
 
268
- - Ajuste no parser XML e paginação de relatórios.
269
- - Incluindo parâmetro para indicar a página inicial em uma busca de transações.
270
- - Correções de testes.
271
-
272
- 2.0.2
273
+ ## Dúvidas?
273
274
 
274
- - Atualização dos tipos e códigos de meio de pagamento.
275
- - Correção do exemplo payment_request.
275
+ Caso tenha dúvidas ou precise de suporte, acesse nosso [fórum].
276
276
 
277
- 2.0.1
277
+ ## Changelog
278
278
 
279
- - Classes de domínios que representam pagamentos, notificações e transações.
280
- - Criação de checkouts via API.
281
- - Tratamento de notificações de pagamento enviadas pelo PagSeguro.
282
- - Consulta de transações.
279
+ https://github.com/pagseguro/ruby/blob/master/CHANGELOG.md
283
280
 
284
281
  ## Licença
285
282
 
@@ -297,16 +294,19 @@ Unless required by applicable law or agreed to in writing, software distributed
297
294
  - Certifique-se que tenha definido corretamente o charset de acordo com a codificação (ISO-8859-1 ou UTF-8) do seu sistema. Isso irá prevenir que as transações gerem possíveis erros ou quebras ou ainda que caracteres especiais possam ser apresentados de maneira diferente do habitual.
298
295
  - Para que ocorra normalmente a geração de logs, certifique-se que o diretório e o arquivo de log tenham permissões de leitura e escrita.
299
296
 
300
- ## [Dúvidas?]
301
-
302
-
303
297
  ## Contribuições
304
298
 
305
299
  Achou e corrigiu um bug ou tem alguma feature em mente e deseja contribuir?
306
300
 
307
- * Faça um fork.
308
- * Adicione sua feature ou correção de bug.
309
- * Envie um pull request no [GitHub].
301
+ * Faça um fork
302
+ * Adicione sua feature ou correção de bug (`git checkout -b my-new-feature`)
303
+ * Commit suas mudanças (`git commit -am 'Added some feature'`)
304
+ * Rode um push para o branch (`git push origin my-new-feature`)
305
+ * Envie um Pull Request
306
+
307
+ O código, os commits e os comentários devem ser em inglês.
308
+ Adicione exemplos para sua nova feature.
309
+ Se seu Pull Request for relacionado a uma versão específica, o Pull Request não deve ser enviado para o branch master e sim para o branch correspondente a versão.
310
310
 
311
311
 
312
312
  [requisições de pagamentos]: https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-pagamentos.html
@@ -314,7 +314,7 @@ Achou e corrigiu um bug ou tem alguma feature em mente e deseja contribuir?
314
314
  [transações por código]: https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-por-codigo.html
315
315
  [transações por intervalo de datas]: https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-por-intervalo-de-datas.html
316
316
  [transações abandonadas]: https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-abandonadas.html
317
- [Dúvidas?]: https://pagseguro.uol.com.br/desenvolvedor/comunidade.jhtml
317
+ [fórum]: http://forum.pagseguro.uol.com.br/
318
318
  [Ruby]: http://www.ruby-lang.org/pt/
319
319
  [GitHub]: https://github.com/pagseguro/ruby/
320
- [Aitch]: https://github.com/fnando/aitch
320
+ [Aitch]: https://github.com/fnando/aitch
@@ -1,4 +1,4 @@
1
- # -*- encoding : utf-8 -*-
1
+ # -*- encoding : utf-8 -*-
2
2
  require_relative "boot"
3
3
 
4
4
  payment = PagSeguro::PaymentRequest.new
@@ -36,6 +36,10 @@ payment.shipping = {
36
36
  }
37
37
  }
38
38
 
39
+ # Add extras params to request
40
+ # payment.extra_params << { extraParam: 'value' }
41
+ # payment.extra_params << { itemExtra1: 'value1' }
42
+
39
43
  puts "=> REQUEST"
40
44
  puts PagSeguro::PaymentRequest::Serializer.new(payment).to_params
41
45
 
data/lib/pagseguro.rb CHANGED
@@ -7,6 +7,7 @@ require "aitch"
7
7
  require "i18n"
8
8
 
9
9
  require "pagseguro/version"
10
+ require "pagseguro/config"
10
11
  require "pagseguro/errors"
11
12
  require "pagseguro/exceptions"
12
13
  require "pagseguro/extensions/mass_assignment"
@@ -33,21 +34,16 @@ I18n.load_path += Dir[File.expand_path("../../locales/*.yml", __FILE__)]
33
34
 
34
35
  module PagSeguro
35
36
  class << self
36
- # Primary e-mail associated with this account.
37
- attr_accessor :email
38
-
39
- # The e-mail that will be displayed when sender is redirected
40
- # to PagSeguro.
41
- attr_accessor :receiver_email
42
-
43
- # The API token associated with this account.
44
- attr_accessor :token
37
+ # Delegates some calls to the config object
38
+ extend Forwardable
39
+ def_delegators :configuration, :email, :receiver_email, :token
40
+ def_delegators :configuration, :email=, :receiver_email=, :token=
45
41
 
46
42
  # The encoding that will be used.
47
43
  attr_accessor :encoding
48
44
 
49
45
  # The PagSeguro environment.
50
- # Only +production+ for now.
46
+ # +production+ or +sandbox+.
51
47
  attr_accessor :environment
52
48
  end
53
49
 
@@ -60,6 +56,10 @@ module PagSeguro
60
56
  production: {
61
57
  api: "https://ws.pagseguro.uol.com.br/v2",
62
58
  site: "https://pagseguro.uol.com.br/v2"
59
+ },
60
+ sandbox: {
61
+ site: 'https://sandbox.pagseguro.uol.com.br/v2',
62
+ api: 'https://ws.sandbox.pagseguro.uol.com.br/v2'
63
63
  }
64
64
  }
65
65
  end
@@ -71,6 +71,11 @@ module PagSeguro
71
71
  root[type.to_sym]
72
72
  end
73
73
 
74
+ # The configuration intance for the thread
75
+ def self.configuration
76
+ Thread.current[:pagseguro_config] ||= PagSeguro::Config.new
77
+ end
78
+
74
79
  # Set the global configuration.
75
80
  #
76
81
  # PagSeguro.configure do |config|
@@ -79,7 +84,7 @@ module PagSeguro
79
84
  # end
80
85
  #
81
86
  def self.configure(&block)
82
- yield self
87
+ yield configuration
83
88
  end
84
89
 
85
90
  # The API endpoint.
@@ -0,0 +1,14 @@
1
+ module PagSeguro
2
+ # Holds the configuration of the user
3
+ class Config
4
+ # Primary e-mail associated with this account.
5
+ attr_accessor :email
6
+
7
+ # The e-mail that will be displayed when sender is redirected
8
+ # to PagSeguro.
9
+ attr_accessor :receiver_email
10
+
11
+ # The API token associated with this account.
12
+ attr_accessor :token
13
+ end
14
+ end
@@ -57,6 +57,8 @@ module PagSeguro
57
57
  # The token that identifies the request. Defaults to PagSeguro.token
58
58
  attr_accessor :token
59
59
 
60
+ # The extra parameters for payment request
61
+ attr_accessor :extra_params
60
62
 
61
63
  # Products/items in this payment request.
62
64
  def items
@@ -84,6 +86,7 @@ module PagSeguro
84
86
 
85
87
  private
86
88
  def before_initialize
89
+ self.extra_params = []
87
90
  self.currency = "BRL"
88
91
  self.email = PagSeguro.email
89
92
  self.token = PagSeguro.token
@@ -24,6 +24,7 @@ module PagSeguro
24
24
 
25
25
  serialize_sender(payment_request.sender)
26
26
  serialize_shipping(payment_request.shipping)
27
+ serialize_extra_params(payment_request.extra_params)
27
28
 
28
29
  params.delete_if {|key, value| value.nil? }
29
30
 
@@ -83,6 +84,14 @@ module PagSeguro
83
84
  params[:shippingAddressComplement] = address.complement
84
85
  end
85
86
 
87
+ def serialize_extra_params(extra_params)
88
+ return unless extra_params
89
+
90
+ extra_params.each do |extra_param|
91
+ params[extra_param.keys.first] = extra_param.values.first
92
+ end
93
+ end
94
+
86
95
  def to_amount(amount)
87
96
  "%.2f" % BigDecimal(amount.to_s).round(2).to_s("F") if amount
88
97
  end
@@ -1,3 +1,3 @@
1
1
  module PagSeguro
2
- VERSION = "2.0.5"
2
+ VERSION = "2.0.6"
3
3
  end
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+
3
+ describe PagSeguro::Config do
4
+ it_behaves_like "a configuration"
5
+ end
@@ -11,11 +11,27 @@ describe PagSeguro do
11
11
  it { expect(PagSeguro.token).to eql("TOKEN") }
12
12
  it { expect(PagSeguro.receiver_email).to eql("RECEIVER_EMAIL") }
13
13
 
14
+ context "config delegation" do
15
+ subject { PagSeguro }
16
+ it_behaves_like "a configuration"
17
+ end
18
+
14
19
  context "configuring library" do
15
20
  it "yields PagSeguro" do
16
21
  expect {|block|
17
22
  PagSeguro.configure(&block)
18
- }.to yield_with_args(PagSeguro)
23
+ }.to yield_with_args(PagSeguro::Config)
24
+ end
25
+
26
+ it "is threadsafe" do
27
+ thread = Thread.new do
28
+ PagSeguro.configure do |config|
29
+ config.receiver_email = 'ANOTHER_RECEIVER_EMAIL'
30
+ end
31
+ end
32
+ thread.join
33
+
34
+ expect(PagSeguro.receiver_email).to eql("RECEIVER_EMAIL")
19
35
  end
20
36
  end
21
37
 
@@ -33,9 +49,16 @@ describe PagSeguro do
33
49
  }.to raise_exception(PagSeguro::InvalidEnvironmentError)
34
50
  end
35
51
 
36
- it "returns api url" do
52
+ it "returns production api url when the environment is :production" do
37
53
  expect(PagSeguro.api_url("/some/path")).to eql("https://ws.pagseguro.uol.com.br/v2/some/path")
38
54
  end
55
+
56
+ it "returns sandbox api url when the environment is :sandbox" do
57
+ PagSeguro.environment = :sandbox
58
+
59
+ expect(PagSeguro.api_url("/some/path")).to eql("https://ws.sandbox.pagseguro.uol.com.br/v2/some/path")
60
+ end
61
+
39
62
  end
40
63
 
41
64
  describe ".site_url" do
@@ -47,8 +70,13 @@ describe PagSeguro do
47
70
  }.to raise_exception(PagSeguro::InvalidEnvironmentError)
48
71
  end
49
72
 
50
- it "returns site url" do
73
+ it "returns production site url when the environment is production" do
51
74
  expect(PagSeguro.site_url("/some/path")).to eql("https://pagseguro.uol.com.br/v2/some/path")
52
75
  end
76
+
77
+ it "returns sandbox site url when the environment is :sandbox" do
78
+ PagSeguro.environment = :sandbox
79
+ expect(PagSeguro.site_url("/some/path")).to eql("https://sandbox.pagseguro.uol.com.br/v2/some/path")
80
+ end
53
81
  end
54
82
  end
@@ -139,4 +139,18 @@ describe PagSeguro::PaymentRequest::Serializer do
139
139
  it_behaves_like "item serialization", 1
140
140
  it_behaves_like "item serialization", 2
141
141
  end
142
+
143
+ context "extra params serialization" do
144
+ before do
145
+ payment_request.stub({
146
+ extra_params: [
147
+ { extraParam: 'param_value' },
148
+ { newExtraParam: 'extra_param_value' }
149
+ ]
150
+ })
151
+ end
152
+
153
+ it { expect(params).to include(extraParam: 'param_value') }
154
+ it { expect(params).to include(newExtraParam: 'extra_param_value') }
155
+ end
142
156
  end
@@ -104,4 +104,20 @@ describe PagSeguro::PaymentRequest do
104
104
  expect(payment.register).to eql(response)
105
105
  end
106
106
  end
107
+
108
+ describe "#extra_params" do
109
+ it "is empty before initialization" do
110
+ expect(subject.extra_params).to eql([])
111
+ end
112
+
113
+ it "allows extra parameter addition" do
114
+ subject.extra_params << { extraParam: 'value' }
115
+ subject.extra_params << { itemParam1: 'value1' }
116
+
117
+ expect(subject.extra_params).to eql([
118
+ { extraParam: 'value' },
119
+ { itemParam1: 'value1' }
120
+ ])
121
+ end
122
+ end
107
123
  end
@@ -26,7 +26,7 @@ describe PagSeguro::Transaction::Serializer do
26
26
  it { expect(data.keys).not_to include(:cancellation_source) }
27
27
  it { expect(data.keys).not_to include(:escrow_end_date) }
28
28
 
29
- it { expect(data[:items]).to have(1).item }
29
+ it { expect(data[:items].size).to eq(1) }
30
30
  it { expect(data[:items].first).to include(id: "1234") }
31
31
  it { expect(data[:items].first).to include(description: "Some product") }
32
32
  it { expect(data[:items].first).to include(quantity: 1) }
@@ -112,7 +112,7 @@ describe PagSeguro::Transaction do
112
112
  it { expect(transaction.items).to be_a(PagSeguro::Items) }
113
113
  it { expect(transaction.payment_method).to be_a(PagSeguro::PaymentMethod) }
114
114
  it { expect(transaction.status).to be_a(PagSeguro::PaymentStatus) }
115
- it { expect(transaction.items).to have(1).item }
115
+ it { expect(transaction.items.size).to eq(1) }
116
116
  it { expect(transaction).to respond_to(:escrow_end_date) }
117
117
  end
118
118
  end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples "a configuration" do
2
+ it { is_expected.to respond_to(:email) }
3
+ it { is_expected.to respond_to(:email=) }
4
+ it { is_expected.to respond_to(:receiver_email) }
5
+ it { is_expected.to respond_to(:receiver_email=) }
6
+ it { is_expected.to respond_to(:token) }
7
+ it { is_expected.to respond_to(:token=) }
8
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagseguro-oficial
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-06 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aitch
@@ -174,6 +174,7 @@ files:
174
174
  - ".gitignore"
175
175
  - ".rspec"
176
176
  - ".travis.yml"
177
+ - CHANGELOG.md
177
178
  - Gemfile
178
179
  - LICENSE-2.0.txt
179
180
  - README.md
@@ -187,6 +188,7 @@ files:
187
188
  - lib/pagseguro-oficial.rb
188
189
  - lib/pagseguro.rb
189
190
  - lib/pagseguro/address.rb
191
+ - lib/pagseguro/config.rb
190
192
  - lib/pagseguro/errors.rb
191
193
  - lib/pagseguro/exceptions.rb
192
194
  - lib/pagseguro/extensions/ensure_type.rb
@@ -217,6 +219,7 @@ files:
217
219
  - spec/fixtures/transactions/additional.xml
218
220
  - spec/fixtures/transactions/success.xml
219
221
  - spec/pagseguro/address_spec.rb
222
+ - spec/pagseguro/config_spec.rb
220
223
  - spec/pagseguro/errors_spec.rb
221
224
  - spec/pagseguro/item_spec.rb
222
225
  - spec/pagseguro/items_spec.rb
@@ -236,6 +239,7 @@ files:
236
239
  - spec/spec_helper.rb
237
240
  - spec/support/ensure_type_macro.rb
238
241
  - spec/support/mass_assignment_macro.rb
242
+ - spec/support/shared_examples_for_configuration.rb
239
243
  homepage: http://www.pagseguro.com.br
240
244
  licenses:
241
245
  - ASL
@@ -256,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
260
  version: '0'
257
261
  requirements: []
258
262
  rubyforge_project:
259
- rubygems_version: 2.2.2
263
+ rubygems_version: 2.4.3
260
264
  signing_key:
261
265
  specification_version: 4
262
266
  summary: Biblioteca oficial de integração PagSeguro em Ruby
@@ -268,6 +272,7 @@ test_files:
268
272
  - spec/fixtures/transactions/additional.xml
269
273
  - spec/fixtures/transactions/success.xml
270
274
  - spec/pagseguro/address_spec.rb
275
+ - spec/pagseguro/config_spec.rb
271
276
  - spec/pagseguro/errors_spec.rb
272
277
  - spec/pagseguro/item_spec.rb
273
278
  - spec/pagseguro/items_spec.rb
@@ -287,3 +292,4 @@ test_files:
287
292
  - spec/spec_helper.rb
288
293
  - spec/support/ensure_type_macro.rb
289
294
  - spec/support/mass_assignment_macro.rb
295
+ - spec/support/shared_examples_for_configuration.rb