paypal-sdk-rest-pmrb 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +15 -0
- data/README.md +265 -0
- data/Rakefile +15 -0
- data/data/DigiCertHighAssuranceEVRootCA.pem +23 -0
- data/data/DigiCertSHA2ExtendedValidationServerCA.pem +28 -0
- data/data/paypal.crt +193 -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 +29 -0
- data/lib/paypal-sdk-core.rb +38 -0
- data/lib/paypal-sdk-rest.rb +2 -0
- data/lib/paypal-sdk/core/api.rb +20 -0
- data/lib/paypal-sdk/core/api/base.rb +169 -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 +225 -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 +177 -0
- data/lib/paypal-sdk/core/authentication.rb +66 -0
- data/lib/paypal-sdk/core/config.rb +253 -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 +112 -0
- data/lib/paypal-sdk/core/logging.rb +50 -0
- data/lib/paypal-sdk/core/openid_connect.rb +140 -0
- data/lib/paypal-sdk/core/openid_connect/api.rb +50 -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 +171 -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.rb +39 -0
- data/lib/paypal-sdk/rest/api.rb +23 -0
- data/lib/paypal-sdk/rest/data_types.rb +2597 -0
- data/lib/paypal-sdk/rest/error_hash.rb +39 -0
- data/lib/paypal-sdk/rest/get_api.rb +20 -0
- data/lib/paypal-sdk/rest/request_data_type.rb +53 -0
- data/lib/paypal-sdk/rest/set_api.rb +42 -0
- data/lib/paypal-sdk/rest/version.rb +7 -0
- data/spec/README.md +22 -0
- data/spec/config/cacert.pem +171 -0
- data/spec/config/cert_key.pem +33 -0
- data/spec/config/paypal.yml +35 -0
- data/spec/config/sample_data.yml +3 -0
- data/spec/core/api/data_type_spec.rb +289 -0
- data/spec/core/api/rest_spec.rb +211 -0
- data/spec/core/config_spec.rb +192 -0
- data/spec/core/logging_spec.rb +28 -0
- data/spec/core/openid_connect_spec.rb +153 -0
- data/spec/invoice_examples_spec.rb +38 -0
- data/spec/log/http.log +175 -0
- data/spec/log/rest_http.log +0 -0
- data/spec/payments_examples_spec.rb +437 -0
- data/spec/payouts_examples_spec.rb +74 -0
- data/spec/rest/data_types_spec.rb +62 -0
- data/spec/rest/error_hash_spec.rb +83 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/subscription_examples_spec.rb +227 -0
- data/spec/support/sample_data.rb +5 -0
- data/spec/web_profile_examples_spec.rb +106 -0
- data/spec/webhooks_examples_spec.rb +93 -0
- metadata +177 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Invoice", :integration => true do
|
4
|
+
|
5
|
+
InvoiceAttributes = {
|
6
|
+
"merchant_info" => {
|
7
|
+
"email" => "jaypatel512-facilitator@hotmail.com"
|
8
|
+
},
|
9
|
+
"billing_info" => [ { "email" => "example@example.com" } ],
|
10
|
+
"items" => [
|
11
|
+
{
|
12
|
+
"name" => "Sutures",
|
13
|
+
"quantity" => 100,
|
14
|
+
"unit_price" => {
|
15
|
+
"currency" => "USD",
|
16
|
+
"value" => 5
|
17
|
+
}
|
18
|
+
}
|
19
|
+
],
|
20
|
+
"note" => "Medical Invoice 16 Jul, 2013 PST"
|
21
|
+
}
|
22
|
+
|
23
|
+
it "create invoice" do
|
24
|
+
invoice = PayPal::SDK::REST::Invoice.new(InvoiceAttributes)
|
25
|
+
expect(invoice.create).to be_truthy
|
26
|
+
end
|
27
|
+
|
28
|
+
it "list invoice" do
|
29
|
+
history = PayPal::SDK::REST::Invoice.get_all( :total_count_required =>true )
|
30
|
+
expect(history.total_count).not_to be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "get invoice" do
|
34
|
+
invoice = PayPal::SDK::REST::Invoice.find("INV2-6KYE-67GV-8AJR-SAER")
|
35
|
+
expect(invoice).to be_a PayPal::SDK::REST::Invoice
|
36
|
+
expect(invoice.id).to eql "INV2-6KYE-67GV-8AJR-SAER"
|
37
|
+
end
|
38
|
+
end
|
data/spec/log/http.log
ADDED
@@ -0,0 +1,175 @@
|
|
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/catalogs/products HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\r\nPaypal-Request-Id: c110df92-a2e3-41e8-92a1-d61d60caea47\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: 199\r\n\r\n"
|
6
|
+
<- "{\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"type\":\"SERVICE\",\"category\":\"SOFTWARE\",\"image_url\":\"https://example.com/streaming.jpg\",\"home_url\":\"https://example.com/home\"}"
|
7
|
+
-> "HTTP/1.1 201 Created\r\n"
|
8
|
+
-> "Date: Thu, 20 Jun 2019 14:08:35 GMT\r\n"
|
9
|
+
-> "Server: Apache\r\n"
|
10
|
+
-> "paypal-debug-id: 9225ea5cb8d9a\r\n"
|
11
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
12
|
+
-> "Paypal-Debug-Id: 9225ea5cb8d9a\r\n"
|
13
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1670581085%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:35 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
14
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
15
|
+
-> "Vary: Authorization\r\n"
|
16
|
+
-> "Content-Length: 381\r\n"
|
17
|
+
-> "Connection: close\r\n"
|
18
|
+
-> "Content-Type: application/json\r\n"
|
19
|
+
-> "\r\n"
|
20
|
+
reading 381 bytes...
|
21
|
+
-> "{\"id\":\"PROD-2TH454956H633411P\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"create_time\":\"2019-06-20T14:08:35Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2TH454956H633411P\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2TH454956H633411P\",\"rel\":\"edit\",\"method\":\"PATCH\"}]}"
|
22
|
+
read 381 bytes
|
23
|
+
Conn close
|
24
|
+
opening connection to api.sandbox.paypal.com:443...
|
25
|
+
opened
|
26
|
+
starting SSL for api.sandbox.paypal.com:443...
|
27
|
+
SSL established
|
28
|
+
<- "GET /v1/catalogs/products?page_size=99&total_required=true HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\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"
|
29
|
+
-> "HTTP/1.1 200 OK\r\n"
|
30
|
+
-> "Date: Thu, 20 Jun 2019 14:08:36 GMT\r\n"
|
31
|
+
-> "Server: Apache\r\n"
|
32
|
+
-> "paypal-debug-id: 4029769b40014\r\n"
|
33
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
34
|
+
-> "Paypal-Debug-Id: 4029769b40014\r\n"
|
35
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1687358301%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:36 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
36
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
37
|
+
-> "Vary: Authorization\r\n"
|
38
|
+
-> "Connection: close\r\n"
|
39
|
+
-> "Transfer-Encoding: chunked\r\n"
|
40
|
+
-> "Content-Type: application/json\r\n"
|
41
|
+
-> "\r\n"
|
42
|
+
-> "2000\r\n"
|
43
|
+
reading 8192 bytes...
|
44
|
+
-> ""
|
45
|
+
-> "{\"products\":[{\"id\":\"PROD-88P66116U8424713Y\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-88P66116U8424713Y\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-9HR25263MW049305R\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9HR25263MW049305R\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-6N696826HG113224A\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-6N696826HG113224A\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-27M99624TE143843E\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-27M99624TE143843E\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-7RY89329KN7803222\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-7RY89329KN7803222\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-3KE343427A712191C\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-3KE343427A712191C\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2RK5942798309264B\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2RK5942798309264B\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-8MX8812952166872B\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-8MX8812952166872B\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4N2795536X5381140\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4N2795536X5381140\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4HW458221B2951531\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4HW458221B2951531\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4FN0679242198735T\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4FN0679242198735T\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-9KH91817U6217692V\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9KH91817U6217692V\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4R285588KV4469238\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4R285588KV4469238\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-3SP328368F401020A\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-3SP328368F401020A\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-5H899287EC102604X\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-5H899287EC102604X\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-1LL701415A885501N\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-1LL701415A885501N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-1WK9470583999374J\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-1WK9470583999374J\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-03305783CL1520143\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-03305783CL1520143\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-27X1077636135754X\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-27X1077636135754X\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-1S707532XJ8460936\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-1S707532XJ8460936\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-26K19609M72274849\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-26K19609M72274849\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-7WR46934VF294752N\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-7WR46934VF294752N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2AD63024DP278321E\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2AD63024DP278321E\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-5D466893YC6738502\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-5D466893YC6738502\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-87J53413AC569925A\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-87J53413AC569925A\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-45K97299DY4079610\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-45K97299DY4079610\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-9EM270580D5144407\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9EM270580D5144407\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-44X18262XM369262K\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-44X18262XM369262K\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-7HA77800KP103692P\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-7HA77800KP103692P\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-45347439SP9015829\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-45347439SP9015829\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-06N54517KT2707919\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-06N54517KT2707919\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-38U021592D6077444\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-38U021592D6077444\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-31R388081G1636052\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-31R388081G1636052\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2YA54096D37972117\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2YA54096D37972117\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-8JP83890WK478815N\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-8JP83890WK478815N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-7GM866379C284591N\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-7GM866379C284591N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-17231329HM741940W\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-17231329HM741940W\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-1XS14307924998900\""
|
46
|
+
read 8192 bytes
|
47
|
+
reading 2 bytes...
|
48
|
+
-> ""
|
49
|
+
-> "\r\n"
|
50
|
+
read 2 bytes
|
51
|
+
-> "15f5\r\n"
|
52
|
+
reading 5621 bytes...
|
53
|
+
-> ""
|
54
|
+
-> ",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-1XS14307924998900\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-29S30004HB811152U\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-29S30004HB811152U\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-53271887CD151284K\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-53271887CD151284K\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2KX55625S8611251V\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2KX55625S8611251V\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-6G654233NV063351W\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-6G654233NV063351W\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-7N229559MX8840154\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-7N229559MX8840154\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-5LY78944L0615893M\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-5LY78944L0615893M\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-93263879DU4052047\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-93263879DU4052047\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-00S71064VJ717570N\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-00S71064VJ717570N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-3Y218025DC540635L\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-3Y218025DC540635L\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2FY85319U1181950H\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2FY85319U1181950H\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-0FP590913B222104R\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-0FP590913B222104R\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-5AG62884JS725423D\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-5AG62884JS725423D\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4R623883VM371433K\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4R623883VM371433K\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4F695312355081434\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4F695312355081434\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-3CJ45351NR353464N\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-3CJ45351NR353464N\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-79799678UR6102740\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-79799678UR6102740\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-1HX815213L743425E\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-1HX815213L743425E\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2PM25506D7287145L\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2PM25506D7287145L\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-5TH73023L52525018\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-5TH73023L52525018\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-0U762116706527633\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-0U762116706527633\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-6GV203945K987723H\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-6GV203945K987723H\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-4R917551KP670700L\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-4R917551KP670700L\",\"rel\":\"self\",\"method\":\"GET\"}]},{\"id\":\"PROD-2TH454956H633411P\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-2TH454956H633411P\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"total_items\":61,\"total_pages\":1,\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=99&page=1\",\"rel\":\"self\",\"method\":\"GET\"}]}"
|
55
|
+
read 5621 bytes
|
56
|
+
reading 2 bytes...
|
57
|
+
-> ""
|
58
|
+
-> "\r\n"
|
59
|
+
read 2 bytes
|
60
|
+
-> "0\r\n"
|
61
|
+
-> "\r\n"
|
62
|
+
Conn close
|
63
|
+
opening connection to api.sandbox.paypal.com:443...
|
64
|
+
opened
|
65
|
+
starting SSL for api.sandbox.paypal.com:443...
|
66
|
+
SSL established
|
67
|
+
<- "GET /v1/catalogs/products?page_size=1&total_required=true HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\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"
|
68
|
+
-> "HTTP/1.1 200 OK\r\n"
|
69
|
+
-> "Date: Thu, 20 Jun 2019 14:08:36 GMT\r\n"
|
70
|
+
-> "Server: Apache\r\n"
|
71
|
+
-> "paypal-debug-id: 799c68c0d4382\r\n"
|
72
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
73
|
+
-> "Paypal-Debug-Id: 799c68c0d4382\r\n"
|
74
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1687358301%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:36 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
75
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
76
|
+
-> "Vary: Authorization\r\n"
|
77
|
+
-> "Content-Length: 606\r\n"
|
78
|
+
-> "Connection: close\r\n"
|
79
|
+
-> "Content-Type: application/json\r\n"
|
80
|
+
-> "\r\n"
|
81
|
+
reading 606 bytes...
|
82
|
+
-> "{\"products\":[{\"id\":\"PROD-88P66116U8424713Y\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-88P66116U8424713Y\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"total_items\":61,\"total_pages\":61,\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=1\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=2\",\"rel\":\"next\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=61\",\"rel\":\"last\",\"method\":\"GET\"}]}"
|
83
|
+
read 606 bytes
|
84
|
+
Conn close
|
85
|
+
opening connection to api.sandbox.paypal.com:443...
|
86
|
+
opened
|
87
|
+
starting SSL for api.sandbox.paypal.com:443...
|
88
|
+
SSL established
|
89
|
+
<- "GET /v1/catalogs/products/?page_size=1&page=2 HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\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"
|
90
|
+
-> "HTTP/1.1 200 OK\r\n"
|
91
|
+
-> "Date: Thu, 20 Jun 2019 14:08:37 GMT\r\n"
|
92
|
+
-> "Server: Apache\r\n"
|
93
|
+
-> "paypal-debug-id: 1cc68fda5449c\r\n"
|
94
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
95
|
+
-> "Paypal-Debug-Id: 1cc68fda5449c\r\n"
|
96
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1704135517%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:37 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
97
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
98
|
+
-> "Vary: Authorization\r\n"
|
99
|
+
-> "Content-Length: 793\r\n"
|
100
|
+
-> "Connection: close\r\n"
|
101
|
+
-> "Content-Type: application/json\r\n"
|
102
|
+
-> "\r\n"
|
103
|
+
reading 793 bytes...
|
104
|
+
-> "{\"products\":[{\"id\":\"PROD-9HR25263MW049305R\",\"name\":\"My Cool Service\",\"description\":\"Service-Description\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9HR25263MW049305R\",\"rel\":\"self\",\"method\":\"GET\"}]}],\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=2\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=1\",\"rel\":\"first\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=1\",\"rel\":\"prev\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=3\",\"rel\":\"next\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products?page_size=1&page=61\",\"rel\":\"last\",\"method\":\"GET\"}]}"
|
105
|
+
read 793 bytes
|
106
|
+
Conn close
|
107
|
+
opening connection to api.sandbox.paypal.com:443...
|
108
|
+
opened
|
109
|
+
starting SSL for api.sandbox.paypal.com:443...
|
110
|
+
SSL established
|
111
|
+
<- "POST /v1/catalogs/products HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\r\nPaypal-Request-Id: ea1f9f40-629a-4e24-8a83-00d9ca5c483a\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: 199\r\n\r\n"
|
112
|
+
<- "{\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"type\":\"SERVICE\",\"category\":\"SOFTWARE\",\"image_url\":\"https://example.com/streaming.jpg\",\"home_url\":\"https://example.com/home\"}"
|
113
|
+
-> "HTTP/1.1 201 Created\r\n"
|
114
|
+
-> "Date: Thu, 20 Jun 2019 14:08:37 GMT\r\n"
|
115
|
+
-> "Server: Apache\r\n"
|
116
|
+
-> "paypal-debug-id: 14d36013dac11\r\n"
|
117
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
118
|
+
-> "Paypal-Debug-Id: 14d36013dac11\r\n"
|
119
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1704135517%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:38 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
120
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
121
|
+
-> "Vary: Authorization\r\n"
|
122
|
+
-> "Content-Length: 381\r\n"
|
123
|
+
-> "Connection: close\r\n"
|
124
|
+
-> "Content-Type: application/json\r\n"
|
125
|
+
-> "\r\n"
|
126
|
+
reading 381 bytes...
|
127
|
+
-> "{\"id\":\"PROD-9JL54131RW723273F\",\"name\":\"Video Streaming Service\",\"description\":\"Video streaming service\",\"create_time\":\"2019-06-20T14:08:38Z\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9JL54131RW723273F\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/catalogs/products/PROD-9JL54131RW723273F\",\"rel\":\"edit\",\"method\":\"PATCH\"}]}"
|
128
|
+
read 381 bytes
|
129
|
+
Conn close
|
130
|
+
opening connection to api.sandbox.paypal.com:443...
|
131
|
+
opened
|
132
|
+
starting SSL for api.sandbox.paypal.com:443...
|
133
|
+
SSL established
|
134
|
+
<- "POST /v1/billing/plans/ HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\r\nPaypal-Request-Id: 2c389b8a-4fa9-4ff8-9e0b-ffd25ba1242a\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: 621\r\n\r\n"
|
135
|
+
<- "{\"product_id\":\"PROD-9JL54131RW723273F\",\"name\":\"Basic Plan\",\"description\":\"Basic plan\",\"billing_cycles\":[{\"frequency\":{\"interval_unit\":\"MONTH\",\"interval_count\":1},\"tenure_type\":\"TRIAL\",\"sequence\":1,\"total_cycles\":1},{\"frequency\":{\"interval_unit\":\"MONTH\",\"interval_count\":1},\"tenure_type\":\"REGULAR\",\"sequence\":2,\"total_cycles\":12,\"pricing_scheme\":{\"fixed_price\":{\"currency_code\":\"USD\",\"value\":\"10\"}}}],\"payment_preferences\":{\"service_type\":\"PREPAID\",\"auto_bill_outstanding\":true,\"setup_fee\":{\"currency_code\":\"USD\",\"value\":\"10\"},\"setup_fee_failure_action\":\"CONTINUE\",\"payment_failure_threshold\":3},\"quantity_supported\":true}"
|
136
|
+
-> "HTTP/1.1 201 Created\r\n"
|
137
|
+
-> "Date: Thu, 20 Jun 2019 14:08:38 GMT\r\n"
|
138
|
+
-> "Server: Apache\r\n"
|
139
|
+
-> "paypal-debug-id: c4ce4c5c602fc\r\n"
|
140
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
141
|
+
-> "Paypal-Debug-Id: c4ce4c5c602fc\r\n"
|
142
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1720912733%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:38 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
143
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
144
|
+
-> "Vary: Authorization\r\n"
|
145
|
+
-> "Content-Length: 457\r\n"
|
146
|
+
-> "Connection: close\r\n"
|
147
|
+
-> "Content-Type: application/json\r\n"
|
148
|
+
-> "\r\n"
|
149
|
+
reading 457 bytes...
|
150
|
+
-> "{\"id\":\"P-0SF499894B180714ELUFZGZQ\",\"product_id\":\"PROD-9JL54131RW723273F\",\"status\":\"ACTIVE\",\"links\":[{\"href\":\"https://api.sandbox.paypal.com/v1/billing/plans/P-0SF499894B180714ELUFZGZQ\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/billing/plans/P-0SF499894B180714ELUFZGZQ\",\"rel\":\"edit\",\"method\":\"PATCH\"},{\"href\":\"https://api.sandbox.paypal.com/v1/billing/plans/P-0SF499894B180714ELUFZGZQ/deactivate\",\"rel\":\"self\",\"method\":\"POST\"}]}"
|
151
|
+
read 457 bytes
|
152
|
+
Conn close
|
153
|
+
opening connection to api.sandbox.paypal.com:443...
|
154
|
+
opened
|
155
|
+
starting SSL for api.sandbox.paypal.com:443...
|
156
|
+
SSL established
|
157
|
+
<- "POST /v1/billing/subscriptions/ HTTP/1.1\r\nX-Paypal-Sandbox-Email-Address: Platform.sdk.seller@gmail.com\r\nAuthorization: Bearer A21AAG8MoVno3Y9NQ2vroTmt44Cj6hQkReVae6MxBoBIK3C-0Unfc7GWR-hEDS1YkzC9mPb-g0AT0ZFz_57dbdlC5BYSpKMWA\r\nContent-Type: application/json\r\nUser-Agent: PayPalSDK/PayPal-Ruby-SDK 1.7.3 (paypal-sdk-core 1.7.3; ruby 2.5.1p57-x86_64-darwin16;OpenSSL 1.1.1 11 Sep 2018)\r\nPaypal-Request-Id: 67140417-a458-41e5-9699-f506d94981c8\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: 816\r\n\r\n"
|
158
|
+
<- "{\"plan_id\":\"P-0SF499894B180714ELUFZGZQ\",\"start_time\":\"2019-06-21T00:00:00+00:00\",\"quantity\":20,\"shipping_amount\":{\"currency_code\":\"USD\",\"value\":\"10.00\"},\"subscriber\":{\"name\":{\"given_name\":\"John\",\"surname\":\"Doe\"},\"email_address\":\"customer@example.com\",\"shipping_address\":{\"name\":{\"full_name\":\"John Doe\"},\"address\":{\"address_line_1\":\"2211 N First Street\",\"address_line_2\":\"Building 17\",\"admin_area_2\":\"San Jose\",\"admin_area_1\":\"CA\",\"postal_code\":\"95131\",\"country_code\":\"US\"}}},\"auto_renewal\":true,\"application_context\":{\"brand_name\":\"example\",\"locale\":\"en-US\",\"shipping_preference\":\"SET_PROVIDED_ADDRESS\",\"user_action\":\"SUBSCRIBE_NOW\",\"payment_method\":{\"payer_selected\":\"PAYPAL\",\"payee_preferred\":\"IMMEDIATE_PAYMENT_REQUIRED\"},\"return_url\":\"https://example.com/returnUrl\",\"cancel_url\":\"https://example.com/cancelUrl\"}}"
|
159
|
+
-> "HTTP/1.1 201 Created\r\n"
|
160
|
+
-> "Date: Thu, 20 Jun 2019 14:08:39 GMT\r\n"
|
161
|
+
-> "Server: Apache\r\n"
|
162
|
+
-> "paypal-debug-id: 3c63e360dd8\r\n"
|
163
|
+
-> "HTTP_X_PP_AZ_LOCATOR: sandbox.slc\r\n"
|
164
|
+
-> "Paypal-Debug-Id: 3c63e360dd8\r\n"
|
165
|
+
-> "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dapiplatformproxyserv%26TIME%3D1737689949%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Thu, 20 Jun 2019 14:38:43 GMT; domain=.paypal.com; path=/; Secure; HttpOnly\r\n"
|
166
|
+
-> "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT\r\n"
|
167
|
+
-> "Vary: Authorization\r\n"
|
168
|
+
-> "Content-Length: 453\r\n"
|
169
|
+
-> "Connection: close\r\n"
|
170
|
+
-> "Content-Type: application/json\r\n"
|
171
|
+
-> "\r\n"
|
172
|
+
reading 453 bytes...
|
173
|
+
-> "{\"status\":\"APPROVAL_PENDING\",\"id\":\"I-LHUEXTYXXBY4\",\"create_time\":\"2019-06-20T14:08:43Z\",\"links\":[{\"href\":\"https://www.sandbox.paypal.com/webapps/billing/subscriptions?ba_token=BA-8BF77932M4407092C\",\"rel\":\"approve\",\"method\":\"GET\"},{\"href\":\"https://api.sandbox.paypal.com/v1/billing/subscriptions/I-LHUEXTYXXBY4\",\"rel\":\"edit\",\"method\":\"PATCH\"},{\"href\":\"https://api.sandbox.paypal.com/v1/billing/subscriptions/I-LHUEXTYXXBY4\",\"rel\":\"self\",\"method\":\"GET\"}]}"
|
174
|
+
read 453 bytes
|
175
|
+
Conn close
|
File without changes
|
@@ -0,0 +1,437 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'json'
|
3
|
+
require 'webmock/rspec'
|
4
|
+
|
5
|
+
describe "Payments" do
|
6
|
+
|
7
|
+
PaymentAttributes = {
|
8
|
+
"intent" => "sale",
|
9
|
+
"payer" => {
|
10
|
+
"payment_method" => "credit_card",
|
11
|
+
"funding_instruments" => [ {
|
12
|
+
"credit_card" => {
|
13
|
+
"type" => "visa",
|
14
|
+
"number" => "4567516310777851",
|
15
|
+
"expire_month" => "11", "expire_year" => "2018",
|
16
|
+
"cvv2" => "874",
|
17
|
+
"first_name" => "Joe", "last_name" => "Shopper",
|
18
|
+
"billing_address" => {
|
19
|
+
"line1" => "52 N Main ST",
|
20
|
+
"city" => "Johnstown",
|
21
|
+
"state" => "OH",
|
22
|
+
"postal_code" => "43210", "country_code" => "US" } } } ] },
|
23
|
+
"transactions" => [ {
|
24
|
+
"amount" => {
|
25
|
+
"total" => "1.00",
|
26
|
+
"currency" => "USD" },
|
27
|
+
"description" => "This is the payment transaction description." } ] }
|
28
|
+
|
29
|
+
PaymentAttributesPayPal = {
|
30
|
+
"intent" => "sale",
|
31
|
+
"payer" => {
|
32
|
+
"payment_method" => "paypal"
|
33
|
+
},
|
34
|
+
"redirect_urls" => {
|
35
|
+
"return_url" => 'https://localhost/return',
|
36
|
+
"cancel_url" => 'https://localhost/cancel',
|
37
|
+
},
|
38
|
+
"transactions" => [ {
|
39
|
+
"amount" => {
|
40
|
+
"total" => "1.00",
|
41
|
+
"currency" => "USD" },
|
42
|
+
"description" => "This is the payment transaction description." } ] }
|
43
|
+
|
44
|
+
FuturePaymentAttributes = {
|
45
|
+
"intent" => "authorize",
|
46
|
+
"payer" => {
|
47
|
+
"payment_method" => "paypal" },
|
48
|
+
"transactions" => [ {
|
49
|
+
"amount" => {
|
50
|
+
"total" => "1.00",
|
51
|
+
"currency" => "USD" },
|
52
|
+
"description" => "This is the payment transaction description." } ] }
|
53
|
+
|
54
|
+
ProcessorErrorResponse = {
|
55
|
+
"name" => "INSTRUMENT_DECLINED",
|
56
|
+
"message" => "The instrument presented was either declined by the processor or bank, or it can't be used for this payment.",
|
57
|
+
"information_link" => "https://developer.paypal.com/docs/api/#INSTRUMENT_DECLINED",
|
58
|
+
"debug_id" => "20dcd4f71107c",
|
59
|
+
"another_thing" => {
|
60
|
+
"avs_code" => "Y",
|
61
|
+
"cvv_code" => "N",
|
62
|
+
"response_code" => "0051"
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
it "Validate user-agent", :unit => true do
|
67
|
+
expect(PayPal::SDK::REST::API.user_agent).to match "PayPalSDK/PayPal-Ruby-SDK"
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "Examples" do
|
71
|
+
describe "REST", :unit => true do
|
72
|
+
it "Modifiy global configuration" do
|
73
|
+
backup_config = PayPal::SDK::REST.api.config
|
74
|
+
PayPal::SDK::REST.set_config( :client_id => "XYZ" )
|
75
|
+
expect(PayPal::SDK::REST.api.config.client_id).to eql "XYZ"
|
76
|
+
PayPal::SDK::REST.set_config(backup_config)
|
77
|
+
expect(PayPal::SDK::REST.api.config.client_id).not_to eql "XYZ"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "Create - does not return true when error not provided in response" do
|
81
|
+
oauth_response = {
|
82
|
+
:scope => "https://uri.paypal.com/services/subscriptions https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://uri.paypal.com/services/applications/webhooks openid https://uri.paypal.com/payments/payouts https://api.paypal.com/v1/vault/credit-card/.*",
|
83
|
+
:nonce => "2016-10-04T18:00:00ZP3PcGAv5XAncoc8Zt4MF5cRLlaEBW3OAoLEhMIFk--g",
|
84
|
+
:access_token => "A101.tp_sF5GHqWnnqEQA13Ua5ABnIhRWgd-G9LhRnJdgOvJHc_L08zlfD9WgPF4I3kre.mShauuOGxWyw8ikViItmxkWmX78",
|
85
|
+
:token_type => "Bearer",
|
86
|
+
:app_id => "APP-80W284485P519543T",
|
87
|
+
:expires_in => 30695
|
88
|
+
}
|
89
|
+
|
90
|
+
response_headers = {
|
91
|
+
"date" => ["Fri, 09 Sep 2016 17:44:23 GMT"],
|
92
|
+
"server" => ["Apache"],
|
93
|
+
"proxy_server_info" => ["host=dcg12javapapi8768.dcg12.slc.paypalinc.com;threadId=1177"],
|
94
|
+
"paypal-debug-id" => ["20dcd4f71107c", "20dcd4f71107c"],
|
95
|
+
"correlation-id" => ["20dcd4f71107c"],
|
96
|
+
"content-language" => ["*"],
|
97
|
+
"connection" => ["close", "close"],
|
98
|
+
"set-cookie" => ["X-PP-SILOVER=name%3DLIVE3.API.1%26silo_version%3D880%26app%3Dplatformapiserv%26TIME%3D4160016983%26HTTP_X_PP_AZ_LOCATOR%3Ddcg12.slc; Expires=Fri, 09 Sep 2016 18:14:25 GMT; domain=.paypal.com; path=/; Secure; HttpOnly", "X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT"],
|
99
|
+
"vary" => ["Authorization"],
|
100
|
+
"content-length" => ["335"],
|
101
|
+
"content-type"=>["application/json"]
|
102
|
+
}
|
103
|
+
|
104
|
+
stub_request(:post, "https://api.sandbox.paypal.com/v1/oauth2/token")
|
105
|
+
.to_return(:body => oauth_response.to_json)
|
106
|
+
|
107
|
+
stub_request(:post, "https://api.sandbox.paypal.com/v1/payments/payment")
|
108
|
+
.to_return(:body => ProcessorErrorResponse.to_json, :status => 400, :headers => response_headers)
|
109
|
+
|
110
|
+
payment = Payment.new(PaymentAttributes)
|
111
|
+
expect(payment.create).to be_falsey
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "Payment", :integration => true do
|
116
|
+
it "Create" do
|
117
|
+
payment = Payment.new(PaymentAttributes)
|
118
|
+
# Create
|
119
|
+
payment.create
|
120
|
+
expect(payment.error).to be_nil
|
121
|
+
expect(payment.id).not_to be_nil
|
122
|
+
expect(payment.approval_url).to be_nil
|
123
|
+
expect(payment.token).to be_nil
|
124
|
+
end
|
125
|
+
|
126
|
+
it "Create with request_id" do
|
127
|
+
payment = Payment.new(PaymentAttributes)
|
128
|
+
payment.create
|
129
|
+
expect(payment.error).to be_nil
|
130
|
+
|
131
|
+
request_id = payment.request_id
|
132
|
+
|
133
|
+
new_payment = Payment.new(PaymentAttributes.merge( :request_id => request_id ))
|
134
|
+
new_payment.create
|
135
|
+
expect(new_payment.error).to be_nil
|
136
|
+
|
137
|
+
expect(payment.id).to eql new_payment.id
|
138
|
+
end
|
139
|
+
|
140
|
+
it "Create with token" do
|
141
|
+
api = API.new
|
142
|
+
payment = Payment.new(PaymentAttributes.merge( :token => api.token ))
|
143
|
+
expect(Payment.api).not_to eql payment.api
|
144
|
+
payment.create
|
145
|
+
expect(payment.error).to be_nil
|
146
|
+
expect(payment.id).not_to be_nil
|
147
|
+
end
|
148
|
+
|
149
|
+
it "Create with client_id and client_secret" do
|
150
|
+
api = API.new
|
151
|
+
payment = Payment.new(PaymentAttributes.merge( :client_id => api.config.client_id, :client_secret => api.config.client_secret))
|
152
|
+
expect(Payment.api).not_to eql payment.api
|
153
|
+
payment.create
|
154
|
+
expect(payment.error).to be_nil
|
155
|
+
expect(payment.id).not_to be_nil
|
156
|
+
end
|
157
|
+
|
158
|
+
it "Create with redirect urls" do
|
159
|
+
payment = Payment.new(PaymentAttributesPayPal)
|
160
|
+
# Create
|
161
|
+
payment.create
|
162
|
+
expect(payment.error).to be_nil
|
163
|
+
expect(payment.id).not_to be_nil
|
164
|
+
expect(payment.approval_url).to include('webscr?cmd=_express-checkout')
|
165
|
+
expect(payment.approval_url).not_to include('useraction=commit')
|
166
|
+
expect(payment.approval_url(true)).to eq payment.approval_url + '&useraction=commit'
|
167
|
+
expect(payment.token).to match /^EC-[A-Z0-9]+$/
|
168
|
+
end
|
169
|
+
|
170
|
+
it "List" do
|
171
|
+
payment_history = Payment.all( "count" => 5 )
|
172
|
+
expect(payment_history.error).to be_nil
|
173
|
+
expect(payment_history.count).to eql 5
|
174
|
+
end
|
175
|
+
|
176
|
+
it "Find" do
|
177
|
+
payment_history = Payment.all( "count" => 1 )
|
178
|
+
payment = Payment.find(payment_history.payments[0].id)
|
179
|
+
expect(payment.error).to be_nil
|
180
|
+
end
|
181
|
+
|
182
|
+
describe "Validation", :integration => true do
|
183
|
+
|
184
|
+
it "Create with empty values" do
|
185
|
+
payment = Payment.new
|
186
|
+
expect(payment.create).to be_falsey
|
187
|
+
end
|
188
|
+
|
189
|
+
it "Find with invalid ID" do
|
190
|
+
expect {
|
191
|
+
payment = Payment.find("Invalid")
|
192
|
+
}.to raise_error PayPal::SDK::Core::Exceptions::ResourceNotFound
|
193
|
+
end
|
194
|
+
|
195
|
+
it "Find with nil" do
|
196
|
+
expect{
|
197
|
+
payment = Payment.find(nil)
|
198
|
+
}.to raise_error ArgumentError
|
199
|
+
end
|
200
|
+
|
201
|
+
it "Find with empty string" do
|
202
|
+
expect{
|
203
|
+
payment = Payment.find("")
|
204
|
+
}.to raise_error ArgumentError
|
205
|
+
end
|
206
|
+
|
207
|
+
it "Find record with expired token" do
|
208
|
+
expect {
|
209
|
+
Payment.api.token
|
210
|
+
Payment.api.token.sub!(/^/, "Expired")
|
211
|
+
Payment.all(:count => 1)
|
212
|
+
}.not_to raise_error
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
# describe "instance method" do
|
217
|
+
|
218
|
+
# it "Execute" do
|
219
|
+
# pending "Test with capybara"
|
220
|
+
# end
|
221
|
+
# end
|
222
|
+
|
223
|
+
end
|
224
|
+
|
225
|
+
describe "Future Payment", :disabled => true do
|
226
|
+
access_token = nil
|
227
|
+
|
228
|
+
it "Exchange Authorization Code for Refresh / Access Tokens" do
|
229
|
+
|
230
|
+
# put your authorization code for testing here
|
231
|
+
auth_code = ''
|
232
|
+
|
233
|
+
if auth_code != ''
|
234
|
+
tokeninfo = FuturePayment.exch_token(auth_code)
|
235
|
+
expect(tokeninfo.access_token).not_to be_nil
|
236
|
+
expect(tokeninfo.refresh_token).not_to be_nil
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
it "Create a payment" do
|
241
|
+
# put your PAYPAL-CLIENT-METADATA-ID
|
242
|
+
correlation_id = ''
|
243
|
+
@future_payment = FuturePayment.new(FuturePaymentAttributes.merge( :token => access_token ))
|
244
|
+
@future_payment.create(correlation_id)
|
245
|
+
expect(@future_payment.error).to be_nil
|
246
|
+
expect(@future_payment.id).not_to be_nil
|
247
|
+
end
|
248
|
+
|
249
|
+
end
|
250
|
+
|
251
|
+
describe "Sale", :integration => true do
|
252
|
+
before :each do
|
253
|
+
@payment = Payment.new(PaymentAttributes)
|
254
|
+
@payment.create
|
255
|
+
expect(@payment).to be_success
|
256
|
+
end
|
257
|
+
|
258
|
+
it "Find" do
|
259
|
+
sale = Sale.find(@payment.transactions[0].related_resources[0].sale.id)
|
260
|
+
expect(sale.error).to be_nil
|
261
|
+
expect(sale).to be_a Sale
|
262
|
+
end
|
263
|
+
|
264
|
+
describe "instance method" do
|
265
|
+
it "Refund" do
|
266
|
+
sale = @payment.transactions[0].related_resources[0].sale
|
267
|
+
refund = sale.refund( :amount => { :total => "1.00", :currency => "USD" } )
|
268
|
+
expect(refund.error).to be_nil
|
269
|
+
|
270
|
+
refund = Refund.find(refund.id)
|
271
|
+
expect(refund.error).to be_nil
|
272
|
+
expect(refund).to be_a Refund
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
describe "Order", :integration => true do
|
278
|
+
it "Find" do
|
279
|
+
order = Order.find("O-2HT09787H36911800")
|
280
|
+
expect(order.error).to be_nil
|
281
|
+
expect(order).to_not be_nil
|
282
|
+
end
|
283
|
+
|
284
|
+
# The following Order tests must be ignored when run in an automated environment because executing an order
|
285
|
+
# will require approval via the executed payment's approval_url.
|
286
|
+
|
287
|
+
before :each, :disabled => true do
|
288
|
+
@payment = Payment.new(PaymentAttributes.merge( "intent" => "order" ))
|
289
|
+
payer_id = "" # replace with the actual payer_id
|
290
|
+
@payment.create
|
291
|
+
@payment.execute( :payer_id => payer_id )
|
292
|
+
expect(@payment.error).to be_nil
|
293
|
+
end
|
294
|
+
|
295
|
+
it "Authorize", :disabled => true do
|
296
|
+
auth = order.authorize
|
297
|
+
expect(auth.state).to eq("Pending")
|
298
|
+
end
|
299
|
+
|
300
|
+
it "Capture", :disabled => true do
|
301
|
+
capture = Capture.new({
|
302
|
+
"amount" => {
|
303
|
+
"currency" => "USD",
|
304
|
+
"total" => "1.00"
|
305
|
+
},
|
306
|
+
"is_final_capture" => true
|
307
|
+
})
|
308
|
+
order = order.capture(@capture)
|
309
|
+
expect(order.state).to eq("completed")
|
310
|
+
end
|
311
|
+
|
312
|
+
it "Void", :disabled => true do
|
313
|
+
order = order.void()
|
314
|
+
expect(order.state).to eq("voided")
|
315
|
+
end
|
316
|
+
|
317
|
+
end
|
318
|
+
|
319
|
+
describe "Authorize", :integration => true do
|
320
|
+
before :each do
|
321
|
+
@payment = Payment.new(PaymentAttributes.merge( "intent" => "authorize" ))
|
322
|
+
@payment.create
|
323
|
+
expect(@payment.error).to be_nil
|
324
|
+
end
|
325
|
+
|
326
|
+
it "Find" do
|
327
|
+
authorize = Authorization.find(@payment.transactions[0].related_resources[0].authorization.id)
|
328
|
+
expect(authorize.error).to be_nil
|
329
|
+
expect(authorize).to be_a Authorization
|
330
|
+
end
|
331
|
+
|
332
|
+
it "Capture" do
|
333
|
+
authorize = @payment.transactions[0].related_resources[0].authorization
|
334
|
+
capture = authorize.capture({:amount => { :currency => "USD", :total => "1.00" } })
|
335
|
+
expect(capture.error).to be_nil
|
336
|
+
end
|
337
|
+
|
338
|
+
it "Void" do
|
339
|
+
authorize = @payment.transactions[0].related_resources[0].authorization
|
340
|
+
authorize.void()
|
341
|
+
expect(authorize.error).to be_nil
|
342
|
+
end
|
343
|
+
|
344
|
+
it "Reauthorization" do
|
345
|
+
authorize = Authorization.find("7GH53639GA425732B");
|
346
|
+
authorize.amount = { :currency => "USD", :total => "1.00" }
|
347
|
+
authorize.reauthorize
|
348
|
+
expect(authorize.error).not_to be_nil
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
describe "Capture", :integration => true do
|
353
|
+
before :each do
|
354
|
+
@payment = Payment.new(PaymentAttributes.merge( "intent" => "authorize" ))
|
355
|
+
@payment.create
|
356
|
+
expect(@payment.error).to be_nil
|
357
|
+
authorize = @payment.transactions[0].related_resources[0].authorization
|
358
|
+
@capture = authorize.capture({:amount => { :currency => "USD", :total => "1.00" } })
|
359
|
+
expect(@capture.error).to be_nil
|
360
|
+
end
|
361
|
+
|
362
|
+
it "Find" do
|
363
|
+
capture = Capture.find(@capture.id)
|
364
|
+
expect(capture.error).to be_nil
|
365
|
+
expect(capture).to be_a Capture
|
366
|
+
end
|
367
|
+
|
368
|
+
it "Refund" do
|
369
|
+
refund = @capture.refund({})
|
370
|
+
expect(refund.error).to be_nil
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
describe "CreditCard", :integration => true do
|
375
|
+
it "Create" do
|
376
|
+
credit_card = CreditCard.new({
|
377
|
+
"type" => "visa",
|
378
|
+
"number" => "4567516310777851",
|
379
|
+
"expire_month" => "11", "expire_year" => "2018",
|
380
|
+
"cvv2" => "874",
|
381
|
+
"first_name" => "Joe", "last_name" => "Shopper",
|
382
|
+
"billing_address" => {
|
383
|
+
"line1" => "52 N Main ST",
|
384
|
+
"city" => "Johnstown",
|
385
|
+
"state" => "OH",
|
386
|
+
"postal_code" => "43210", "country_code" => "US" }})
|
387
|
+
credit_card.create
|
388
|
+
expect(credit_card.error).to be_nil
|
389
|
+
expect(credit_card.id).not_to be_nil
|
390
|
+
|
391
|
+
credit_card = CreditCard.find(credit_card.id)
|
392
|
+
expect(credit_card).to be_a CreditCard
|
393
|
+
expect(credit_card.error).to be_nil
|
394
|
+
end
|
395
|
+
|
396
|
+
it "Delete" do
|
397
|
+
credit_card = CreditCard.new({
|
398
|
+
"type" => "visa",
|
399
|
+
"number" => "4567516310777851",
|
400
|
+
"expire_month" => "11", "expire_year" => "2018" })
|
401
|
+
expect(credit_card.create).to be_truthy
|
402
|
+
expect(credit_card.delete).to be_truthy
|
403
|
+
end
|
404
|
+
|
405
|
+
describe "Validation", :integration => true do
|
406
|
+
it "Create" do
|
407
|
+
credit_card = CreditCard.new({
|
408
|
+
"type" => "visa",
|
409
|
+
"number" => "4111111111111111" })
|
410
|
+
credit_card.create
|
411
|
+
expect(credit_card.error).not_to be_nil
|
412
|
+
|
413
|
+
expect(credit_card.error.name).to eql "VALIDATION_ERROR"
|
414
|
+
expect(credit_card.error["name"]).to eql "VALIDATION_ERROR"
|
415
|
+
|
416
|
+
expect(credit_card.error.details[0].field).to eql "expire_year"
|
417
|
+
expect(credit_card.error.details[0].issue).to eql "Required field missing"
|
418
|
+
expect(credit_card.error.details[1].field).to eql "expire_month"
|
419
|
+
expect(credit_card.error.details[1].issue).to eql "Required field missing"
|
420
|
+
|
421
|
+
expect(credit_card.error["details"][0]["issue"]).to eql "Required field missing"
|
422
|
+
end
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
describe 'CreditCardList', :integration => true do
|
427
|
+
|
428
|
+
it "List" do
|
429
|
+
options = { :create_time => "2015-03-28T15:33:43Z" }
|
430
|
+
credit_card_list = CreditCardList.list()
|
431
|
+
expect(credit_card_list.total_items).to be > 0
|
432
|
+
end
|
433
|
+
|
434
|
+
end
|
435
|
+
|
436
|
+
end
|
437
|
+
end
|