boutique 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +14 -2
- data/boutique +4 -1
- data/lib/boutique.rb +8 -4
- data/test/app_test.rb +1 -1
- data/test/model_test.rb +1 -1
- metadata +11 -11
data/README.md
CHANGED
@@ -11,12 +11,19 @@ Installation
|
|
11
11
|
You'll need some private/public certificates:
|
12
12
|
|
13
13
|
% openssl genrsa -out private.pem 1024
|
14
|
-
% openssl req -new -key private.pem -x509 -days
|
14
|
+
% openssl req -new -key private.pem -x509 -days 1095 -out public.pem
|
15
15
|
|
16
|
-
|
16
|
+
Make sure the email you use is the same as your PayPal merchant email, or else
|
17
|
+
PayPal will reject it.
|
18
|
+
|
19
|
+
You can download PayPal's public certificate under `Profile > Encrypted
|
17
20
|
Payment Settings`. Click the download button for PayPal Public Certificate.
|
18
21
|
Rename this certificate to something like `paypal.pem`.
|
19
22
|
|
23
|
+
While you're there, upload the `public.pem` certificate you just generated. Copy
|
24
|
+
the `Cert ID`, you'll use it for the `pem_cert_id` field in your config. You
|
25
|
+
can block unencrypted requests from `Website Payment Preferences`.
|
26
|
+
|
20
27
|
Setup a `config.ru` file and run it like any other Sinatra application. You
|
21
28
|
can configure what products you sell here:
|
22
29
|
|
@@ -84,6 +91,11 @@ Development
|
|
84
91
|
Tests are setup to run individually via `ruby test/*_test.rb` or run them all
|
85
92
|
via `rake`.
|
86
93
|
|
94
|
+
TODO
|
95
|
+
====
|
96
|
+
|
97
|
+
* BUG: logs are required especially for errors
|
98
|
+
|
87
99
|
License
|
88
100
|
=======
|
89
101
|
|
data/boutique
CHANGED
@@ -42,8 +42,11 @@ module Boutique
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def self.migrate
|
45
|
-
load_config
|
45
|
+
load_config
|
46
|
+
DataMapper.auto_upgrade!
|
47
|
+
rescue DataObjects::SyntaxError => e
|
46
48
|
DataMapper.auto_upgrade!
|
49
|
+
load_config
|
47
50
|
end
|
48
51
|
|
49
52
|
def self.stats(code)
|
data/lib/boutique.rb
CHANGED
@@ -9,8 +9,10 @@ require 'json'
|
|
9
9
|
require 'openssl'
|
10
10
|
require 'pony'
|
11
11
|
|
12
|
+
DataMapper::Model.raise_on_save_failure = true
|
13
|
+
|
12
14
|
module Boutique
|
13
|
-
VERSION = '0.0.
|
15
|
+
VERSION = '0.0.8'
|
14
16
|
|
15
17
|
class << self
|
16
18
|
def configure(setup_db=true)
|
@@ -238,7 +240,7 @@ module Boutique
|
|
238
240
|
:body => "Thanks for purchasing #{self.product.name}! " +
|
239
241
|
"To download it, follow this link:\n\n" +
|
240
242
|
" #{self.product.return_url}?b=#{boutique_id}\n\n" +
|
241
|
-
"
|
243
|
+
"Please reply if you have any troubles.\n"
|
242
244
|
)
|
243
245
|
end
|
244
246
|
|
@@ -295,8 +297,8 @@ module Boutique
|
|
295
297
|
error do
|
296
298
|
Pony.mail(
|
297
299
|
:to => Boutique.config.dev_email,
|
298
|
-
:from => "boutique@#{Boutique.config.dev_email.split('@')[1..-1]}",
|
299
|
-
:subject => '
|
300
|
+
:from => "boutique@#{Boutique.config.dev_email.split('@')[1..-1].join}",
|
301
|
+
:subject => 'Boutique Error',
|
300
302
|
:body => request.env['sinatra.error'].to_s
|
301
303
|
) if Boutique.config.dev_email
|
302
304
|
end
|
@@ -324,6 +326,8 @@ module Boutique
|
|
324
326
|
if !purchase.completed? &&
|
325
327
|
params['txn_id'] &&
|
326
328
|
params['payment_status'] &&
|
329
|
+
params['first_name'] &&
|
330
|
+
params['payer_email'] &&
|
327
331
|
params['receiver_email'] == Boutique.config.pp_email
|
328
332
|
purchase.complete(params['txn_id'], params['payer_email'], params['first_name'])
|
329
333
|
purchase.send_mail
|
data/test/app_test.rb
CHANGED
@@ -25,7 +25,7 @@ class AppTest < BoutiqueTest
|
|
25
25
|
refute(purchase.completed?)
|
26
26
|
assert_nil(Pony.last_mail)
|
27
27
|
|
28
|
-
post "/notify/#{purchase.boutique_id}?payment_status=Completed&txn_id=1337&receiver_email=#{Boutique.config.pp_email}"
|
28
|
+
post "/notify/#{purchase.boutique_id}?payment_status=Completed&txn_id=1337&receiver_email=#{Boutique.config.pp_email}&payer_email=john@mailinator.com&first_name=John"
|
29
29
|
assert(last_response.ok?)
|
30
30
|
|
31
31
|
purchase.reload
|
data/test/model_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boutique
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-01-31 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70164141101480 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70164141101480
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: data_mapper
|
27
|
-
requirement: &
|
27
|
+
requirement: &70164141100940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70164141100940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pony
|
38
|
-
requirement: &
|
38
|
+
requirement: &70164141100480 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70164141100480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
|
-
requirement: &
|
49
|
+
requirement: &70164141099920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70164141099920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: shotgun
|
60
|
-
requirement: &
|
60
|
+
requirement: &70164141099440 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70164141099440
|
69
69
|
description: A Sinatra module which accepts payments via PayPal and gives customers
|
70
70
|
a secret URL to download your product.
|
71
71
|
email:
|