pagseguro 0.1.11.beta1 → 0.1.11.beta2
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.
- data/.bundle/config +2 -2
- data/Gemfile.lock +1 -1
- data/lib/pagseguro/notification.rb +10 -1
- data/lib/pagseguro/version.rb +1 -1
- data/spec/fixtures/notification.yml +29 -0
- data/spec/pagseguro/notification_spec.rb +95 -80
- metadata +3 -1
data/.bundle/config
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
---
|
2
|
-
|
1
|
+
--- {}
|
2
|
+
|
data/Gemfile.lock
CHANGED
@@ -33,7 +33,8 @@ module PagSeguro
|
|
33
33
|
"Cartão de Crédito" => :credit_card,
|
34
34
|
"Boleto" => :invoice,
|
35
35
|
"Pagamento" => :pagseguro,
|
36
|
-
"Pagamento
|
36
|
+
"Pagamento Online" => :online_transfer,
|
37
|
+
"Doação" => :donation
|
37
38
|
}
|
38
39
|
|
39
40
|
# The Rails params hash.
|
@@ -169,6 +170,14 @@ module PagSeguro
|
|
169
170
|
@valid
|
170
171
|
end
|
171
172
|
|
173
|
+
# Return all useful properties in a single hash.
|
174
|
+
#
|
175
|
+
def to_hash
|
176
|
+
MAPPING.inject({}) do |buffer, (name,value)|
|
177
|
+
buffer.merge(name => __send__(name))
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
172
181
|
private
|
173
182
|
def each_value(hash, &blk) # :nodoc:
|
174
183
|
hash.each do |key, value|
|
data/lib/pagseguro/version.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
VendedorEmail: vendedor@example.com
|
3
|
+
TransacaoID: 2339ADE917F744DEBEDA890C826386EG
|
4
|
+
Referencia: "1"
|
5
|
+
Extras: "0,00"
|
6
|
+
TipoFrete: FR
|
7
|
+
ValorFrete: "0,00"
|
8
|
+
Anotacao: "Pagamento do carro"
|
9
|
+
DataTransacao: 26/05/2011 12:17:47
|
10
|
+
TipoPagamento: Pagamento Online
|
11
|
+
StatusTransacao: Aprovado
|
12
|
+
CliNome: "Jos\xC3\xA9 da Silva"
|
13
|
+
CliEmail: comprador@exemple.com
|
14
|
+
CliEndereco: RUA DE CIMA
|
15
|
+
CliNumero: "1145"
|
16
|
+
CliComplemento: apto 1
|
17
|
+
CliBairro: "Pequen\xC3\xB3polis"
|
18
|
+
CliCidade: SAO PAULO
|
19
|
+
CliEstado: SP
|
20
|
+
CliCEP: "04253000"
|
21
|
+
CliTelefone: 11 75379467
|
22
|
+
NumItens: "1"
|
23
|
+
Parcelas: "1"
|
24
|
+
ProdID_1: "9"
|
25
|
+
ProdDescricao_1: Carro Zero Km
|
26
|
+
ProdValor_1: "15,00"
|
27
|
+
ProdQuantidade_1: "1"
|
28
|
+
ProdFrete_1: "0,00"
|
29
|
+
ProdExtras_1: "0,00"
|
@@ -2,122 +2,137 @@
|
|
2
2
|
require "spec_helper"
|
3
3
|
|
4
4
|
describe PagSeguro::Notification do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
5
|
+
subject { PagSeguro::Notification.new(@the_params) }
|
6
|
+
let(:payload) { YAML.load_file File.dirname(__FILE__) + "/../fixtures/notification.yml" }
|
7
|
+
before { @the_params = {} }
|
9
8
|
|
10
9
|
it "should not request the confirmation url when running developer mode" do
|
11
10
|
PagSeguro.stub :developer? => true
|
12
11
|
Net::HTTP.should_not_receive(:new)
|
13
|
-
|
12
|
+
subject.should be_valid
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#to_hash" do
|
16
|
+
subject { PagSeguro::Notification.new(payload) }
|
17
|
+
|
18
|
+
PagSeguro::Notification::MAPPING.each do |name, value|
|
19
|
+
it "includes #{name}" do
|
20
|
+
subject.to_hash.should have_key(name)
|
21
|
+
subject.to_hash[name].should_not be_nil
|
22
|
+
end
|
23
|
+
end
|
14
24
|
end
|
15
25
|
|
16
26
|
describe "status mapping" do
|
17
27
|
it "should be completed" do
|
18
28
|
set_status!("Completo")
|
19
|
-
|
29
|
+
subject.status.should == :completed
|
20
30
|
end
|
21
31
|
|
22
32
|
it "should be pending" do
|
23
33
|
set_status!("Aguardando Pagto")
|
24
|
-
|
34
|
+
subject.status.should == :pending
|
25
35
|
end
|
26
36
|
|
27
37
|
it "should be approved" do
|
28
38
|
set_status!("Aprovado")
|
29
|
-
|
39
|
+
subject.status.should == :approved
|
30
40
|
end
|
31
41
|
|
32
42
|
it "should be verifying" do
|
33
43
|
set_status!("Em Análise")
|
34
|
-
|
44
|
+
subject.status.should == :verifying
|
35
45
|
end
|
36
46
|
|
37
47
|
it "should be canceled" do
|
38
48
|
set_status!("Cancelado")
|
39
|
-
|
49
|
+
subject.status.should == :canceled
|
40
50
|
end
|
41
51
|
|
42
52
|
it "should be refunded" do
|
43
53
|
set_status!("Devolvido")
|
44
|
-
|
54
|
+
subject.status.should == :refunded
|
45
55
|
end
|
46
56
|
end
|
47
57
|
|
48
58
|
describe "payment mapping" do
|
49
59
|
it "should be credit card" do
|
50
60
|
set_payment!("Cartão de Crédito")
|
51
|
-
|
61
|
+
subject.payment_method.should == :credit_card
|
52
62
|
end
|
53
63
|
|
54
64
|
it "should be invoice" do
|
55
65
|
set_payment!("Boleto")
|
56
|
-
|
66
|
+
subject.payment_method.should == :invoice
|
57
67
|
end
|
58
68
|
|
59
69
|
it "should be pagseguro" do
|
60
70
|
set_payment!("Pagamento")
|
61
|
-
|
71
|
+
subject.payment_method.should == :pagseguro
|
62
72
|
end
|
63
73
|
|
64
74
|
it "should be online transfer" do
|
65
|
-
set_payment!("Pagamento
|
66
|
-
|
75
|
+
set_payment!("Pagamento Online")
|
76
|
+
subject.payment_method.should == :online_transfer
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should be donation" do
|
80
|
+
set_payment!("Doação")
|
81
|
+
subject.payment_method.should == :donation
|
67
82
|
end
|
68
83
|
end
|
69
84
|
|
70
85
|
describe "buyer mapping" do
|
71
86
|
it "should return client name" do
|
72
87
|
param!("CliNome", "John Doe")
|
73
|
-
|
88
|
+
subject.buyer[:name].should == "John Doe"
|
74
89
|
end
|
75
90
|
|
76
91
|
it "should return client email" do
|
77
92
|
param!("CliEmail", "john@doe.com")
|
78
|
-
|
93
|
+
subject.buyer[:email].should == "john@doe.com"
|
79
94
|
end
|
80
95
|
|
81
96
|
it "should return client phone" do
|
82
97
|
param!("CliTelefone", "11 55551234")
|
83
|
-
|
84
|
-
|
98
|
+
subject.buyer[:phone][:area_code].should == "11"
|
99
|
+
subject.buyer[:phone][:number].should == "55551234"
|
85
100
|
end
|
86
101
|
|
87
102
|
describe "address" do
|
88
103
|
it "should return street" do
|
89
104
|
param!("CliEndereco", "Av. Paulista")
|
90
|
-
|
105
|
+
subject.buyer[:address][:street].should == "Av. Paulista"
|
91
106
|
end
|
92
107
|
|
93
108
|
it "should return number" do
|
94
109
|
param!("CliNumero", "2500")
|
95
|
-
|
110
|
+
subject.buyer[:address][:number].should == "2500"
|
96
111
|
end
|
97
112
|
|
98
113
|
it "should return complements" do
|
99
114
|
param!("CliComplemento", "Apto 123-A")
|
100
|
-
|
115
|
+
subject.buyer[:address][:complements].should == "Apto 123-A"
|
101
116
|
end
|
102
117
|
|
103
118
|
it "should return neighbourhood" do
|
104
119
|
param!("CliBairro", "Bela Vista")
|
105
|
-
|
120
|
+
subject.buyer[:address][:neighbourhood].should == "Bela Vista"
|
106
121
|
end
|
107
122
|
|
108
123
|
it "should return city" do
|
109
124
|
param!("CliCidade", "São Paulo")
|
110
|
-
|
125
|
+
subject.buyer[:address][:city].should == "São Paulo"
|
111
126
|
end
|
112
127
|
|
113
128
|
it "should return state" do
|
114
129
|
param!("CliEstado", "SP")
|
115
|
-
|
130
|
+
subject.buyer[:address][:state].should == "SP"
|
116
131
|
end
|
117
132
|
|
118
133
|
it "should return postal code" do
|
119
134
|
param!("CliCEP", "01310300")
|
120
|
-
|
135
|
+
subject.buyer[:address][:postal_code].should == "01310300"
|
121
136
|
end
|
122
137
|
end
|
123
138
|
end
|
@@ -125,35 +140,35 @@ describe PagSeguro::Notification do
|
|
125
140
|
describe "other mappings" do
|
126
141
|
it "should map the order id" do
|
127
142
|
param!("Referencia", "ABCDEF")
|
128
|
-
|
143
|
+
subject.order_id.should == "ABCDEF"
|
129
144
|
end
|
130
145
|
|
131
146
|
it "should map the processing date" do
|
132
147
|
param!("DataTransacao", "04/09/2009 16:23:44")
|
133
|
-
|
148
|
+
subject.processed_at.should == Time.parse("2009-09-04 16:23:44").utc
|
134
149
|
end
|
135
150
|
|
136
151
|
it "should map the shipping type" do
|
137
152
|
param!("TipoFrete", "SD")
|
138
|
-
|
153
|
+
subject.shipping_type.should == "SD"
|
139
154
|
end
|
140
155
|
|
141
156
|
it "should map the client annotation" do
|
142
157
|
param!("Anotacao", "Gift package, please!")
|
143
|
-
|
158
|
+
subject.notes.should == "Gift package, please!"
|
144
159
|
end
|
145
160
|
|
146
161
|
it "should map the shipping price" do
|
147
162
|
param!("ValorFrete", "199,38")
|
148
|
-
|
163
|
+
subject.shipping.should == 199.38
|
149
164
|
|
150
165
|
param!("ValorFrete", "1.799,38")
|
151
|
-
|
166
|
+
subject.shipping.should == 1799.38
|
152
167
|
end
|
153
168
|
|
154
169
|
it "should map the transaction id" do
|
155
170
|
param!("TransacaoID", "ABCDEF")
|
156
|
-
|
171
|
+
subject.transaction_id.should == "ABCDEF"
|
157
172
|
end
|
158
173
|
end
|
159
174
|
|
@@ -164,17 +179,17 @@ describe PagSeguro::Notification do
|
|
164
179
|
|
165
180
|
it "should map 5 products" do
|
166
181
|
param!("NumItens", "5")
|
167
|
-
|
182
|
+
subject.products.should have(5).items
|
168
183
|
end
|
169
184
|
|
170
185
|
it "should map 25 products" do
|
171
186
|
param!("NumItens", "25")
|
172
|
-
|
187
|
+
subject.products.should have(25).items
|
173
188
|
end
|
174
189
|
|
175
190
|
it "should set attributes with defaults" do
|
176
191
|
set_product! :description => "Ruby 1.9 PDF", :price => "12,90", :id => 1
|
177
|
-
p =
|
192
|
+
p = subject.products.first
|
178
193
|
|
179
194
|
p[:description].should == "Ruby 1.9 PDF"
|
180
195
|
p[:price].should == 12.90
|
@@ -194,7 +209,7 @@ describe PagSeguro::Notification do
|
|
194
209
|
:quantity => 10
|
195
210
|
})
|
196
211
|
|
197
|
-
p =
|
212
|
+
p = subject.products.first
|
198
213
|
|
199
214
|
p[:description].should == "Rails Application Templates"
|
200
215
|
p[:price].should == 1.00
|
@@ -209,7 +224,7 @@ describe PagSeguro::Notification do
|
|
209
224
|
:price => ",90",
|
210
225
|
})
|
211
226
|
|
212
|
-
p =
|
227
|
+
p = subject.products.first
|
213
228
|
|
214
229
|
p[:price].should == 0.9
|
215
230
|
end
|
@@ -219,26 +234,26 @@ describe PagSeguro::Notification do
|
|
219
234
|
before do
|
220
235
|
PagSeguro.stub :developer? => false
|
221
236
|
@url = PagSeguro::Notification::API_URL
|
222
|
-
|
237
|
+
subject.stub :api_url => @url
|
223
238
|
end
|
224
239
|
|
225
240
|
it "should be valid" do
|
226
241
|
FakeWeb.register_uri(:post, @url, :body => "VERIFICADO")
|
227
|
-
|
242
|
+
subject.should be_valid
|
228
243
|
end
|
229
244
|
|
230
245
|
it "should be invalid" do
|
231
246
|
FakeWeb.register_uri(:post, @url, :body => "")
|
232
|
-
|
247
|
+
subject.should_not be_valid
|
233
248
|
end
|
234
249
|
|
235
250
|
it "should force validation" do
|
236
251
|
FakeWeb.register_uri(:post, @url, :body => "")
|
237
|
-
|
252
|
+
subject.should_not be_valid
|
238
253
|
|
239
254
|
FakeWeb.register_uri(:post, @url, :body => "VERIFICADO")
|
240
|
-
|
241
|
-
|
255
|
+
subject.should_not be_valid
|
256
|
+
subject.should be_valid(:nocache)
|
242
257
|
end
|
243
258
|
|
244
259
|
it "should set the authenticity token from the initialization" do
|
@@ -262,7 +277,7 @@ describe PagSeguro::Notification do
|
|
262
277
|
Net::HTTP.should_receive(:new).and_return(mock("http").as_null_object)
|
263
278
|
Net::HTTP::Post.should_receive(:new).and_return(post)
|
264
279
|
|
265
|
-
|
280
|
+
subject.valid?
|
266
281
|
end
|
267
282
|
|
268
283
|
it "should propagate params" do
|
@@ -281,45 +296,45 @@ describe PagSeguro::Notification do
|
|
281
296
|
Net::HTTP.should_receive(:new).and_return(mock("http").as_null_object)
|
282
297
|
Net::HTTP::Post.should_receive(:new).and_return(post)
|
283
298
|
|
284
|
-
|
299
|
+
subject.valid?
|
285
300
|
end
|
286
301
|
end
|
287
302
|
|
288
303
|
private
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
def set_payment!(value)
|
294
|
-
param!("TipoPagamento", value)
|
295
|
-
end
|
296
|
-
|
297
|
-
def param!(name, value)
|
298
|
-
@notification.params.merge!(name => value)
|
299
|
-
end
|
300
|
-
|
301
|
-
def set_product!(options={})
|
302
|
-
@__products ||= []
|
303
|
-
|
304
|
-
i = @__products.size + 1
|
304
|
+
def set_status!(value)
|
305
|
+
param!("StatusTransacao", value)
|
306
|
+
end
|
305
307
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
:shipping => "0,00"
|
310
|
-
}.merge(options)
|
308
|
+
def set_payment!(value)
|
309
|
+
param!("TipoPagamento", value)
|
310
|
+
end
|
311
311
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
"ProdValor_#{i}" => options[:price].to_s,
|
316
|
-
"ProdFrete_#{i}" => options[:shipping].to_s,
|
317
|
-
"ProdExtras_#{i}" => options[:fees].to_s,
|
318
|
-
"ProdQuantidade_#{i}" => options[:quantity].to_s
|
319
|
-
}
|
312
|
+
def param!(name, value)
|
313
|
+
subject.params.merge!(name => value)
|
314
|
+
end
|
320
315
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
316
|
+
def set_product!(options={})
|
317
|
+
@__products ||= []
|
318
|
+
|
319
|
+
i = @__products.size + 1
|
320
|
+
|
321
|
+
options = {
|
322
|
+
:quantity => 1,
|
323
|
+
:fees => "0,00",
|
324
|
+
:shipping => "0,00"
|
325
|
+
}.merge(options)
|
326
|
+
|
327
|
+
@__products << {
|
328
|
+
"ProdID_#{i}" => options[:id].to_s,
|
329
|
+
"ProdDescricao_#{i}" => options[:description].to_s,
|
330
|
+
"ProdValor_#{i}" => options[:price].to_s,
|
331
|
+
"ProdFrete_#{i}" => options[:shipping].to_s,
|
332
|
+
"ProdExtras_#{i}" => options[:fees].to_s,
|
333
|
+
"ProdQuantidade_#{i}" => options[:quantity].to_s
|
334
|
+
}
|
335
|
+
|
336
|
+
subject.params.merge!(@__products.last)
|
337
|
+
subject.params.merge!("NumItens" => i)
|
338
|
+
@__products.last
|
339
|
+
end
|
325
340
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: pagseguro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 7
|
5
|
-
version: 0.1.11.
|
5
|
+
version: 0.1.11.beta2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nando Vieira
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/tasks/pagseguro.rake
|
115
115
|
- pagseguro.gemspec
|
116
116
|
- spec/controllers/developer_controller_spec.rb
|
117
|
+
- spec/fixtures/notification.yml
|
117
118
|
- spec/helpers/helper_spec.rb
|
118
119
|
- spec/pagseguro/faker_spec.rb
|
119
120
|
- spec/pagseguro/notification_spec.rb
|
@@ -165,6 +166,7 @@ specification_version: 3
|
|
165
166
|
summary: The official PagSeguro library
|
166
167
|
test_files:
|
167
168
|
- spec/controllers/developer_controller_spec.rb
|
169
|
+
- spec/fixtures/notification.yml
|
168
170
|
- spec/helpers/helper_spec.rb
|
169
171
|
- spec/pagseguro/faker_spec.rb
|
170
172
|
- spec/pagseguro/notification_spec.rb
|