pagseguro 0.1.11.beta1 → 0.1.11.beta2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|