paypal_adaptive 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +6 -4
- data/lib/paypal_adaptive/config.rb +1 -6
- data/lib/paypal_adaptive/request.rb +17 -2
- data/lib/paypal_adaptive/version.rb +1 -1
- data/test/test_helper.rb +1 -0
- data/test/unit/config_test.rb +0 -6
- data/test/unit/request_test.rb +27 -0
- metadata +11 -11
data/README.markdown
CHANGED
@@ -77,7 +77,7 @@ Additionally, you can make calls to Paypal Adaptive's other APIs:
|
|
77
77
|
Input is just a Hash just like the pay method. Refer to the Paypal manual for more details.
|
78
78
|
|
79
79
|
### Certificate validation
|
80
|
-
You can set the location of the
|
80
|
+
You can set the location of the key file you downloaded from PayPal, in paypal_adaptive.yml
|
81
81
|
for each environment, e.g.:
|
82
82
|
|
83
83
|
development:
|
@@ -86,12 +86,14 @@ for each environment, e.g.:
|
|
86
86
|
password: "sandbox_password"
|
87
87
|
signature: "sandbox_signature"
|
88
88
|
application_id: "sandbox_app_id"
|
89
|
-
ssl_cert_file: "/path/to/your/
|
89
|
+
ssl_cert_file: "/path/to/your/private.key"
|
90
90
|
|
91
|
-
If
|
92
|
-
this location exists, otherwise falling back to the cacert.pem file included with paypal_adaptive.
|
91
|
+
The ssl_cert_file should point to your cert_key_pem.txt that is downloaded through the paypal developer interface. It will contain a section that specifies the RSA private key and another section that specifies a certificate. If this is left empty, paypal_adaptive will attempt to use the signature method of validation with PayPal, so your signature config must not be nil.
|
93
92
|
|
94
93
|
## Changelog
|
94
|
+
0.2.9
|
95
|
+
Fixed cert issues in last release. Exception handling for connection.
|
96
|
+
|
95
97
|
0.2.8
|
96
98
|
Cert fixes and ruby 1.9.3 files. Thanks tonyla.
|
97
99
|
|
@@ -43,12 +43,7 @@ module PaypalAdaptive
|
|
43
43
|
}
|
44
44
|
@headers.merge!({"X-PAYPAL-SECURITY-SIGNATURE" => config['signature']}) if config['signature']
|
45
45
|
|
46
|
-
|
47
|
-
@ssl_cert_file = config['ssl_cert_file']
|
48
|
-
else
|
49
|
-
@ssl_cert_file = File.join(File.dirname(__FILE__), "..", "..", "cacert.pem")
|
50
|
-
end
|
51
|
-
puts "warning: coulf not find file: #{@ssl_cert_file}" unless File.exists?(@ssl_cert_file.to_s)
|
46
|
+
@ssl_cert_file = config['ssl_cert_file'] unless config['ssl_cert_file'].blank?
|
52
47
|
end
|
53
48
|
end
|
54
49
|
|
@@ -75,6 +75,10 @@ module PaypalAdaptive
|
|
75
75
|
PaypalAdaptive::Response.new(post(data, path), @env)
|
76
76
|
end
|
77
77
|
|
78
|
+
def rescue_error_message(e, message = nil)
|
79
|
+
{"responseEvelope" => {"ack" => "Failure"}, "error" => [{"message" => (message ||= e)}]}
|
80
|
+
end
|
81
|
+
|
78
82
|
def post(data, path)
|
79
83
|
#hack fix: JSON.unparse doesn't work in Rails 2.3.5; only {}.to_json does..
|
80
84
|
api_request_data = JSON.unparse(data) rescue data.to_json
|
@@ -90,9 +94,20 @@ module PaypalAdaptive
|
|
90
94
|
end
|
91
95
|
http.ca_path = @ssl_cert_path unless @ssl_cert_path.nil?
|
92
96
|
|
93
|
-
|
97
|
+
begin
|
98
|
+
response_data = http.post(path, api_request_data, @headers)
|
99
|
+
return JSON.parse(response_data.body)
|
100
|
+
rescue Net::HTTPBadGateway => e
|
101
|
+
rescue_error_message(e, "Error reading from remote server.")
|
102
|
+
rescue Exception => e
|
103
|
+
case e
|
104
|
+
when Errno::ECONNRESET
|
105
|
+
rescue_error_message(e, "Connection Reset. Request invalid URL.")
|
106
|
+
else
|
107
|
+
rescue_error_message(e)
|
108
|
+
end
|
109
|
+
end
|
94
110
|
|
95
|
-
JSON.parse(response_data)
|
96
111
|
end
|
97
112
|
end
|
98
113
|
|
data/test/test_helper.rb
CHANGED
data/test/unit/config_test.rb
CHANGED
@@ -7,12 +7,6 @@ class ConfigTest < Test::Unit::TestCase
|
|
7
7
|
assert_equal nil, @config.ssl_cert_path
|
8
8
|
end
|
9
9
|
|
10
|
-
def test_default_ssl_cert_file
|
11
|
-
@config = PaypalAdaptive::Config.new("test", { "ssl_cert_file" => "" })
|
12
|
-
assert File.exists?(@config.ssl_cert_file)
|
13
|
-
assert_equal nil, @config.ssl_cert_path
|
14
|
-
end
|
15
|
-
|
16
10
|
def test_erb_tags
|
17
11
|
ENV['paypal.username'] = 'account@email.com'
|
18
12
|
ENV['paypal.password'] = 's3krit'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RequestTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@schema_filepath = File.join(File.dirname(__FILE__),"..", "..", "lib","pay_request_schema.json")
|
6
|
+
@schema = File.open(@schema_filepath, "rb"){|f| JSON.parse(f.read)}
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_post_should_return_hash
|
10
|
+
request = PaypalAdaptive::Request.new('test')
|
11
|
+
response = request.post({:data => true}, '/AdaptivePayments/Pay')
|
12
|
+
assert_instance_of Hash, response
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_post_should_return_hash_when_request_is_invalid
|
16
|
+
request = PaypalAdaptive::Request.new('test')
|
17
|
+
response = request.post({:data => true}, '/some-random-url')
|
18
|
+
assert_instance_of Hash, response
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_post_shoudl_return_error_message_when_request_is_invalid
|
22
|
+
request = PaypalAdaptive::Request.new('test')
|
23
|
+
response = request.post({:data => true}, '/some-random-url')
|
24
|
+
assert_not_nil response["error"][0]["message"]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paypal_adaptive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
13
|
-
default_executable:
|
12
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: json
|
17
|
-
requirement: &
|
16
|
+
requirement: &70231058458960 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: 1.6.0
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *70231058458960
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: jsonschema
|
28
|
-
requirement: &
|
27
|
+
requirement: &70231058458120 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
version: 2.0.0
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *70231058458120
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: rake
|
39
|
-
requirement: &
|
38
|
+
requirement: &70231058457000 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ~>
|
@@ -44,7 +43,7 @@ dependencies:
|
|
44
43
|
version: '0.8'
|
45
44
|
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *70231058457000
|
48
47
|
description: Lightweight wrapper for Paypal's Adaptive Payments API
|
49
48
|
email:
|
50
49
|
- tommy.chheng@gmail.com
|
@@ -90,7 +89,7 @@ files:
|
|
90
89
|
- test/unit/payment_details_test.rb
|
91
90
|
- test/unit/payment_options_test.rb
|
92
91
|
- test/unit/preapproval_test.rb
|
93
|
-
|
92
|
+
- test/unit/request_test.rb
|
94
93
|
homepage: http://github.com/tc/paypal_adaptive
|
95
94
|
licenses: []
|
96
95
|
post_install_message:
|
@@ -111,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
110
|
version: '0'
|
112
111
|
requirements: []
|
113
112
|
rubyforge_project: paypal_adaptive
|
114
|
-
rubygems_version: 1.
|
113
|
+
rubygems_version: 1.8.15
|
115
114
|
signing_key:
|
116
115
|
specification_version: 3
|
117
116
|
summary: Lightweight wrapper for Paypal's Adaptive Payments API
|
@@ -138,3 +137,4 @@ test_files:
|
|
138
137
|
- test/unit/payment_details_test.rb
|
139
138
|
- test/unit/payment_options_test.rb
|
140
139
|
- test/unit/preapproval_test.rb
|
140
|
+
- test/unit/request_test.rb
|