paypal-sdk-rest 0.10.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +44 -0
- data/lib/generators/paypal/sdk/USAGE +3 -0
- data/lib/generators/paypal/sdk/install_generator.rb +17 -0
- data/lib/generators/paypal/sdk/templates/paypal.rb +2 -0
- data/lib/generators/paypal/sdk/templates/paypal.yml +31 -0
- data/lib/paypal-sdk-core.rb +38 -0
- data/lib/paypal-sdk/core/api.rb +20 -0
- data/lib/paypal-sdk/core/api/base.rb +162 -0
- data/lib/paypal-sdk/core/api/data_types/array_with_block.rb +44 -0
- data/lib/paypal-sdk/core/api/data_types/base.rb +224 -0
- data/lib/paypal-sdk/core/api/data_types/enum.rb +26 -0
- data/lib/paypal-sdk/core/api/data_types/simple_types.rb +52 -0
- data/lib/paypal-sdk/core/api/ipn.rb +66 -0
- data/lib/paypal-sdk/core/api/rest.rb +163 -0
- data/lib/paypal-sdk/core/authentication.rb +66 -0
- data/lib/paypal-sdk/core/config.rb +249 -0
- data/lib/paypal-sdk/core/credential.rb +16 -0
- data/lib/paypal-sdk/core/credential/base.rb +27 -0
- data/lib/paypal-sdk/core/credential/certificate.rb +32 -0
- data/lib/paypal-sdk/core/credential/signature.rb +22 -0
- data/lib/paypal-sdk/core/credential/third_party/subject.rb +25 -0
- data/lib/paypal-sdk/core/credential/third_party/token.rb +39 -0
- data/lib/paypal-sdk/core/exceptions.rb +96 -0
- data/lib/paypal-sdk/core/logging.rb +45 -0
- data/lib/paypal-sdk/core/openid_connect.rb +122 -0
- data/lib/paypal-sdk/core/openid_connect/api.rb +49 -0
- data/lib/paypal-sdk/core/openid_connect/data_types.rb +73 -0
- data/lib/paypal-sdk/core/openid_connect/get_api.rb +28 -0
- data/lib/paypal-sdk/core/openid_connect/request_data_type.rb +52 -0
- data/lib/paypal-sdk/core/openid_connect/set_api.rb +36 -0
- data/lib/paypal-sdk/core/util.rb +11 -0
- data/lib/paypal-sdk/core/util/http_helper.rb +159 -0
- data/lib/paypal-sdk/core/util/oauth_signature.rb +64 -0
- data/lib/paypal-sdk/core/util/ordered_hash.rb +165 -0
- data/lib/paypal-sdk/rest/data_types.rb +1 -0
- data/lib/paypal-sdk/rest/version.rb +1 -1
- data/spec/config/paypal.yml +27 -0
- data/spec/config/sample_data.yml +3 -0
- data/spec/core/api/data_type_spec.rb +189 -0
- data/spec/core/api/rest_spec.rb +147 -0
- data/spec/core/config_spec.rb +192 -0
- data/spec/core/logging_spec.rb +28 -0
- data/spec/core/openid_connect_spec.rb +144 -0
- data/spec/log/http.log +71 -32
- data/spec/log/rest_http.log +133 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/support/sample_data.rb +5 -0
- metadata +82 -5
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
describe PayPal::SDK::Core::Logging do
|
5
|
+
Logging = PayPal::SDK::Core::Logging
|
6
|
+
|
7
|
+
class TestLogging
|
8
|
+
include Logging
|
9
|
+
end
|
10
|
+
|
11
|
+
before :each do
|
12
|
+
@logger_file = StringIO.new
|
13
|
+
Logging.logger = Logger.new(@logger_file)
|
14
|
+
@test_logging = TestLogging.new
|
15
|
+
end
|
16
|
+
|
17
|
+
it "get logger object" do
|
18
|
+
@test_logging.logger.should be_a Logger
|
19
|
+
end
|
20
|
+
|
21
|
+
it "write message to logger" do
|
22
|
+
test_message = "Example log message!!!"
|
23
|
+
@test_logging.logger.info(test_message)
|
24
|
+
@logger_file.rewind
|
25
|
+
@logger_file.read.should match test_message
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PayPal::SDK::OpenIDConnect do
|
4
|
+
OpenIDConnect = PayPal::SDK::OpenIDConnect
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
OpenIDConnect.set_config( :client_id => "client_id", :openid_redirect_uri => "http://google.com" )
|
8
|
+
end
|
9
|
+
|
10
|
+
it "Validate user_agent" do
|
11
|
+
OpenIDConnect::API.user_agent.should match "PayPalSDK/openid-connect-ruby"
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "generate_authorize_url" do
|
15
|
+
|
16
|
+
it "generate autorize_url" do
|
17
|
+
url = OpenIDConnect::Tokeninfo.authorize_url
|
18
|
+
url.should match "client_id=client_id"
|
19
|
+
url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
|
20
|
+
url.should match "scope=openid"
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "sandbox" do
|
24
|
+
before do
|
25
|
+
PayPal::SDK.configure(:mode => "sandbox")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "generates a sandbox authorize url" do
|
29
|
+
url = OpenIDConnect::Tokeninfo.authorize_url
|
30
|
+
url.should match "sandbox.paypal.com"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "Override authorize_url params" do
|
36
|
+
url = OpenIDConnect.authorize_url(
|
37
|
+
:client_id => "new_client_id",
|
38
|
+
:redirect_uri => "http://example.com",
|
39
|
+
:scope => "openid profile")
|
40
|
+
url.should match "client_id=new_client_id"
|
41
|
+
url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://example.com")}")
|
42
|
+
url.should match Regexp.escape("scope=#{CGI.escape("openid profile")}")
|
43
|
+
end
|
44
|
+
|
45
|
+
it "Generate logout_url" do
|
46
|
+
url = OpenIDConnect.logout_url
|
47
|
+
url.should match "logout=true"
|
48
|
+
url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
|
49
|
+
url.should_not match "id_token"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "Override logout_url params" do
|
53
|
+
url = OpenIDConnect.logout_url({
|
54
|
+
:redirect_uri => "http://example.com",
|
55
|
+
:id_token => "testing" })
|
56
|
+
url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://example.com")}")
|
57
|
+
url.should match "id_token=testing"
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "Validation" do
|
61
|
+
it "Create token" do
|
62
|
+
lambda{
|
63
|
+
tokeninfo = OpenIDConnect::Tokeninfo.create("invalid-autorize-code")
|
64
|
+
}.should raise_error PayPal::SDK::Core::Exceptions::BadRequest
|
65
|
+
end
|
66
|
+
|
67
|
+
it "Refresh token" do
|
68
|
+
lambda{
|
69
|
+
tokeninfo = OpenIDConnect::Tokeninfo.refresh("invalid-refresh-token")
|
70
|
+
}.should raise_error PayPal::SDK::Core::Exceptions::BadRequest
|
71
|
+
end
|
72
|
+
|
73
|
+
it "Get userinfo" do
|
74
|
+
lambda{
|
75
|
+
userinfo = OpenIDConnect::Userinfo.get("invalid-access-token")
|
76
|
+
}.should raise_error PayPal::SDK::Core::Exceptions::UnauthorizedAccess
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "Tokeninfo" do
|
81
|
+
before do
|
82
|
+
@tokeninfo = OpenIDConnect::Tokeninfo.new( :access_token => "test_access_token",
|
83
|
+
:refresh_token => "test_refresh_token",
|
84
|
+
:id_token => "test_id_token" )
|
85
|
+
end
|
86
|
+
|
87
|
+
it "create" do
|
88
|
+
OpenIDConnect::Tokeninfo.api.stub( :post => { :access_token => "access_token" } )
|
89
|
+
tokeninfo = OpenIDConnect::Tokeninfo.create("authorize_code")
|
90
|
+
tokeninfo.should be_a OpenIDConnect::Tokeninfo
|
91
|
+
tokeninfo.access_token.should eql "access_token"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "refresh" do
|
95
|
+
@tokeninfo.api.stub( :post => { :access_token => "new_access_token" } )
|
96
|
+
@tokeninfo.access_token.should eql "test_access_token"
|
97
|
+
@tokeninfo.refresh
|
98
|
+
@tokeninfo.access_token.should eql "new_access_token"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "userinfo" do
|
102
|
+
@tokeninfo.api.stub( :post => { :name => "Testing" } )
|
103
|
+
userinfo = @tokeninfo.userinfo
|
104
|
+
userinfo.should be_a OpenIDConnect::Userinfo
|
105
|
+
userinfo.name.should eql "Testing"
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "logout_url" do
|
109
|
+
it "Generate logout_url" do
|
110
|
+
url = @tokeninfo.logout_url
|
111
|
+
url.should match "id_token=test_id_token"
|
112
|
+
url.should match "logout=true"
|
113
|
+
url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "sandbox" do
|
117
|
+
before do
|
118
|
+
PayPal::SDK.configure(:mode => "sandbox")
|
119
|
+
end
|
120
|
+
|
121
|
+
it "generates a sandbox logout url" do
|
122
|
+
url = @tokeninfo.logout_url
|
123
|
+
url.should match "sandbox.paypal.com"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "Userinfo" do
|
130
|
+
it "get" do
|
131
|
+
OpenIDConnect::Userinfo.api.stub( :post => { :name => "Testing" } )
|
132
|
+
|
133
|
+
userinfo = OpenIDConnect::Userinfo.get("access_token")
|
134
|
+
userinfo.should be_a OpenIDConnect::Userinfo
|
135
|
+
userinfo.name.should eql "Testing"
|
136
|
+
|
137
|
+
userinfo = OpenIDConnect::Userinfo.get( :access_token => "access_token" )
|
138
|
+
userinfo.should be_a OpenIDConnect::Userinfo
|
139
|
+
userinfo.name.should eql "Testing"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
end
|
data/spec/log/http.log
CHANGED
@@ -2,55 +2,94 @@ opening connection to api.sandbox.paypal.com:443...
|
|
2
2
|
opened
|
3
3
|
starting SSL for api.sandbox.paypal.com:443...
|
4
4
|
SSL established
|
5
|
-
<- "POST /v1/
|
6
|
-
<- "{\"
|
7
|
-
-> "HTTP/1.1
|
5
|
+
<- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015Wzv2g.FBt8R8lMLiC29HZVC3BHrQNHvOJa1fDg9TaIQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.0.0 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nPaypal-Request-Id: d00d5d2b-5f98-4d8d-92f5-5bb0121983a6\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 251\r\n\r\n"
|
6
|
+
<- "{\"number\":\"4417119669820331\",\"type\":\"visa\",\"expire_month\":11,\"expire_year\":2018,\"cvv2\":\"874\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"52 N Main ST\",\"city\":\"Johnstown\",\"country_code\":\"US\",\"postal_code\":\"43210\",\"state\":\"OH\"}}"
|
7
|
+
-> "HTTP/1.1 201 Created\r\n"
|
8
8
|
-> "Server: Apache-Coyote/1.1\r\n"
|
9
|
-
-> "PROXY_SERVER_INFO: host=
|
10
|
-
-> "Paypal-Debug-Id:
|
11
|
-
-> "
|
12
|
-
-> "Date:
|
9
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=374349\r\n"
|
10
|
+
-> "Paypal-Debug-Id: abeff599fbb6d\r\n"
|
11
|
+
-> "Content-Language: *\r\n"
|
12
|
+
-> "Date: Mon, 26 Jan 2015 23:38:22 GMT\r\n"
|
13
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=144&TopLevelTxnStartTime=14b289c3a3b&Host=slcsbvaultplatformserv501.slc.paypal.com&pid=26863\r\n"
|
13
14
|
-> "Content-Type: application/json\r\n"
|
14
|
-
-> "Content-Length:
|
15
|
+
-> "Content-Length: 784\r\n"
|
15
16
|
-> "\r\n"
|
16
|
-
reading
|
17
|
-
-> "{\"
|
18
|
-
read
|
17
|
+
reading 784 bytes...
|
18
|
+
-> "{\"id\":\"CARD-8EH41211YH683514LKTDM73Q\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"52 N Main ST\",\"city\":\"Johnstown\",\"state\":\"OH\",\"postal_code\":\"43210\",\"country_code\":\"US\"},\"valid_until\":\"2018-01-25T00:00:00Z\",\"create_time\":\"2015-01-26T23:38:22Z\",\"update_time\":\"2015-01-26T23:38:22Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"delete\",\"method\":\"DELETE\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"patch\",\"method\":\"PATCH\"}]}"
|
19
|
+
read 784 bytes
|
19
20
|
Conn keep-alive
|
20
21
|
opening connection to api.sandbox.paypal.com:443...
|
21
22
|
opened
|
22
23
|
starting SSL for api.sandbox.paypal.com:443...
|
23
24
|
SSL established
|
24
|
-
<- "GET /v1/
|
25
|
-
-> "HTTP/1.1
|
25
|
+
<- "GET /v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015Wzv2g.FBt8R8lMLiC29HZVC3BHrQNHvOJa1fDg9TaIQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.0.0 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\n\r\n"
|
26
|
+
-> "HTTP/1.1 200 OK\r\n"
|
26
27
|
-> "Server: Apache-Coyote/1.1\r\n"
|
27
|
-
-> "PROXY_SERVER_INFO: host=
|
28
|
-
-> "Paypal-Debug-Id:
|
29
|
-
-> "
|
30
|
-
-> "Date:
|
28
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=370412\r\n"
|
29
|
+
-> "Paypal-Debug-Id: 9f6e4c66f44ea\r\n"
|
30
|
+
-> "Content-Language: *\r\n"
|
31
|
+
-> "Date: Mon, 26 Jan 2015 23:38:21 GMT\r\n"
|
32
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=145&TopLevelTxnStartTime=14b289c3cc5&Host=slcsbvaultplatformserv501.slc.paypal.com&pid=26863\r\n"
|
31
33
|
-> "Content-Type: application/json\r\n"
|
32
|
-
-> "Content-Length:
|
34
|
+
-> "Content-Length: 784\r\n"
|
33
35
|
-> "\r\n"
|
34
|
-
reading
|
35
|
-
-> "{\"
|
36
|
-
read
|
36
|
+
reading 784 bytes...
|
37
|
+
-> "{\"id\":\"CARD-8EH41211YH683514LKTDM73Q\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"52 N Main ST\",\"city\":\"Johnstown\",\"state\":\"OH\",\"postal_code\":\"43210\",\"country_code\":\"US\"},\"valid_until\":\"2018-01-25T00:00:00Z\",\"create_time\":\"2015-01-26T23:38:22Z\",\"update_time\":\"2015-01-26T23:38:22Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"delete\",\"method\":\"DELETE\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-8EH41211YH683514LKTDM73Q\",\"rel\":\"patch\",\"method\":\"PATCH\"}]}"
|
38
|
+
read 784 bytes
|
37
39
|
Conn keep-alive
|
38
40
|
opening connection to api.sandbox.paypal.com:443...
|
39
41
|
opened
|
40
42
|
starting SSL for api.sandbox.paypal.com:443...
|
41
43
|
SSL established
|
42
|
-
<- "POST /v1/
|
43
|
-
<- "{\"
|
44
|
-
-> "HTTP/1.1
|
44
|
+
<- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015Wzv2g.FBt8R8lMLiC29HZVC3BHrQNHvOJa1fDg9TaIQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.0.0 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nPaypal-Request-Id: f038736d-035a-4868-a010-4795d2a63d56\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 80\r\n\r\n"
|
45
|
+
<- "{\"number\":\"4417119669820331\",\"type\":\"visa\",\"expire_month\":11,\"expire_year\":2018}"
|
46
|
+
-> "HTTP/1.1 201 Created\r\n"
|
45
47
|
-> "Server: Apache-Coyote/1.1\r\n"
|
46
|
-
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=
|
47
|
-
-> "Paypal-Debug-Id:
|
48
|
-
-> "
|
49
|
-
-> "Date:
|
48
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=422766\r\n"
|
49
|
+
-> "Paypal-Debug-Id: 8329db02fbfc9\r\n"
|
50
|
+
-> "Content-Language: *\r\n"
|
51
|
+
-> "Date: Mon, 26 Jan 2015 23:38:23 GMT\r\n"
|
52
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=144&TopLevelTxnStartTime=14b289c3ed1&Host=slcsbvaultplatformserv501.slc.paypal.com&pid=26863\r\n"
|
50
53
|
-> "Content-Type: application/json\r\n"
|
51
|
-
-> "Content-Length:
|
54
|
+
-> "Content-Length: 626\r\n"
|
52
55
|
-> "\r\n"
|
53
|
-
reading
|
54
|
-
-> "{\"
|
55
|
-
read
|
56
|
+
reading 626 bytes...
|
57
|
+
-> "{\"id\":\"CARD-6E9832748Y127633WKTDM73Y\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"valid_until\":\"2018-01-25T00:00:00Z\",\"create_time\":\"2015-01-26T23:38:23Z\",\"update_time\":\"2015-01-26T23:38:23Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6E9832748Y127633WKTDM73Y\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6E9832748Y127633WKTDM73Y\",\"rel\":\"delete\",\"method\":\"DELETE\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6E9832748Y127633WKTDM73Y\",\"rel\":\"patch\",\"method\":\"PATCH\"}]}"
|
58
|
+
read 626 bytes
|
56
59
|
Conn keep-alive
|
60
|
+
opening connection to api.sandbox.paypal.com:443...
|
61
|
+
opened
|
62
|
+
starting SSL for api.sandbox.paypal.com:443...
|
63
|
+
SSL established
|
64
|
+
<- "DELETE /v1/vault/credit-card/CARD-6E9832748Y127633WKTDM73Y HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015Wzv2g.FBt8R8lMLiC29HZVC3BHrQNHvOJa1fDg9TaIQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.0.0 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\n\r\n"
|
65
|
+
-> "HTTP/1.1 204 No Content\r\n"
|
66
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
67
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=374349\r\n"
|
68
|
+
-> "Paypal-Debug-Id: 9c6c8f0efc077\r\n"
|
69
|
+
-> "Content-Language: *\r\n"
|
70
|
+
-> "Date: Mon, 26 Jan 2015 23:38:23 GMT\r\n"
|
71
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=144&TopLevelTxnStartTime=14b289c412f&Host=slcsbvaultplatformserv501.slc.paypal.com&pid=26863\r\n"
|
72
|
+
-> "\r\n"
|
73
|
+
Conn keep-alive
|
74
|
+
opening connection to api.sandbox.paypal.com:443...
|
75
|
+
opened
|
76
|
+
starting SSL for api.sandbox.paypal.com:443...
|
77
|
+
SSL established
|
78
|
+
<- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015Wzv2g.FBt8R8lMLiC29HZVC3BHrQNHvOJa1fDg9TaIQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.0.0 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nPaypal-Request-Id: d74311bb-87da-459a-9781-b41a160e0e63\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 43\r\n\r\n"
|
79
|
+
<- "{\"number\":\"4111111111111111\",\"type\":\"visa\"}"
|
80
|
+
-> "HTTP/1.1 400 Bad Request\r\n"
|
81
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
82
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=370896\r\n"
|
83
|
+
-> "Paypal-Debug-Id: 9b33f301f3b03\r\n"
|
84
|
+
-> "Content-Language: *\r\n"
|
85
|
+
-> "Date: Mon, 26 Jan 2015 23:38:24 GMT\r\n"
|
86
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=145&TopLevelTxnStartTime=14b289c436b&Host=slcsbvaultplatformserv501.slc.paypal.com&pid=26863\r\n"
|
87
|
+
-> "Connection: close\r\n"
|
88
|
+
-> "Content-Type: application/json\r\n"
|
89
|
+
-> "Content-Length: 300\r\n"
|
90
|
+
-> "Connection: close\r\n"
|
91
|
+
-> "\r\n"
|
92
|
+
reading 300 bytes...
|
93
|
+
-> "{\"name\":\"VALIDATION_ERROR\",\"details\":[{\"field\":\"expire_year\",\"issue\":\"Required field missing\"},{\"field\":\"expire_month\",\"issue\":\"Required field missing\"}],\"message\":\"Invalid request - see details\",\"information_link\":\"https://developer.paypal.com/docs/api/#VALIDATION_ERROR\",\"debug_id\":\"9b33f301f3b03\"}"
|
94
|
+
read 300 bytes
|
95
|
+
Conn close
|
@@ -0,0 +1,133 @@
|
|
1
|
+
opening connection to api.sandbox.paypal.com:443...
|
2
|
+
opened
|
3
|
+
starting SSL for api.sandbox.paypal.com:443...
|
4
|
+
SSL established
|
5
|
+
<- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015sNxcVEuJGuqxbp8gWg5ytHVFjZERr0GRQ7XwNfL5s-c\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 286\r\n\r\n"
|
6
|
+
<- "{\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"4417119669820331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\"}}]},\"transactions\":[{\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"}}]}"
|
7
|
+
-> "HTTP/1.1 201 Created\r\n"
|
8
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
9
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=374562\r\n"
|
10
|
+
-> "Paypal-Debug-Id: 99ae834b04c3b\r\n"
|
11
|
+
-> "SERVER_INFO: paymentsplatformserv:v1.payments.payment&CalThreadId=206&TopLevelTxnStartTime=14b27d3184b&Host=slcsbpaymentsplatformserv3001.slc.paypal.com&pid=22725\r\n"
|
12
|
+
-> "Content-Language: *\r\n"
|
13
|
+
-> "Date: Mon, 26 Jan 2015 19:59:05 GMT\r\n"
|
14
|
+
-> "Content-Type: application/json\r\n"
|
15
|
+
-> "Content-Length: 1176\r\n"
|
16
|
+
-> "\r\n"
|
17
|
+
reading 1176 bytes...
|
18
|
+
-> "{\"id\":\"PAY-0HK26041BK876242NKTDJY4A\",\"create_time\":\"2015-01-26T19:58:40Z\",\"update_time\":\"2015-01-26T19:59:05Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\"}}]},\"transactions\":[{\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"7.47\"}},\"related_resources\":[{\"sale\":{\"id\":\"99T986810N230144S\",\"create_time\":\"2015-01-26T19:58:40Z\",\"update_time\":\"2015-01-26T19:59:06Z\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-0HK26041BK876242NKTDJY4A\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/99T986810N230144S\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/99T986810N230144S/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-0HK26041BK876242NKTDJY4A\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-0HK26041BK876242NKTDJY4A\",\"rel\":\"self\",\"method\":\"GET\"}]}"
|
19
|
+
read 1176 bytes
|
20
|
+
Conn keep-alive
|
21
|
+
opening connection to api.sandbox.paypal.com:443...
|
22
|
+
opened
|
23
|
+
starting SSL for api.sandbox.paypal.com:443...
|
24
|
+
SSL established
|
25
|
+
<- "GET /v1/payments/payment?count=10 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015sNxcVEuJGuqxbp8gWg5ytHVFjZERr0GRQ7XwNfL5s-c\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\n\r\n"
|
26
|
+
-> "HTTP/1.1 200 OK\r\n"
|
27
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
28
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=415614\r\n"
|
29
|
+
-> "Paypal-Debug-Id: ca8ee0440630d\r\n"
|
30
|
+
-> "SERVER_INFO: paymentsplatformserv:v1.payments.payment&CalThreadId=3846&TopLevelTxnStartTime=14b27d37d1d&Host=slcsbpaymentsplatformserv3001.slc.paypal.com&pid=22725\r\n"
|
31
|
+
-> "Content-Language: *\r\n"
|
32
|
+
-> "Date: Mon, 26 Jan 2015 19:59:19 GMT\r\n"
|
33
|
+
-> "Content-Type: application/json\r\n"
|
34
|
+
-> "Transfer-Encoding: chunked\r\n"
|
35
|
+
-> "\r\n"
|
36
|
+
-> "2000\r\n"
|
37
|
+
reading 8192 bytes...
|
38
|
+
-> "{\"payments\":[{\"id\":\"PAY-0HK26041BK876242NKTDJY4A\",\"create_time\":\"2015-01-26T19:58:40Z\",\"update_time\":\"2015-01-26T19:59:05Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\"}}]},\"transactions\":[{\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"7.47\"}},\"related_resources\":[{\"sale\":{\"id\":\"99T986810N230144S\",\"create_time\":\"2015-01-26T19:58:40Z\",\"update_time\":\"2015-01-26T19:59:06Z\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-0HK26041BK876242NKTDJY4A\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/99T986810N230144S\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/99T986810N230144S/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-0HK26041BK876242NKTDJY4A\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-0HK26041BK876242NKTDJY4A\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-45N073335H301674BKTDJYLQ\",\"create_time\":\"2015-01-26T19:57:34Z\",\"update_time\":\"2015-01-26T19:57:54Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"1\",\"expire_year\":\"2015\",\"first_name\":\"test\",\"last_name\":\"test\"}}]},\"transactions\":[{\"amount\":{\"total\":\"8.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"8.00\"}},\"description\":\"Transaction for South Dakota Tracs Crash Report.\",\"related_resources\":[{\"sale\":{\"id\":\"09C17155GG552854V\",\"create_time\":\"2015-01-26T19:57:34Z\",\"update_time\":\"2015-01-26T19:57:54Z\",\"amount\":{\"total\":\"8.00\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-45N073335H301674BKTDJYLQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/09C17155GG552854V\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/09C17155GG552854V/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-45N073335H301674BKTDJYLQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-45N073335H301674BKTDJYLQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-92D80148F0212810HKTDI5SY\",\"create_time\":\"2015-01-26T19:00:27Z\",\"update_time\":\"2015-01-26T19:00:52Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"52 N Main ST\",\"city\":\"Johnstown\",\"state\":\"OH\",\"postal_code\":\"43210\",\"country_code\":\"US\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"7.47\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"7LL39319SX4999041\",\"create_time\":\"2015-01-26T19:00:27Z\",\"update_time\":\"2015-01-26T19:00:52Z\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"state\":\"refunded\",\"parent_payment\":\"PAY-92D80148F0212810HKTDI5SY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/7LL39319SX4999041\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/7LL39319SX4999041/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-92D80148F0212810HKTDI5SY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}},{\"refund\":{\"id\":\"7BK01278LV509382W\",\"create_time\":\"2015-01-26T19:00:52Z\",\"update_time\":\"2015-01-26T19:00:52Z\",\"state\":\"completed\",\"amount\":{\"total\":\"-7.47\",\"currency\":\"USD\"},\"sale_id\":\"7LL39319SX4999041\",\"parent_payment\":\"PAY-92D80148F0212810HKTDI5SY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/refund/7BK01278LV509382W\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-92D80148F0212810HKTDI5SY\",\"rel\":\"parent_payment\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/7LL39319SX4999041\",\"rel\":\"sale\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-92D80148F0212810HKTDI5SY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-10B69903JH1072821KTDIPCY\",\"create_time\":\"2015-01-26T18:29:31Z\",\"update_time\":\"2015-01-26T18:29:58Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"paypal\",\"status\":\"VERIFIED\",\"payer_info\":{\"email\":\"nmehta6@wellpledge.com\",\"first_name\":\"nachiket\",\"last_name\":\"mehta\",\"payer_id\":\"XWDD75FTGHJLN\",\"shipping_address\":{\"line1\":\"1 Main St\",\"city\":\"San Jose\",\"state\":\"CA\",\"postal_code\":\"95131\",\"country_code\":\"US\",\"recipient_name\":\"nachiket mehta\"}}},\"transactions\":[{\"amount\":{\"total\":\"100.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"100.00\"}},\"description\":\"Pledge\",\"related_resources\":[{\"sale\":{\"id\":\"3W375242JL947521F\",\"create_time\":\"2015-01-26T18:29:31Z\",\"update_time\":\"2015-01-26T18:29:58Z\",\"amount\":{\"total\":\"100.00\",\"currency\":\"USD\"},\"payment_mode\":\"INSTANT_TRANSFER\",\"state\":\"completed\",\"protection_eligibility\":\"ELIGIBLE\",\"protection_eligibility_type\":\"ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE\",\"parent_payment\":\"PAY-10B69903JH1072821KTDIPCY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/3W375242JL947521F\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/3W375242JL947521F/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-10B69903JH1072821KTDIPCY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-10B69903JH1072821KTDIPCY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-41S95619LR639784UKTDIMSQ\",\"create_time\":\"2015-01-26T18:24:10Z\",\"update_time\":\"2015-01-26T18:24:50Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"paypal\",\"status\":\"VERIFIED\",\"payer_info\":{\"email\":\"nmehta6@wellpledge.com\",\"first_name\":\"nachiket\",\"last_name\":\"mehta\",\"payer_id\":\"XWDD75FTGHJLN\",\"shipping_address\":{\"line1\":\"1 Main St\",\"city\":\"San Jose\",\"state\":\"CA\",\"postal_code\":\"95131\",\"country_code\":\"US\",\"recipient_name\":\"nachiket mehta\"}}},\"transactions\":[{\"amount\":{\"total\":\"5.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"5.00\"}},\"description\":\"Pledge\",\"related_resources\":[{\"sale\":{\"id\":\"56V10528UY3057224\",\"create_time\":\"2015-01-26T18:24:10Z\",\"update_time\":\"2015-01-26T18:24:50Z\",\"amount\":{\"total\":\"5.00\",\"currency\":\"USD\"},\"payment_mode\":\"INSTANT_TRANSFER\",\"state\":\"completed\",\"protection_eligibility\":\"ELIGIBLE\",\"protection_eligibility_type\":\"ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE\",\"parent_payment\":\"PAY-41S95619LR639784UKTDIMSQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/56V10528UY3057224\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/56V10528UY3057224/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-41S95619LR639784UKTDIMSQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-41S95619LR639784UKTDIMSQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-50P28946RR561462GKTDHK5Y\",\"create_time\":\"2015-01-26T17:12:23Z\",\"update_time\":\"2015-01-26T17:12:25Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx9693\",\"expire_month\":\"1\",\"expire_year\":\"2019\",\"first_name\":\"Test\",\"last_name\":\"Test\"}}]},\"transactions\":[{\"amount\":{\"total\":\"59.15\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"59.15\"}},\"description\":\"Payment for order No. 76EE2502-B26A-46F1-BD50-8BE396D8BD57\",\"related_resources\":[{\"sale\":{\"id\":\"4J494696UH2097506\",\"create_time\":\"2015-01-26T17:12:23Z\",\"update_time\":\"2015-01-26T17:12:25Z\",\"amount\":{\"total\":\"59.15\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-50P28946RR561462GKTDHK5Y\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4J494696UH2097506\",\"rel\""
|
39
|
+
read 8192 bytes
|
40
|
+
reading 2 bytes...
|
41
|
+
-> "\r\n"
|
42
|
+
read 2 bytes
|
43
|
+
-> "14e6\r\n"
|
44
|
+
reading 5350 bytes...
|
45
|
+
-> ":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4J494696UH2097506/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-50P28946RR561462GKTDHK5Y\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-50P28"
|
46
|
+
-> "946RR561462GKTDHK5Y\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-38J73169NH225341CKTDHGDQ\",\"create_time\":\"2015-01-26T17:02:06Z\",\"update_time\":\"2015-01-26T17:02:08Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx9693\",\"expire_month\":\"1\",\"expire_year\":\"2023\",\"first_name\":\"Test\",\"last_name\":\"Test\"}}]},\"transactions\":[{\"amount\":{\"total\":\"111.94\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"111.94\"}},\"description\":\"Payment for order No. 2BC9DB90-BE2B-40D4-A774-52D02DAA9947\",\"related_resources\":[{\"sale\":{\"id\":\"2K6603165A1419111\",\"create_time\":\"2015-01-26T17:02:06Z\",\"update_time\":\"2015-01-26T17:02:08Z\",\"amount\":{\"total\":\"111.94\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-38J73169NH225341CKTDHGDQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/2K6603165A1419111\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/2K6603165A1419111/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-38J73169NH225341CKTDHGDQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-38J73169NH225341CKTDHGDQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-28K34334W8115331HKTDG7VY\",\"create_time\":\"2015-01-26T16:48:23Z\",\"update_time\":\"2015-01-26T16:48:25Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx2709\",\"expire_month\":\"12\",\"expire_year\":\"2018\",\"first_name\":\"Ash\",\"last_name\":\"Williams\"}}]},\"transactions\":[{\"amount\":{\"total\":\"10.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"10.00\"}},\"description\":\"Your Kraken Store Purchase\",\"related_resources\":[{\"sale\":{\"id\":\"07B09156JR787052Y\",\"create_time\":\"2015-01-26T16:48:23Z\",\"update_time\":\"2015-01-26T16:48:25Z\",\"amount\":{\"total\":\"10.00\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-28K34334W8115331HKTDG7VY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/07B09156JR787052Y\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/07B09156JR787052Y/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-28K34334W8115331HKTDG7VY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-28K34334W8115331HKTDG7VY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-5YC95627DE8872136KTDG3EA\",\"create_time\":\"2015-01-26T16:38:40Z\",\"update_time\":\"2015-01-26T16:38:45Z\",\"state\":\"approved\",\"intent\":\"authorize\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"amex\",\"number\":\"xxxxxxxxxxx5005\",\"expire_month\":\"8\",\"expire_year\":\"2026\",\"first_name\":\"i\",\"last_name\":\"i\"}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"Validation request.\",\"related_resources\":[{\"authorization\":{\"id\":\"1MA07760937486001\",\"create_time\":\"2015-01-26T16:38:40Z\",\"update_time\":\"2015-01-26T16:38:45Z\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"state\":\"voided\",\"parent_payment\":\"PAY-5YC95627DE8872136KTDG3EA\",\"valid_until\":\"2015-02-24T16:38:40Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/authorization/1MA07760937486001\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5YC95627DE8872136KTDG3EA\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5YC95627DE8872136KTDG3EA\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-5JX78789RV369420XKTDGY4Q\",\"create_time\":\"2015-01-26T16:33:54Z\",\"update_time\":\"2015-01-26T16:34:14Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"1\",\"expire_year\":\"2015\",\"first_name\":\"test\",\"last_name\":\"test\"}}]},\"transactions\":[{\"amount\":{\"total\":\"8.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"8.00\"}},\"description\":\"Transaction for South Dakota Tracs Crash Report.\",\"related_resources\":[{\"sale\":{\"id\":\"65N64578SJ086052V\",\"create_time\":\"2015-01-26T16:33:54Z\",\"update_time\":\"2015-01-26T16:34:14Z\",\"amount\":{\"total\":\"8.00\",\"currency\":\"USD\"},\"state\":\"completed\",\"parent_payment\":\"PAY-5JX78789RV369420XKTDGY4Q\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/65N64578SJ086052V\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/65N64578SJ086052V/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5JX78789RV369420XKTDGY4Q\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5JX78789RV369420XKTDGY4Q\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"count\":10,\"next_id\":\"PAY-10L26665VD0354626KTDGLNI\"}"
|
47
|
+
read 5350 bytes
|
48
|
+
reading 2 bytes...
|
49
|
+
-> "\r\n"
|
50
|
+
read 2 bytes
|
51
|
+
-> "0\r\n"
|
52
|
+
-> "\r\n"
|
53
|
+
Conn keep-alive
|
54
|
+
opening connection to api.sandbox.paypal.com:443...
|
55
|
+
opened
|
56
|
+
starting SSL for api.sandbox.paypal.com:443...
|
57
|
+
SSL established
|
58
|
+
<- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015ATTrEVx4Rv0emNcK5Uh5u-xmHOqmVeQhTfyo1NVtyTQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 138\r\n\r\n"
|
59
|
+
<- "{\"type\":\"visa\",\"number\":\"4111111111111111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"cvv2\":\"874\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\"}"
|
60
|
+
-> "HTTP/1.1 201 Created\r\n"
|
61
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
62
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=415614\r\n"
|
63
|
+
-> "Paypal-Debug-Id: 38bef0de09756\r\n"
|
64
|
+
-> "Content-Language: *\r\n"
|
65
|
+
-> "Date: Mon, 26 Jan 2015 19:59:21 GMT\r\n"
|
66
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=138&TopLevelTxnStartTime=14b27d3b772&Host=slcsbvaultplatformserv502.slc.paypal.com&pid=10462\r\n"
|
67
|
+
-> "Content-Type: application/json\r\n"
|
68
|
+
-> "Content-Length: 667\r\n"
|
69
|
+
-> "\r\n"
|
70
|
+
reading 667 bytes...
|
71
|
+
-> "{\"id\":\"CARD-6NM00310BP799084BKTDJZGI\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"valid_until\":\"2018-01-25T00:00:00Z\",\"create_time\":\"2015-01-26T19:59:21Z\",\"update_time\":\"2015-01-26T19:59:21Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"delete\",\"method\":\"DELETE\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"patch\",\"method\":\"PATCH\"}]}"
|
72
|
+
read 667 bytes
|
73
|
+
Conn keep-alive
|
74
|
+
opening connection to api.sandbox.paypal.com:443...
|
75
|
+
opened
|
76
|
+
starting SSL for api.sandbox.paypal.com:443...
|
77
|
+
SSL established
|
78
|
+
<- "GET /v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015ATTrEVx4Rv0emNcK5Uh5u-xmHOqmVeQhTfyo1NVtyTQ\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\n\r\n"
|
79
|
+
-> "HTTP/1.1 200 OK\r\n"
|
80
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
81
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=415614\r\n"
|
82
|
+
-> "Paypal-Debug-Id: 9639a1aa09943\r\n"
|
83
|
+
-> "Content-Language: *\r\n"
|
84
|
+
-> "Date: Mon, 26 Jan 2015 19:59:21 GMT\r\n"
|
85
|
+
-> "SERVER_INFO: vaultplatformserv:v1.vault.credit-card&CalThreadId=138&TopLevelTxnStartTime=14b27d3b977&Host=slcsbvaultplatformserv502.slc.paypal.com&pid=10462\r\n"
|
86
|
+
-> "Content-Type: application/json\r\n"
|
87
|
+
-> "Content-Length: 667\r\n"
|
88
|
+
-> "\r\n"
|
89
|
+
reading 667 bytes...
|
90
|
+
-> "{\"id\":\"CARD-6NM00310BP799084BKTDJZGI\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"valid_until\":\"2018-01-25T00:00:00Z\",\"create_time\":\"2015-01-26T19:59:21Z\",\"update_time\":\"2015-01-26T19:59:21Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"delete\",\"method\":\"DELETE\"},{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-6NM00310BP799084BKTDJZGI\",\"rel\":\"patch\",\"method\":\"PATCH\"}]}"
|
91
|
+
read 667 bytes
|
92
|
+
Conn keep-alive
|
93
|
+
opening connection to api.sandbox.paypal.com:443...
|
94
|
+
opened
|
95
|
+
starting SSL for api.sandbox.paypal.com:443...
|
96
|
+
SSL established
|
97
|
+
<- "GET /v1/payments/payment/PAY-1234 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015sNxcVEuJGuqxbp8gWg5ytHVFjZERr0GRQ7XwNfL5s-c\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\n\r\n"
|
98
|
+
-> "HTTP/1.1 404 Not Found\r\n"
|
99
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
100
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=424366\r\n"
|
101
|
+
-> "Paypal-Debug-Id: 275ebe840ef65\r\n"
|
102
|
+
-> "SERVER_INFO: paymentsplatformserv:v1.payments.payment&CalThreadId=679&TopLevelTxnStartTime=14b27d3bb76&Host=slcsbpaymentsplatformserv3002.slc.paypal.com&pid=15580\r\n"
|
103
|
+
-> "Content-Language: *\r\n"
|
104
|
+
-> "Date: Mon, 26 Jan 2015 19:59:21 GMT\r\n"
|
105
|
+
-> "Content-Type: application/json\r\n"
|
106
|
+
-> "Content-Length: 207\r\n"
|
107
|
+
-> "\r\n"
|
108
|
+
reading 207 bytes...
|
109
|
+
-> "{\"name\":\"INVALID_RESOURCE_ID\",\"message\":\"The requested resource ID was not found\",\"information_link\":\"https://developer.paypal.com/webapps/developer/docs/api/#INVALID_RESOURCE_ID\",\"debug_id\":\"275ebe840ef65\"}"
|
110
|
+
read 207 bytes
|
111
|
+
Conn keep-alive
|
112
|
+
opening connection to api.sandbox.paypal.com:443...
|
113
|
+
opened
|
114
|
+
starting SSL for api.sandbox.paypal.com:443...
|
115
|
+
SSL established
|
116
|
+
<- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A015sNxcVEuJGuqxbp8gWg5ytHVFjZERr0GRQ7XwNfL5s-c\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/sdk-core-ruby 0.3.1 (paypal-sdk-core 0.3.1; ruby 2.1.2p95-x86_64-darwin13.0)\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 2\r\n\r\n"
|
117
|
+
<- "{}"
|
118
|
+
-> "HTTP/1.1 400 Bad Request\r\n"
|
119
|
+
-> "Server: Apache-Coyote/1.1\r\n"
|
120
|
+
-> "PROXY_SERVER_INFO: host=slcsbplatformapiserv3002.slc.paypal.com;threadId=370782\r\n"
|
121
|
+
-> "Paypal-Debug-Id: 1fee815a09cc5\r\n"
|
122
|
+
-> "SERVER_INFO: paymentsplatformserv:v1.payments.payment&CalThreadId=90&TopLevelTxnStartTime=14b27d3bd23&Host=slcsbpaymentsplatformserv3001.slc.paypal.com&pid=22725\r\n"
|
123
|
+
-> "Content-Language: *\r\n"
|
124
|
+
-> "Date: Mon, 26 Jan 2015 19:59:22 GMT\r\n"
|
125
|
+
-> "Connection: close\r\n"
|
126
|
+
-> "Content-Type: application/json\r\n"
|
127
|
+
-> "Content-Length: 306\r\n"
|
128
|
+
-> "Connection: close\r\n"
|
129
|
+
-> "\r\n"
|
130
|
+
reading 306 bytes...
|
131
|
+
-> "{\"name\":\"VALIDATION_ERROR\",\"details\":[{\"field\":\"payer\",\"issue\":\"Required field missing\"},{\"field\":\"intent\",\"issue\":\"Required field missing\"}],\"message\":\"Invalid request - see details\",\"information_link\":\"https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR\",\"debug_id\":\"1fee815a09cc5\"}"
|
132
|
+
read 306 bytes
|
133
|
+
Conn close
|
data/spec/spec_helper.rb
CHANGED
@@ -15,6 +15,12 @@ require 'paypal-sdk-rest'
|
|
15
15
|
include PayPal::SDK::REST
|
16
16
|
include PayPal::SDK::Core::Logging
|
17
17
|
|
18
|
+
require 'logger'
|
19
|
+
PayPal::SDK.load('spec/config/paypal.yml', 'test')
|
20
|
+
PayPal::SDK.logger = Logger.new(STDERR)
|
21
|
+
|
22
|
+
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| require f }
|
23
|
+
|
18
24
|
# Set logger for http
|
19
25
|
http_log = File.open(File.expand_path('../log/http.log', __FILE__), "w")
|
20
26
|
Payment.api.http.set_debug_output(http_log)
|
@@ -22,5 +28,6 @@ Payment.api.http.set_debug_output(http_log)
|
|
22
28
|
RSpec.configure do |config|
|
23
29
|
config.filter_run_excluding :integration => true
|
24
30
|
config.filter_run_excluding :disabled => true
|
31
|
+
config.include SampleData
|
25
32
|
# config.include PayPal::SDK::REST::DataTypes
|
26
33
|
end
|