paypal 1.9.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +3 -0
- data/Rakefile +1 -1
- data/lib/helper.rb +23 -1
- data/lib/notification.rb +12 -5
- data/test/helper_test.rb +16 -8
- data/test/mocks/http_mock.rb +47 -0
- metadata +5 -3
data/README
CHANGED
@@ -95,6 +95,9 @@ uninitalized constant Paypal - Make sure your ruby has openssl support
|
|
95
95
|
|
96
96
|
== Changelog
|
97
97
|
|
98
|
+
2006-04-20 -- 2.0.0
|
99
|
+
* Uses paypal extended syntax. The plugin can now submit shipping and billing addresses using the paypal_address helper.
|
100
|
+
|
98
101
|
2006-04-20 -- 1.7.0
|
99
102
|
* Now a rails plugin
|
100
103
|
|
data/Rakefile
CHANGED
data/lib/helper.rb
CHANGED
@@ -80,7 +80,8 @@ module Paypal
|
|
80
80
|
raise ArgumentError, "Unknown option #{misses.inspect}" if not misses.empty?
|
81
81
|
|
82
82
|
params = {
|
83
|
-
:cmd => "
|
83
|
+
:cmd => "_ext-enter",
|
84
|
+
:redirect_cmd => "_xclick",
|
84
85
|
:quantity => 1,
|
85
86
|
:business => business,
|
86
87
|
:item_number => item_number,
|
@@ -145,6 +146,27 @@ module Paypal
|
|
145
146
|
end.join("\n")
|
146
147
|
end
|
147
148
|
|
149
|
+
|
150
|
+
# Pass an address to paypal so that all singup forms can be prefilled
|
151
|
+
#
|
152
|
+
# * <tt>email</tt> -- Customer's email address
|
153
|
+
# * <tt>first_name</tt> -- Customer's first name. Must be alpha-numeric, with a 32 character limit
|
154
|
+
# * <tt>last_name</tt> -- Customer's last name. Must be alpha-numeric, with a 64 character limit
|
155
|
+
# * <tt>address1</tt> -- First line of customer's address. Must be alpha-numeric, with a 100 character limit
|
156
|
+
# * <tt>address2</tt> -- Second line of customer's address. Must be alpha-numeric, with a 100 character limit
|
157
|
+
# * <tt>city</tt> -- City of customer's address. Must be alpha-numeric, with a 100 character limit
|
158
|
+
# * <tt>state</tt> -- State of customer's address. Must be official 2 letter abbreviation
|
159
|
+
# * <tt>zip</tt> -- Zip code of customer's address
|
160
|
+
# * <tt>night_phone_a</tt> -- Area code of customer's night telephone number
|
161
|
+
# * <tt>night_phone_b</tt> -- First three digits of customer's night telephone number
|
162
|
+
# * <tt>day_phone_a</tt> -- Area code of customer's daytime telephone number
|
163
|
+
# * <tt>day_phone_b</tt> -- First three digits of customer's daytime telephon
|
164
|
+
def paypal_address(options = {})
|
165
|
+
options.collect do |key, value|
|
166
|
+
tag(:input, :type => 'hidden', :name => key, :value => value)
|
167
|
+
end.join("\n")
|
168
|
+
end
|
169
|
+
|
148
170
|
private
|
149
171
|
|
150
172
|
# See https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html for details on the following options.
|
data/lib/notification.rb
CHANGED
@@ -147,20 +147,27 @@ jZJTylbJQ1b5PBBjGiP0PpK48cdF
|
|
147
147
|
# This is the invocie which you passed to paypal
|
148
148
|
def invoice
|
149
149
|
params['invoice']
|
150
|
+
end
|
151
|
+
|
152
|
+
# This is the invocie which you passed to paypal
|
153
|
+
def test?
|
154
|
+
params['test_ipn'] == '1'
|
150
155
|
end
|
151
156
|
|
152
157
|
# This is the custom field which you passed to paypal
|
153
158
|
def invoice
|
154
|
-
params['
|
159
|
+
params['custom']
|
160
|
+
end
|
161
|
+
|
162
|
+
def gross_cents
|
163
|
+
(gross.to_f * 100.0).round
|
155
164
|
end
|
156
165
|
|
157
166
|
# This combines the gross and currency and returns a proper Money object.
|
158
167
|
# this requires the money library located at http://dist.leetsoft.com/api/money
|
159
168
|
def amount
|
160
|
-
|
161
|
-
|
162
|
-
return Money.new(amount, currency) rescue ArgumentError
|
163
|
-
return Money.new(amount) # maybe you have an own money object which doesn't take a currency?
|
169
|
+
return Money.new(gross_cents, currency) rescue ArgumentError
|
170
|
+
return Money.new(gross_cents) # maybe you have an own money object which doesn't take a currency?
|
164
171
|
end
|
165
172
|
|
166
173
|
# reset the notification.
|
data/test/helper_test.rb
CHANGED
@@ -51,12 +51,13 @@ class HelperTest < Test::Unit::TestCase
|
|
51
51
|
assert_inputs({ "amount" => "500.00",
|
52
52
|
"business" => "bob@bigbusiness.com",
|
53
53
|
"charset" => "utf-8",
|
54
|
-
"cmd" => "
|
54
|
+
"cmd" => "_ext-enter",
|
55
55
|
"currency_code" => "USD",
|
56
56
|
"item_name" => "Store purchase",
|
57
57
|
"item_number" => "100",
|
58
58
|
"no_note" => "1",
|
59
59
|
"no_shipping" => "1",
|
60
|
+
"redirect_cmd" => "_xclick",
|
60
61
|
"quantity" => "1"}, actual)
|
61
62
|
end
|
62
63
|
|
@@ -65,13 +66,14 @@ class HelperTest < Test::Unit::TestCase
|
|
65
66
|
assert_inputs({ "amount" => "500.00",
|
66
67
|
"business" => "bob@bigbusiness.com",
|
67
68
|
"charset" => "utf-8",
|
68
|
-
"cmd" => "
|
69
|
+
"cmd" => "_ext-enter",
|
69
70
|
"currency_code" => "USD",
|
70
71
|
"item_name" => "Store purchase",
|
71
72
|
"item_number" => "100",
|
72
73
|
"no_note" => "1",
|
73
74
|
"no_shipping" => "1",
|
74
75
|
"quantity" => "1",
|
76
|
+
"redirect_cmd" => "_xclick",
|
75
77
|
"tax" => "5.00"}, actual)
|
76
78
|
end
|
77
79
|
|
@@ -80,13 +82,14 @@ class HelperTest < Test::Unit::TestCase
|
|
80
82
|
assert_inputs({ "amount" => "500.00",
|
81
83
|
"business" => "bob@bigbusiness.com",
|
82
84
|
"charset" => "utf-8",
|
83
|
-
"cmd" => "
|
85
|
+
"cmd" => "_ext-enter",
|
84
86
|
"currency_code" => "USD",
|
85
87
|
"invoice" => "Cool invoice!",
|
86
88
|
"item_name" => "Store purchase",
|
87
89
|
"item_number" => "100",
|
88
90
|
"no_note" => "1",
|
89
91
|
"no_shipping" => "1",
|
92
|
+
"redirect_cmd" => "_xclick",
|
90
93
|
"quantity" => "1"}, actual)
|
91
94
|
end
|
92
95
|
|
@@ -95,14 +98,16 @@ class HelperTest < Test::Unit::TestCase
|
|
95
98
|
assert_inputs({ "amount" => "500.00",
|
96
99
|
"business" => "bob@bigbusiness.com",
|
97
100
|
"charset" => "utf-8",
|
98
|
-
"cmd" => "
|
101
|
+
"cmd" => "_ext-enter",
|
99
102
|
"currency_code" => "USD",
|
100
103
|
"custom" => "Custom",
|
101
104
|
"item_name" => "Store purchase",
|
102
105
|
"item_number" => "100",
|
103
106
|
"no_note" => "1",
|
104
107
|
"no_shipping" => "1",
|
105
|
-
"quantity" => "1"
|
108
|
+
"quantity" => "1",
|
109
|
+
"redirect_cmd" => "_xclick",
|
110
|
+
}, actual)
|
106
111
|
end
|
107
112
|
|
108
113
|
def test_paypal_setup_with_float
|
@@ -110,12 +115,13 @@ class HelperTest < Test::Unit::TestCase
|
|
110
115
|
assert_inputs({ "amount" => "50.00",
|
111
116
|
"business" => "bob@bigbusiness.com",
|
112
117
|
"charset" => "utf-8",
|
113
|
-
"cmd" => "
|
118
|
+
"cmd" => "_ext-enter",
|
114
119
|
"currency_code" => "CAD",
|
115
120
|
"item_name" => "Store purchase",
|
116
121
|
"item_number" => "100",
|
117
122
|
"no_note" => "1",
|
118
123
|
"no_shipping" => "1",
|
124
|
+
"redirect_cmd" => "_xclick",
|
119
125
|
"quantity" => "1"}, actual)
|
120
126
|
end
|
121
127
|
|
@@ -124,12 +130,13 @@ class HelperTest < Test::Unit::TestCase
|
|
124
130
|
assert_inputs({ "amount" => "50.00",
|
125
131
|
"business" => "bob@bigbusiness.com",
|
126
132
|
"charset" => "utf-8",
|
127
|
-
"cmd" => "
|
133
|
+
"cmd" => "_ext-enter",
|
128
134
|
"currency_code" => "CAD",
|
129
135
|
"item_name" => "Store purchase",
|
130
136
|
"item_number" => "100",
|
131
137
|
"no_note" => "1",
|
132
138
|
"no_shipping" => "1",
|
139
|
+
"redirect_cmd" => "_xclick",
|
133
140
|
"quantity" => "1"}, actual)
|
134
141
|
end
|
135
142
|
|
@@ -139,7 +146,7 @@ class HelperTest < Test::Unit::TestCase
|
|
139
146
|
"business" => "bob@bigbusiness.com",
|
140
147
|
"cancel_return" => "http://www.bigbusiness.com",
|
141
148
|
"charset" => "utf-8",
|
142
|
-
"cmd" => "
|
149
|
+
"cmd" => "_ext-enter",
|
143
150
|
"currency_code" => "USD",
|
144
151
|
"item_name" => "MegaBob's shop purchase",
|
145
152
|
"item_number" => "100",
|
@@ -147,6 +154,7 @@ class HelperTest < Test::Unit::TestCase
|
|
147
154
|
"no_shipping" => "0",
|
148
155
|
"notify_url" => "http://www.bigbusiness.com",
|
149
156
|
"quantity" => "1",
|
157
|
+
"redirect_cmd" => "_xclick",
|
150
158
|
"return" => "http://www.bigbusiness.com"}, actual )
|
151
159
|
end
|
152
160
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Net
|
2
|
+
remove_const "HTTP"
|
3
|
+
|
4
|
+
class Response
|
5
|
+
def initialize(result)
|
6
|
+
@result = result
|
7
|
+
end
|
8
|
+
|
9
|
+
def body
|
10
|
+
@result
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Request < Struct.new(:host, :port, :query, :post_data)
|
15
|
+
|
16
|
+
cattr_accessor :fail
|
17
|
+
@@fail = false
|
18
|
+
|
19
|
+
def post(query, post)
|
20
|
+
self.query = query
|
21
|
+
self.post_data = post
|
22
|
+
Response.new(self.class.fail ? "INVALID": "VERIFIED")
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class Net::HTTP
|
28
|
+
|
29
|
+
|
30
|
+
def self.start(host, port)
|
31
|
+
request = Request.new
|
32
|
+
request.host = host
|
33
|
+
request.port = port
|
34
|
+
|
35
|
+
@packages ||= []
|
36
|
+
@packages << request
|
37
|
+
|
38
|
+
yield request
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.packages
|
42
|
+
@packages
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: paypal
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
7
|
-
date: 2006-
|
6
|
+
version: 2.0.0
|
7
|
+
date: 2006-06-30 00:00:00 -04:00
|
8
8
|
summary: Paypal IPN integration library for rails and other web applications
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
25
25
|
platform: ruby
|
26
26
|
signing_key:
|
27
27
|
cert_chain:
|
28
|
+
post_install_message:
|
28
29
|
authors:
|
29
30
|
- Tobias Luetke
|
30
31
|
files:
|
@@ -41,6 +42,7 @@ files:
|
|
41
42
|
- test/mocks
|
42
43
|
- test/notification_test.rb
|
43
44
|
- test/remote
|
45
|
+
- test/mocks/http_mock.rb
|
44
46
|
- test/mocks/method_mock.rb
|
45
47
|
- test/remote/remote_test.rb
|
46
48
|
test_files: []
|