boutique 0.0.7 → 0.0.8
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/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:
|