paypal-sdk-core 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,72 @@
1
+ require 'paypal-sdk-core'
2
+
3
+ module PayPal::SDK::Core
4
+ module OpenIDConnect
5
+ module DataTypes
6
+ class Base < PayPal::SDK::Core::API::DataTypes::Base
7
+ end
8
+
9
+ class Address < Base
10
+ def self.load_members
11
+ object_of :street_address, String
12
+ object_of :locality, String
13
+ object_of :region, String
14
+ object_of :postal_code, String
15
+ object_of :country, String
16
+ end
17
+ end
18
+
19
+ class Userinfo < Base
20
+ def self.load_members
21
+ object_of :user_id, String
22
+ object_of :sub, String
23
+ object_of :name, String
24
+ object_of :given_name, String
25
+ object_of :family_name, String
26
+ object_of :middle_name, String
27
+ object_of :picture, String
28
+ object_of :email, String
29
+ object_of :email_verified, Boolean
30
+ object_of :gender, String
31
+ object_of :birthday, String
32
+ object_of :zoneinfo, String
33
+ object_of :locale, String
34
+ object_of :language, String
35
+ object_of :verified, Boolean
36
+ object_of :phone_number, String
37
+ object_of :address, Address
38
+ object_of :verified_account, Boolean
39
+ object_of :account_type, String
40
+ object_of :age_range, String
41
+ object_of :payer_id, String
42
+ end
43
+ end
44
+
45
+ class Tokeninfo < Base
46
+ def self.load_members
47
+ object_of :scope, String
48
+ object_of :access_token, String
49
+ object_of :refresh_token, String
50
+ object_of :token_type, String
51
+ object_of :id_token, String
52
+ object_of :expires_in, Integer
53
+ end
54
+ end
55
+
56
+ class Error < Base
57
+ def self.load_members
58
+ object_of :error, String
59
+ object_of :error_description, String
60
+ object_of :error_uri, String
61
+ end
62
+ end
63
+
64
+
65
+ constants.each do |data_type_klass|
66
+ data_type_klass = const_get(data_type_klass)
67
+ data_type_klass.load_members if defined? data_type_klass.load_members
68
+ end
69
+
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ module PayPal::SDK
2
+ module Core
3
+ module OpenIDConnect
4
+ module GetAPI
5
+ # Get API object
6
+ # === Example
7
+ # Payment.api
8
+ # payment.api
9
+ def api
10
+ @api || parent_api
11
+ end
12
+
13
+ # Parent API object
14
+ def parent_api
15
+ superclass.respond_to?(:api) ? superclass.api : RequestDataType.api
16
+ end
17
+
18
+ def client_id
19
+ api.config.openid_client_id || api.config.client_id
20
+ end
21
+
22
+ def client_secret
23
+ api.config.openid_client_secret || api.config.client_secret
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,52 @@
1
+ module PayPal::SDK
2
+ module Core
3
+ module OpenIDConnect
4
+ module RequestDataType
5
+
6
+ # Get a local API object or Class level API object
7
+ def api
8
+ @api || self.class.api
9
+ end
10
+
11
+ class << self
12
+ # Global API object
13
+ # === Example
14
+ # RequestDataType.api
15
+ def api
16
+ @api ||= API.new({})
17
+ end
18
+
19
+ def client_id
20
+ api.config.openid_client_id || api.config.client_id
21
+ end
22
+
23
+ def client_secret
24
+ api.config.openid_client_secret || api.config.client_secret
25
+ end
26
+
27
+ # Setter for RequestDataType.api
28
+ # === Example
29
+ # RequestDataType.set_config(..)
30
+ include SetAPI
31
+
32
+ # Configure depended module, when RequestDataType is include.
33
+ # === Example
34
+ # class Payment < DataTypes
35
+ # include RequestDataType
36
+ # end
37
+ # Payment.set_config(..)
38
+ # payment.set_config(..)
39
+ # Payment.api
40
+ # payment.api
41
+ def included(klass)
42
+ klass.class_eval do
43
+ extend GetAPI
44
+ extend SetAPI
45
+ include SetAPI
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,36 @@
1
+ module PayPal::SDK
2
+ module Core
3
+ module OpenIDConnect
4
+ module SetAPI
5
+ # Set new api
6
+ # === Examples
7
+ # payment.set_config(:development)
8
+ # payment.set_config(:client_id => "XYZ", :client_secret => "SECRET")
9
+ # payment.set_config
10
+ # payment.api = API.new(:development)
11
+ def set_config(*args)
12
+ if args[0].is_a?(API)
13
+ @api = args[0]
14
+ else
15
+ @api ||= API.new({})
16
+ @api.set_config(*args) # Just override the configuration and Not
17
+ @api
18
+ end
19
+ end
20
+ alias_method :config=, :set_config
21
+ alias_method :set_api, :set_config
22
+ alias_method :api=, :set_config
23
+
24
+ # Override client id
25
+ def client_id=(client_id)
26
+ set_config(:client_id => client_id)
27
+ end
28
+
29
+ # Override client secret
30
+ def client_secret=(client_secret)
31
+ set_config(:client_secret => client_secret)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+ module PayPal
2
+ module SDK
3
+ module Core
4
+ module Util
5
+ autoload :OauthSignature, "paypal-sdk/core/util/oauth_signature"
6
+ autoload :OrderedHash, "paypal-sdk/core/util/ordered_hash"
7
+ autoload :HTTPHelper, "paypal-sdk/core/util/http_helper"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module PayPal
2
2
  module SDK
3
3
  module Core
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
6
6
  end
7
7
  end
@@ -81,7 +81,6 @@ describe PayPal::SDK::Core::API::Platform do
81
81
 
82
82
  describe "with token" do
83
83
  it "create invoice" do
84
- pending "Fix issue with Invoice service"
85
84
  client = Platform.new("Invoice", :with_oauth_token )
86
85
  response = client.request("CreateInvoice", CreateInvoiceParams)
87
86
  should_be_success(response)
@@ -76,6 +76,12 @@ describe PayPal::SDK::Core::API::REST do
76
76
  }.should raise_error PayPal::SDK::Core::Exceptions::UnauthorizedAccess
77
77
  end
78
78
 
79
+ it "Should handle expired token" do
80
+ old_token = @api.token
81
+ @api.token_hash[:expires_in] = 0
82
+ @api.token.should_not eql old_token
83
+ end
84
+
79
85
  it "Get token" do
80
86
  @api.token.should_not be_nil
81
87
  end
@@ -33,6 +33,47 @@ describe PayPal::SDK::Core::Config do
33
33
  end
34
34
  end
35
35
 
36
+ it "Configure with parameters" do
37
+ begin
38
+ backup_configurations = Config.configurations
39
+ Config.configurations = nil
40
+ Config.configure( :username => "Testing" )
41
+ Config.config.username.should eql "Testing"
42
+ Config.config.app_id.should be_nil
43
+ ensure
44
+ Config.configurations = backup_configurations
45
+ end
46
+ end
47
+
48
+ it "Configure with block" do
49
+ begin
50
+ backup_configurations = Config.configurations
51
+ Config.configurations = nil
52
+ Config.configure do |config|
53
+ config.username = "Testing"
54
+ end
55
+ Config.config.username.should eql "Testing"
56
+ Config.config.app_id.should be_nil
57
+ ensure
58
+ Config.configurations = backup_configurations
59
+ end
60
+ end
61
+
62
+ it "Configure with default values" do
63
+ begin
64
+ backup_configurations = Config.configurations
65
+ default_config = Config.config
66
+ Config.configure do |config|
67
+ config.username = "Testing"
68
+ end
69
+ Config.config.username.should eql "Testing"
70
+ Config.config.app_id.should_not be_nil
71
+ Config.config.app_id.should eql default_config.app_id
72
+ ensure
73
+ Config.configurations = backup_configurations
74
+ end
75
+ end
76
+
36
77
  it "validate configuration" do
37
78
  config = Config.new( :username => "XYZ")
38
79
  lambda {
@@ -83,6 +124,13 @@ describe PayPal::SDK::Core::Config do
83
124
  Config.logger.should eql my_logger
84
125
  end
85
126
 
127
+ it "Access PayPal::SDK methods" do
128
+ PayPal::SDK.configure.should eql PayPal::SDK::Core::Config.config
129
+ PayPal::SDK.logger.should eql PayPal::SDK::Core::Config.logger
130
+ PayPal::SDK.logger = PayPal::SDK.logger
131
+ PayPal::SDK.logger.should eql PayPal::SDK::Core::Config.logger
132
+ end
133
+
86
134
  describe "include Configuration" do
87
135
  class TestConfig
88
136
  include PayPal::SDK::Core::Configuration
@@ -0,0 +1,88 @@
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 "generate autorize_url" do
11
+ url = OpenIDConnect::Tokeninfo.authorize_url
12
+ url.should match "client_id=client_id"
13
+ url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
14
+ url.should match "scope=openid"
15
+ end
16
+
17
+ it "Override authorize_url params" do
18
+ url = OpenIDConnect.authorize_url(
19
+ :client_id => "new_client_id",
20
+ :redirect_uri => "http://example.com",
21
+ :scope => "openid profile")
22
+ url.should match "client_id=new_client_id"
23
+ url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://example.com")}")
24
+ url.should match Regexp.escape("scope=#{CGI.escape("openid profile")}")
25
+ end
26
+
27
+ it "Generate logout_url" do
28
+ url = OpenIDConnect.logout_url
29
+ url.should match "logout=true"
30
+ url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
31
+ url.should_not match "id_token"
32
+ end
33
+
34
+ it "Override logout_url params" do
35
+ url = OpenIDConnect.logout_url({
36
+ :redirect_uri => "http://example.com",
37
+ :id_token => "testing" })
38
+ url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://example.com")}")
39
+ url.should match "id_token=testing"
40
+ end
41
+
42
+ it "Create token" do
43
+ lambda{
44
+ tokeninfo = OpenIDConnect::Tokeninfo.create("invalid-autorize-code")
45
+ }.should raise_error PayPal::SDK::Core::Exceptions::BadRequest
46
+ end
47
+
48
+ it "Refresh token" do
49
+ lambda{
50
+ tokeninfo = OpenIDConnect::Tokeninfo.refresh("invalid-refresh-token")
51
+ }.should raise_error PayPal::SDK::Core::Exceptions::BadRequest
52
+ end
53
+
54
+ it "Get userinfo" do
55
+ lambda{
56
+ userinfo = OpenIDConnect::Userinfo.get("invalid-access-token")
57
+ }.should raise_error PayPal::SDK::Core::Exceptions::UnauthorizedAccess
58
+ end
59
+
60
+ describe "Tokeninfo" do
61
+ before do
62
+ @tokeninfo = OpenIDConnect::Tokeninfo.new( :access_token => "test_access_token",
63
+ :refresh_token => "test_refresh_token",
64
+ :id_token => "test_id_token" )
65
+ end
66
+
67
+ it "refresh" do
68
+ lambda{
69
+ tokeninfo = @tokeninfo.refresh
70
+ }.should raise_error PayPal::SDK::Core::Exceptions::BadRequest
71
+ end
72
+
73
+ it "userinfo" do
74
+ lambda{
75
+ userinfo = @tokeninfo.userinfo
76
+ }.should raise_error PayPal::SDK::Core::Exceptions::UnauthorizedAccess
77
+ end
78
+
79
+ it "Generate logout_url" do
80
+ url = @tokeninfo.logout_url
81
+ url.should match "id_token=test_id_token"
82
+ url.should match "logout=true"
83
+ url.should match Regexp.escape("redirect_uri=#{CGI.escape("http://google.com")}")
84
+ end
85
+ end
86
+
87
+
88
+ end
@@ -1,41 +1,40 @@
1
1
  opening connection to api.sandbox.paypal.com...
2
2
  opened
3
- <- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer b4fe0spO31qU4hTS7C09MeXPwkUYWpTEwnsi5zr0uWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 286\r\n\r\n"
3
+ <- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer rmEAod96Ok-P8b0L.yjgtceMgptc4H85ahkd-YSyfWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 286\r\n\r\n"
4
4
  <- "{\"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\"}}]}"
5
5
  -> "HTTP/1.1 201 Created\r\n"
6
6
  -> "Server: Apache-Coyote/1.1\r\n"
7
- -> "Server: Apache-Coyote/1.1\r\n"
8
- -> "Date: Fri, 22 Mar 2013 13:04:19 GMT\r\n"
7
+ -> "Date: Thu, 25 Apr 2013 10:48:06 GMT\r\n"
8
+ -> "PayPal-Debug-Id: d5acab8deb92c\r\n"
9
9
  -> "Content-Type: application/json\r\n"
10
10
  -> "Content-Length: 1176\r\n"
11
11
  -> "\r\n"
12
12
  reading 1176 bytes...
13
- -> "{\"id\":\"PAY-1AX08346A65232244KFGFNTQ\",\"create_time\":\"2013-03-22T13:04:14Z\",\"update_time\":\"2013-03-22T13:04:19Z\",\"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\":\"78113856697867807\",\"create_time\":\"2013-03-22T13:04:14Z\",\"update_time\":\"2013-03-22T13:04:19Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-1AX08346A65232244KFGFNTQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/78113856697867807\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/78113856697867807/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1AX08346A65232244KFGFNTQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1AX08346A65232244KFGFNTQ\",\"rel\":\"self\",\"method\":\"GET\"}]}"
13
+ -> "{\"id\":\"PAY-4V176325M4053643WKF4QTYY\",\"create_time\":\"2013-04-25T10:48:03Z\",\"update_time\":\"2013-04-25T10:48:06Z\",\"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\":\"4M440216RW8947146\",\"create_time\":\"2013-04-25T10:48:03Z\",\"update_time\":\"2013-04-25T10:48:06Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-4V176325M4053643WKF4QTYY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4M440216RW8947146\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4M440216RW8947146/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-4V176325M4053643WKF4QTYY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-4V176325M4053643WKF4QTYY\",\"rel\":\"self\",\"method\":\"GET\"}]}"
14
14
  read 1176 bytes
15
15
  Conn keep-alive
16
16
  opening connection to api.sandbox.paypal.com...
17
17
  opened
18
- <- "GET /v1/payments/payment?count=10 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer b4fe0spO31qU4hTS7C09MeXPwkUYWpTEwnsi5zr0uWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\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"
18
+ <- "GET /v1/payments/payment?count=10 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer rmEAod96Ok-P8b0L.yjgtceMgptc4H85ahkd-YSyfWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\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"
19
19
  -> "HTTP/1.1 200 OK\r\n"
20
20
  -> "Server: Apache-Coyote/1.1\r\n"
21
- -> "Server: Apache-Coyote/1.1\r\n"
22
- -> "Date: Fri, 22 Mar 2013 13:04:28 GMT\r\n"
23
- -> "Transfer-Encoding: chunked\r\n"
21
+ -> "Date: Thu, 25 Apr 2013 10:48:10 GMT\r\n"
22
+ -> "PayPal-Debug-Id: cc1aa426eb68c\r\n"
24
23
  -> "Content-Type: application/json\r\n"
25
24
  -> "Transfer-Encoding: chunked\r\n"
26
25
  -> "\r\n"
27
26
  -> "2000\r\n"
28
27
  reading 8192 bytes...
29
- -> "{\"payments\":[{\"id\":\"PAY-1AX08346A65232244KFGFNTQ\",\"create_time\":\"2013-03-22T13:04:14Z\",\"update_time\":\"2013-03-22T13:04:19Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"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\":\"78113856697867807\",\"create_time\":\"2013-03-22T13:04:14Z\",\"update_time\":\"2013-03-22T13:04:19Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-1AX08346A65232244KFGFNTQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/78113856697867807\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/78113856697867807/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1AX08346A65232244KFGFNTQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1AX08346A65232244KFGFNTQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-2DC72813BH869702DKFGEGTQ\",\"create_time\":\"2013-03-22T11:41:02Z\",\"update_time\":\"2013-03-22T11:41:07Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"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\":\"5XT971279A076360N\",\"create_time\":\"2013-03-22T11:41:02Z\",\"update_time\":\"2013-03-22T11:41:07Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-2DC72813BH869702DKFGEGTQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/5XT971279A076360N\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/5XT971279A076360N/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-2DC72813BH869702DKFGEGTQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-2DC72813BH869702DKFGEGTQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-9UD65529MM6215510KFGDYPA\",\"create_time\":\"2013-03-22T11:10:52Z\",\"update_time\":\"2013-03-22T11:10:58Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"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\":\"17T29398BX0211646\",\"create_time\":\"2013-03-22T11:10:52Z\",\"update_time\":\"2013-03-22T11:10:58Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-9UD65529MM6215510KFGDYPA\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/17T29398BX0211646\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/17T29398BX0211646/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-9UD65529MM6215510KFGDYPA\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-9UD65529MM6215510KFGDYPA\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-3HB82596RD6395127KFGDR6Q\",\"create_time\":\"2013-03-22T10:56:58Z\",\"update_time\":\"2013-03-22T10:56:58Z\",\"state\":\"created\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"paypal\"},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\"}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3HB82596RD6395127KFGDR6Q\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-2LM96990R2896672V\",\"rel\":\"approval_url\",\"method\":\"REDIRECT\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3HB82596RD6395127KFGDR6Q/execute\",\"rel\":\"execute\",\"method\":\"POST\"}]},{\"id\":\"PAY-3UX72711NA7356331KFGDRZA\",\"create_time\":\"2013-03-22T10:56:36Z\",\"update_time\":\"2013-03-22T10:56:41Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2019\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"3909 Witmer Road\",\"line2\":\"Niagara Falls\",\"city\":\"Niagara Falls\",\"state\":\"NY\",\"postal_code\":\"14305\",\"country_code\":\"US\",\"phone\":\"716-298-1822\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\",\"related_resources\":[{\"sale\":{\"id\":\"5M504253PH037712F\",\"create_time\":\"2013-03-22T10:56:36Z\",\"update_time\":\"2013-03-22T10:56:41Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-3UX72711NA7356331KFGDRZA\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/5M504253PH037712F\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/5M504253PH037712F/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3UX72711NA7356331KFGDRZA\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3UX72711NA7356331KFGDRZA\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-2VT69042CS193912UKFGDRNI\",\"create_time\":\"2013-03-22T10:55:49Z\",\"update_time\":\"2013-03-22T10:55:53Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2019\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"3909 Witmer Road\",\"line2\":\"Niagara Falls\",\"city\":\"Niagara Falls\",\"state\":\"NY\",\"postal_code\":\"14305\",\"country_code\":\"US\",\"phone\":\"716-298-1822\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\",\"related_resources\":[{\"sale\":{\"id\":\"1VM13735B0714272S\",\"create_time\":\"2013-03-22T10:55:49Z\",\"update_time\":\"2013-03-22T10:55:53Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-2VT69042CS193912UKFGDRNI\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/1VM13735B0714272S\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/1VM13735B0714272S/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-2VT69042CS193912UKFGDRNI\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-2VT69042CS193912UKFGDRNI\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-25Y07000N7332745PKFGDRJI\",\"create_time\":\"2013-03-22T10:55:33Z\",\"update_time\":\"2013-03-22T10:55:33Z\",\"state\":\"created\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"paypal\"},\"transactions\":[{\"amount\":{\"total\":\"20.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"20.00\"}},\"description\":\"Pizza 0\",\"item_list\":{\"items\":[{\"name\":\"pizza\",\"price\":\"20.00\",\"currency\":\"USD\",\"quantity\":\"1\"}]}}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-25Y07000N7332745PKFGDRJI\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-2W2549007M3688713\",\"rel\":\"approval_url\",\"method\":\"REDIRECT\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-25Y07000N7332745PKFGDRJI/execute\",\"rel\":\"execute\",\"method\":\"POST\"}]},{\"id\":\"PAY-27K09199995273424KFGDRFY\",\"create_time\":\"2013-03-22T10:55:19Z\",\"update_time\":\"2013-03-22T10:55:23Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"cred"
28
+ -> "{\"payments\":[{\"id\":\"PAY-4V176325M4053643WKF4QTYY\",\"create_time\":\"2013-04-25T10:48:03Z\",\"update_time\":\"2013-04-25T10:48:06Z\",\"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\":\"4M440216RW8947146\",\"create_time\":\"2013-04-25T10:48:03Z\",\"update_time\":\"2013-04-25T10:48:06Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-4V176325M4053643WKF4QTYY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4M440216RW8947146\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4M440216RW8947146/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-4V176325M4053643WKF4QTYY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-4V176325M4053643WKF4QTYY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-7TN670764C5298445KF4QPGI\",\"create_time\":\"2013-04-25T10:38:17Z\",\"update_time\":\"2013-04-25T10:38:23Z\",\"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\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"76N55507AH5227802\",\"create_time\":\"2013-04-25T10:38:17Z\",\"update_time\":\"2013-04-25T10:38:23Z\",\"state\":\"refunded\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-7TN670764C5298445KF4QPGI\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/76N55507AH5227802\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/76N55507AH5227802/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-7TN670764C5298445KF4QPGI\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}},{\"refund\":{\"id\":\"0NV22512548964945\",\"create_time\":\"2013-04-25T10:38:23Z\",\"update_time\":\"2013-04-25T10:38:23Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-7TN670764C5298445KF4QPGI\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/refund/0NV22512548964945\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-7TN670764C5298445KF4QPGI\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-7TN670764C5298445KF4QPGI\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-5P318033B9714045TKF4QPEY\",\"create_time\":\"2013-04-25T10:38:11Z\",\"update_time\":\"2013-04-25T10:38:13Z\",\"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\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"4KU48653LS155130Y\",\"create_time\":\"2013-04-25T10:38:11Z\",\"update_time\":\"2013-04-25T10:38:13Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-5P318033B9714045TKF4QPEY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4KU48653LS155130Y\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4KU48653LS155130Y/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5P318033B9714045TKF4QPEY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-5P318033B9714045TKF4QPEY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-1CB2792639156360XKF4QO7A\",\"create_time\":\"2013-04-25T10:37:48Z\",\"update_time\":\"2013-04-25T10:37:51Z\",\"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\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"2H0726929K574474B\",\"create_time\":\"2013-04-25T10:37:48Z\",\"update_time\":\"2013-04-25T10:37:51Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-1CB2792639156360XKF4QO7A\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/2H0726929K574474B\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/2H0726929K574474B/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1CB2792639156360XKF4QO7A\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1CB2792639156360XKF4QO7A\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-7V627526C20969744KF4QO5I\",\"create_time\":\"2013-04-25T10:37:41Z\",\"update_time\":\"2013-04-25T10:37:43Z\",\"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\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"83A81899W7817181U\",\"create_time\":\"2013-04-25T10:37:41Z\",\"update_time\":\"2013-04-25T10:37:43Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-7V627526C20969744KF4QO5I\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/83A81899W7817181U\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/83A81899W7817181U/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-7V627526C20969744KF4QO5I\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-7V627526C20969744KF4QO5I\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-9N105488J74848037KF4QO3I\",\"create_time\":\"2013-04-25T10:37:33Z\",\"update_time\":\"2013-04-25T10:37:35Z\",\"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\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"4W335777UN8721338\",\"create_time\":\"2013-04-25T10:37:33Z\",\"update_time\":\"2013-04-25T10:37:35Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-9N105488J74848037KF4QO3I\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4W335777UN8721338\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/4W335777UN8721338/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.san"
30
29
  read 8192 bytes
31
30
  reading 2 bytes...
32
31
  -> "\r\n"
33
32
  read 2 bytes
34
- -> "1049\r\n"
35
- reading 4169 bytes...
36
- -> "it_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2019\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"3909 Witmer Road\",\"line2\":\"Niagara Falls\",\"city\":\"Niagara Falls\",\"state\":\"NY\",\"postal_code\":\"14305\",\"country_code\":\"US\",\"phone\":\"716-298-1822\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\",\"related_resources\":[{\"sale\":{\"id\":\"9DM05894Y08768333\",\"create_time\":\"2013-0"
37
- -> "3-22T10:55:19Z\",\"update_time\":\"2013-03-22T10:55:23Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-27K09199995273424KFGDRFY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/9DM05894Y08768333\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/9DM05894Y08768333/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-27K09199995273424KFGDRFY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-27K09199995273424KFGDRFY\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-25J530454N832141TKFGDQFA\",\"create_time\":\"2013-03-22T10:53:08Z\",\"update_time\":\"2013-03-22T10:53:13Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2019\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"3909 Witmer Road\",\"line2\":\"Niagara Falls\",\"city\":\"Niagara Falls\",\"state\":\"NY\",\"postal_code\":\"14305\",\"country_code\":\"US\",\"phone\":\"716-298-1822\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\",\"related_resources\":[{\"sale\":{\"id\":\"28393332H0354223J\",\"create_time\":\"2013-03-22T10:53:08Z\",\"update_time\":\"2013-03-22T10:53:13Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-25J530454N832141TKFGDQFA\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/28393332H0354223J\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/28393332H0354223J/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-25J530454N832141TKFGDQFA\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-25J530454N832141TKFGDQFA\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-1VS067874N109594AKFGDQBY\",\"create_time\":\"2013-03-22T10:52:55Z\",\"update_time\":\"2013-03-22T10:53:00Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"credit_card\",\"funding_instruments\":[{\"credit_card\":{\"payer_id\":\"1861094158886678455\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx0331\",\"expire_month\":\"11\",\"expire_year\":\"2019\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"billing_address\":{\"line1\":\"3909 Witmer Road\",\"line2\":\"Niagara Falls\",\"city\":\"Niagara Falls\",\"state\":\"NY\",\"postal_code\":\"14305\",\"country_code\":\"US\",\"phone\":\"716-298-1822\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment description.\",\"related_resources\":[{\"sale\":{\"id\":\"6JJ15580M33815535\",\"create_time\":\"2013-03-22T10:52:55Z\",\"update_time\":\"2013-03-22T10:53:00Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-1VS067874N109594AKFGDQBY\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/6JJ15580M33815535\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/6JJ15580M33815535/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1VS067874N109594AKFGDQBY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-1VS067874N109594AKFGDQBY\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"count\":10,\"next_id\":\"PAY-88G73618GX733094TKFGDMSQ\"}"
38
- read 4169 bytes
33
+ -> "142a\r\n"
34
+ reading 5162 bytes...
35
+ -> "dbox.paypal.com/v1/payments/payment/PAY-9N105488J74848037KF4QO3I\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-9N105488J74848037KF4QO3I\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-3GL2386337922372BKF4QOZQ\",\"create_time\":\"2013-04-25T10:37:26Z\",\"update_time\":\"2013-04-25T10:37:31Z\",\"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\":\"5"
36
+ -> "2 N Main ST\",\"city\":\"Johnstown\",\"state\":\"OH\",\"postal_code\":\"43210\",\"country_code\":\"US\"}}}]},\"transactions\":[{\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"1.00\"}},\"description\":\"This is the payment transaction description.\",\"related_resources\":[{\"sale\":{\"id\":\"0TJ67271619084815\",\"create_time\":\"2013-04-25T10:37:26Z\",\"update_time\":\"2013-04-25T10:37:31Z\",\"state\":\"completed\",\"amount\":{\"total\":\"1.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-3GL2386337922372BKF4QOZQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/0TJ67271619084815\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/0TJ67271619084815/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3GL2386337922372BKF4QOZQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3GL2386337922372BKF4QOZQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-96E579680F121110PKF4QKZQ\",\"create_time\":\"2013-04-25T10:28:54Z\",\"update_time\":\"2013-04-25T10:29:53Z\",\"state\":\"approved\",\"intent\":\"sale\",\"payer\":{\"payment_method\":\"paypal\",\"payer_info\":{\"email\":\"marcin.gorny-1@gmail.com\",\"first_name\":\"biedronka\",\"last_name\":\"biedronka\",\"payer_id\":\"8EUBH3F2SKJL2\"}},\"transactions\":[{\"amount\":{\"total\":\"20.00\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"20.00\"}},\"description\":\"Pizza13\",\"related_resources\":[{\"sale\":{\"id\":\"37E90389LS3825352\",\"create_time\":\"2013-04-25T10:28:54Z\",\"update_time\":\"2013-04-25T10:29:53Z\",\"state\":\"completed\",\"amount\":{\"total\":\"20.00\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-96E579680F121110PKF4QKZQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/37E90389LS3825352\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/37E90389LS3825352/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-96E579680F121110PKF4QKZQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-96E579680F121110PKF4QKZQ\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-93551992F6539335KKF4QHKA\",\"create_time\":\"2013-04-25T10:21:28Z\",\"update_time\":\"2013-04-25T10:21:30Z\",\"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\":\"49M03446R8590435M\",\"create_time\":\"2013-04-25T10:21:28Z\",\"update_time\":\"2013-04-25T10:21:30Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-93551992F6539335KKF4QHKA\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/49M03446R8590435M\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/49M03446R8590435M/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-93551992F6539335KKF4QHKA\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-93551992F6539335KKF4QHKA\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PAY-3JS16356JD102794YKF4QHHQ\",\"create_time\":\"2013-04-25T10:21:18Z\",\"update_time\":\"2013-04-25T10:21:20Z\",\"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\":\"6LT33095G47591526\",\"create_time\":\"2013-04-25T10:21:18Z\",\"update_time\":\"2013-04-25T10:21:20Z\",\"state\":\"completed\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\"},\"parent_payment\":\"PAY-3JS16356JD102794YKF4QHHQ\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/6LT33095G47591526\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/sale/6LT33095G47591526/refund\",\"rel\":\"refund\",\"method\":\"POST\"},{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3JS16356JD102794YKF4QHHQ\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/payments/payment/PAY-3JS16356JD102794YKF4QHHQ\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"count\":10,\"next_id\":\"PAY-91801461P3077731NKF4QHGI\"}"
37
+ read 5162 bytes
39
38
  reading 2 bytes...
40
39
  -> "\r\n"
41
40
  read 2 bytes
@@ -44,61 +43,61 @@ read 2 bytes
44
43
  Conn keep-alive
45
44
  opening connection to api.sandbox.paypal.com...
46
45
  opened
47
- <- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer qtSkMUjIrlw9c8.J89BQ2TuaFxYiRQD6taKoh66jwOs\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 138\r\n\r\n"
46
+ <- "POST /v1/vault/credit-card HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer oZZJUPoSoOwErVU0Fvf8dWwENTtGDBSERWKfivjakcU\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 138\r\n\r\n"
48
47
  <- "{\"type\":\"visa\",\"number\":\"4111111111111111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"cvv2\":\"874\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\"}"
49
48
  -> "HTTP/1.1 201 Created\r\n"
50
49
  -> "Server: Apache-Coyote/1.1\r\n"
51
- -> "Server: Apache-Coyote/1.1\r\n"
52
- -> "Date: Fri, 22 Mar 2013 13:04:37 GMT\r\n"
50
+ -> "Date: Thu, 25 Apr 2013 10:48:15 GMT\r\n"
51
+ -> "PayPal-Debug-Id: 37464bc9ed4a0\r\n"
53
52
  -> "Content-Type: application/json\r\n"
54
53
  -> "Content-Length: 347\r\n"
55
54
  -> "\r\n"
56
55
  reading 347 bytes...
57
- -> "{\"id\":\"CARD-0A035968NR804235JKFGFNZI\",\"valid_until\":\"2016-03-21T00:00:00.000Z\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-0A035968NR804235JKFGFNZI\",\"rel\":\"self\",\"method\":\"GET\"}]}"
56
+ -> "{\"id\":\"CARD-5NK38980C6213343VKF4QT3Y\",\"valid_until\":\"2016-04-24T00:00:00.000Z\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-5NK38980C6213343VKF4QT3Y\",\"rel\":\"self\",\"method\":\"GET\"}]}"
58
57
  read 347 bytes
59
58
  Conn keep-alive
60
59
  opening connection to api.sandbox.paypal.com...
61
60
  opened
62
- <- "GET /v1/vault/credit-card/CARD-0A035968NR804235JKFGFNZI HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer qtSkMUjIrlw9c8.J89BQ2TuaFxYiRQD6taKoh66jwOs\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\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"
61
+ <- "GET /v1/vault/credit-card/CARD-5NK38980C6213343VKF4QT3Y HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer oZZJUPoSoOwErVU0Fvf8dWwENTtGDBSERWKfivjakcU\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\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"
63
62
  -> "HTTP/1.1 200 OK\r\n"
64
63
  -> "Server: Apache-Coyote/1.1\r\n"
65
- -> "Server: Apache-Coyote/1.1\r\n"
66
- -> "Date: Fri, 22 Mar 2013 13:04:39 GMT\r\n"
64
+ -> "Date: Thu, 25 Apr 2013 10:48:15 GMT\r\n"
65
+ -> "PayPal-Debug-Id: 0e9e5226eca6b\r\n"
67
66
  -> "Content-Type: application/json\r\n"
68
67
  -> "Content-Length: 347\r\n"
69
68
  -> "\r\n"
70
69
  reading 347 bytes...
71
- -> "{\"id\":\"CARD-0A035968NR804235JKFGFNZI\",\"valid_until\":\"2016-03-21T00:00:00.000Z\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-0A035968NR804235JKFGFNZI\",\"rel\":\"self\",\"method\":\"GET\"}]}"
70
+ -> "{\"id\":\"CARD-5NK38980C6213343VKF4QT3Y\",\"valid_until\":\"2016-04-24T00:00:00.000Z\",\"state\":\"ok\",\"type\":\"visa\",\"number\":\"xxxxxxxxxxxx1111\",\"expire_month\":\"11\",\"expire_year\":\"2018\",\"first_name\":\"Joe\",\"last_name\":\"Shopper\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-5NK38980C6213343VKF4QT3Y\",\"rel\":\"self\",\"method\":\"GET\"}]}"
72
71
  read 347 bytes
73
72
  Conn keep-alive
74
73
  opening connection to api.sandbox.paypal.com...
75
74
  opened
76
- <- "GET /v1/payments/payment/PAY-1234 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer b4fe0spO31qU4hTS7C09MeXPwkUYWpTEwnsi5zr0uWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\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"
75
+ <- "GET /v1/payments/payment/PAY-1234 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer rmEAod96Ok-P8b0L.yjgtceMgptc4H85ahkd-YSyfWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\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"
77
76
  -> "HTTP/1.1 404 Not Found\r\n"
78
77
  -> "Server: Apache-Coyote/1.1\r\n"
79
- -> "Server: Apache-Coyote/1.1\r\n"
80
- -> "Date: Fri, 22 Mar 2013 13:04:42 GMT\r\n"
78
+ -> "Date: Thu, 25 Apr 2013 10:48:17 GMT\r\n"
79
+ -> "PayPal-Debug-Id: 8812df9cec100\r\n"
81
80
  -> "Content-Type: application/json\r\n"
82
81
  -> "Content-Length: 189\r\n"
83
82
  -> "\r\n"
84
83
  reading 189 bytes...
85
- -> "{\"name\":\"INVALID_RESOURCE_ID\",\"message\":\"The requested resource ID was not found\",\"information_link\":\"https://developer.paypal.com/docs/api/#INVALID_RESOURCE_ID\",\"debug_id\":\"5a4dc2cd37b5f\"}"
84
+ -> "{\"name\":\"INVALID_RESOURCE_ID\",\"message\":\"The requested resource ID was not found\",\"information_link\":\"https://developer.paypal.com/docs/api/#INVALID_RESOURCE_ID\",\"debug_id\":\"8812df9cec100\"}"
86
85
  read 189 bytes
87
86
  Conn keep-alive
88
87
  opening connection to api.sandbox.paypal.com...
89
88
  opened
90
- <- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer b4fe0spO31qU4hTS7C09MeXPwkUYWpTEwnsi5zr0uWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.0 ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 2\r\n\r\n"
89
+ <- "POST /v1/payments/payment HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer rmEAod96Ok-P8b0L.yjgtceMgptc4H85ahkd-YSyfWA\r\nContent-Type: application/json\r\nUser-Agent: paypal-sdk-core/0.2.2 ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]\r\nAccept: */*\r\nHost: api.sandbox.paypal.com\r\nContent-Length: 2\r\n\r\n"
91
90
  <- "{}"
92
91
  -> "HTTP/1.1 400 Bad Request\r\n"
93
92
  -> "Server: Apache-Coyote/1.1\r\n"
94
- -> "Server: Apache-Coyote/1.1\r\n"
95
- -> "Date: Fri, 22 Mar 2013 13:04:44 GMT\r\n"
93
+ -> "Date: Thu, 25 Apr 2013 10:48:19 GMT\r\n"
96
94
  -> "Connection: close\r\n"
95
+ -> "PayPal-Debug-Id: c985399cec4c8\r\n"
97
96
  -> "Content-Type: application/json\r\n"
98
97
  -> "Content-Length: 346\r\n"
99
98
  -> "Connection: close\r\n"
100
99
  -> "\r\n"
101
100
  reading 346 bytes...
102
- -> "{\"name\":\"VALIDATION_ERROR\",\"details\":[{\"field\":\"transactions\",\"issue\":\"Required field missing\"},{\"field\":\"payer\",\"issue\":\"Required field missing\"},{\"field\":\"intent\",\"issue\":\"Required field missing\"}],\"message\":\"Invalid request - see details\",\"information_link\":\"https://developer.paypal.com/docs/api/#VALIDATION_ERROR\",\"debug_id\":\"c791dfb33726b\"}"
101
+ -> "{\"name\":\"VALIDATION_ERROR\",\"details\":[{\"field\":\"payer\",\"issue\":\"Required field missing\"},{\"field\":\"transactions\",\"issue\":\"Required field missing\"},{\"field\":\"intent\",\"issue\":\"Required field missing\"}],\"message\":\"Invalid request - see details\",\"information_link\":\"https://developer.paypal.com/docs/api/#VALIDATION_ERROR\",\"debug_id\":\"c985399cec4c8\"}"
103
102
  read 346 bytes
104
103
  Conn close