solidus_paypal_braintree 1.1.0 → 1.1.2
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 +4 -4
- data/.circleci/config.yml +4 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +70 -1
- data/Gemfile +9 -6
- data/app/models/solidus_paypal_braintree/gateway.rb +5 -3
- data/app/models/solidus_paypal_braintree/transaction.rb +2 -2
- data/app/models/solidus_paypal_braintree/transaction_import.rb +2 -2
- data/lib/solidus_paypal_braintree/engine.rb +5 -3
- data/lib/solidus_paypal_braintree/factories.rb +5 -5
- data/lib/solidus_paypal_braintree/version.rb +1 -1
- data/lib/views/frontend/solidus_paypal_braintree/payments/_payment.html.erb +3 -3
- data/solidus_paypal_braintree.gemspec +0 -1
- metadata +4 -122
- data/spec/controllers/solidus_paypal_braintree/checkouts_controller_spec.rb +0 -99
- data/spec/controllers/solidus_paypal_braintree/client_tokens_controller_spec.rb +0 -55
- data/spec/controllers/solidus_paypal_braintree/configurations_controller_spec.rb +0 -73
- data/spec/controllers/solidus_paypal_braintree/transactions_controller_spec.rb +0 -183
- data/spec/features/backend/configuration_spec.rb +0 -23
- data/spec/features/backend/new_payment_spec.rb +0 -137
- data/spec/features/frontend/braintree_credit_card_checkout_spec.rb +0 -191
- data/spec/features/frontend/paypal_checkout_spec.rb +0 -166
- data/spec/features/frontend/venmo_checkout_spec.rb +0 -189
- data/spec/fixtures/cassettes/admin/invalid_credit_card.yml +0 -63
- data/spec/fixtures/cassettes/admin/resubmit_credit_card.yml +0 -352
- data/spec/fixtures/cassettes/admin/valid_credit_card.yml +0 -412
- data/spec/fixtures/cassettes/braintree/create_profile.yml +0 -71
- data/spec/fixtures/cassettes/braintree/generate_token.yml +0 -63
- data/spec/fixtures/cassettes/braintree/token.yml +0 -63
- data/spec/fixtures/cassettes/checkout/invalid_credit_card.yml +0 -63
- data/spec/fixtures/cassettes/checkout/resubmit_credit_card.yml +0 -216
- data/spec/fixtures/cassettes/checkout/update.yml +0 -71
- data/spec/fixtures/cassettes/checkout/valid_credit_card.yml +0 -156
- data/spec/fixtures/cassettes/checkout/valid_venmo_transaction.yml +0 -599
- data/spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml +0 -86
- data/spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml +0 -154
- data/spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml +0 -90
- data/spec/fixtures/cassettes/gateway/authorize/paypal/address.yml +0 -90
- data/spec/fixtures/cassettes/gateway/authorize.yml +0 -86
- data/spec/fixtures/cassettes/gateway/authorized_transaction.yml +0 -73
- data/spec/fixtures/cassettes/gateway/cancel/missing.yml +0 -63
- data/spec/fixtures/cassettes/gateway/cancel/refunds.yml +0 -272
- data/spec/fixtures/cassettes/gateway/cancel/void.yml +0 -201
- data/spec/fixtures/cassettes/gateway/capture.yml +0 -141
- data/spec/fixtures/cassettes/gateway/complete.yml +0 -157
- data/spec/fixtures/cassettes/gateway/credit.yml +0 -208
- data/spec/fixtures/cassettes/gateway/purchase.yml +0 -87
- data/spec/fixtures/cassettes/gateway/settled_transaction.yml +0 -140
- data/spec/fixtures/cassettes/gateway/void.yml +0 -137
- data/spec/fixtures/cassettes/source/card_type.yml +0 -267
- data/spec/fixtures/cassettes/source/last4.yml +0 -267
- data/spec/fixtures/cassettes/transaction/import/valid/capture.yml +0 -224
- data/spec/fixtures/cassettes/transaction/import/valid.yml +0 -71
- data/spec/fixtures/views/spree/orders/edit.html.erb +0 -50
- data/spec/helpers/solidus_paypal_braintree/braintree_admin_helper_spec.rb +0 -17
- data/spec/helpers/solidus_paypal_braintree/braintree_checkout_helper_spec.rb +0 -70
- data/spec/models/solidus_paypal_braintree/address_spec.rb +0 -71
- data/spec/models/solidus_paypal_braintree/avs_result_spec.rb +0 -317
- data/spec/models/solidus_paypal_braintree/gateway_spec.rb +0 -692
- data/spec/models/solidus_paypal_braintree/response_spec.rb +0 -280
- data/spec/models/solidus_paypal_braintree/source_spec.rb +0 -499
- data/spec/models/solidus_paypal_braintree/transaction_address_spec.rb +0 -235
- data/spec/models/solidus_paypal_braintree/transaction_import_spec.rb +0 -300
- data/spec/models/solidus_paypal_braintree/transaction_spec.rb +0 -85
- data/spec/models/spree/store_spec.rb +0 -14
- data/spec/requests/spree/api/orders_controller_spec.rb +0 -36
- data/spec/spec_helper.rb +0 -29
- data/spec/support/capybara.rb +0 -7
- data/spec/support/factories.rb +0 -2
- data/spec/support/gateway_helpers.rb +0 -29
- data/spec/support/order_ready_for_payment.rb +0 -37
- data/spec/support/vcr.rb +0 -42
- data/spec/support/views.rb +0 -1
@@ -1,166 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Checkout", type: :feature, js: true do
|
4
|
-
Capybara.default_max_wait_time = 60
|
5
|
-
|
6
|
-
# let!(:store) do
|
7
|
-
# create(:store, payment_methods: [payment_method]).tap do |s|
|
8
|
-
# s.braintree_configuration.update!(braintree_preferences)
|
9
|
-
# end
|
10
|
-
# end
|
11
|
-
let(:braintree_preferences) { { paypal: true }.merge(paypal_options) }
|
12
|
-
let(:paypal_options) { {} }
|
13
|
-
|
14
|
-
let!(:country) { create(:country, states_required: true) }
|
15
|
-
# let!(:state) { create(:state, country: country, abbr: "CA", name: "California") }
|
16
|
-
# let!(:shipping_method) { create(:shipping_method) }
|
17
|
-
# let!(:stock_location) { create(:stock_location) }
|
18
|
-
let!(:mug) { create(:product, name: "RoR Mug") }
|
19
|
-
let!(:payment_method) { create_gateway }
|
20
|
-
# let!(:zone) { create(:zone) }
|
21
|
-
|
22
|
-
before do
|
23
|
-
create(:store, payment_methods: [payment_method]).tap do |s|
|
24
|
-
s.braintree_configuration.update!(braintree_preferences)
|
25
|
-
end
|
26
|
-
create(:state, country: country, abbr: "CA", name: "California")
|
27
|
-
create(:shipping_method)
|
28
|
-
create(:stock_location)
|
29
|
-
create(:zone)
|
30
|
-
end
|
31
|
-
|
32
|
-
context "when going through express checkout using paypal cart button" do
|
33
|
-
before do
|
34
|
-
payment_method
|
35
|
-
add_mug_to_cart
|
36
|
-
end
|
37
|
-
|
38
|
-
it "checks out successfully", skip: "Broken. To be revisited" do
|
39
|
-
pend_if_paypal_slow do
|
40
|
-
expect_any_instance_of(Spree::Order).to receive(:restart_checkout_flow)
|
41
|
-
move_through_paypal_popup
|
42
|
-
expect(page).to have_content("Shipments")
|
43
|
-
click_on "Place Order"
|
44
|
-
expect(page).to have_content("Your order has been processed successfully")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'when using custom paypal button style' do
|
49
|
-
let(:paypal_options) { { preferred_paypal_button_color: 'blue' } }
|
50
|
-
|
51
|
-
it 'displays required PayPal button style' do
|
52
|
-
within_frame find('#paypal-button iframe') do
|
53
|
-
expect(page).to have_selector('.paypal-button-color-blue')
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "when going through regular checkout using paypal payment method" do
|
60
|
-
before do
|
61
|
-
payment_method
|
62
|
-
add_mug_to_cart
|
63
|
-
click_button("Checkout")
|
64
|
-
fill_in("order_email", with: "paypal_buyer@paypaltest.com")
|
65
|
-
click_button("Continue")
|
66
|
-
fill_in_address
|
67
|
-
click_button("Save and Continue")
|
68
|
-
click_button("Save and Continue")
|
69
|
-
end
|
70
|
-
|
71
|
-
it "formats the address variable correctly" do
|
72
|
-
expect(page.evaluate_script("address['recipientName']")).to eq "Ryan Bigg"
|
73
|
-
end
|
74
|
-
|
75
|
-
it "checks out successfully", skip: "Broken. To be revisited" do
|
76
|
-
pend_if_paypal_slow do
|
77
|
-
expect_any_instance_of(Spree::Order).not_to receive(:restart_checkout_flow)
|
78
|
-
move_through_paypal_popup
|
79
|
-
|
80
|
-
expect(page).to have_content("Shipments")
|
81
|
-
click_on "Place Order"
|
82
|
-
expect(page).to have_content("Your order has been processed successfully")
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
# Selenium does not clear cookies properly between test runs, even when
|
88
|
-
# using Capybara.reset_sessions!, see:
|
89
|
-
# https://github.com/jnicklas/capybara/issues/535
|
90
|
-
#
|
91
|
-
# This causes Paypal to remain logged in and not prompt for an email on the
|
92
|
-
# second test run and causes the test to fail. Adding conditional logic for
|
93
|
-
# this greatly increases the test time, so it is left out since CI runs
|
94
|
-
# these with poltergeist.
|
95
|
-
def move_through_paypal_popup
|
96
|
-
expect(page).to have_css('#paypal-button .paypal-button')
|
97
|
-
|
98
|
-
sleep 2 # the PayPal button is not immediately ready
|
99
|
-
|
100
|
-
popup = page.window_opened_by do
|
101
|
-
within_frame find('#paypal-button iframe') do
|
102
|
-
find('div.paypal-button').click
|
103
|
-
end
|
104
|
-
end
|
105
|
-
page.switch_to_window(popup)
|
106
|
-
|
107
|
-
# We don't control this popup window.
|
108
|
-
# So javascript errors are not our errors.
|
109
|
-
begin
|
110
|
-
expect(page).not_to have_selector('body.loading')
|
111
|
-
fill_in("login_email", with: "stembolt_buyer@stembolttest.com")
|
112
|
-
click_on "Next"
|
113
|
-
fill_in("login_password", with: "test1234")
|
114
|
-
|
115
|
-
expect(page).not_to have_selector('body.loading')
|
116
|
-
click_button("btnLogin")
|
117
|
-
|
118
|
-
expect(page).not_to have_selector('body.loading')
|
119
|
-
click_button("Continue")
|
120
|
-
click_button("Agree & Continue")
|
121
|
-
rescue Selenium::WebDriver::Error::JavascriptError => e
|
122
|
-
pending "PayPal had javascript errors in their popup window."
|
123
|
-
raise e
|
124
|
-
rescue Capybara::ElementNotFound => e
|
125
|
-
pending "PayPal delivered unkown HTML in their popup window."
|
126
|
-
raise e
|
127
|
-
rescue Selenium::WebDriver::Error::NoSuchWindowError => e
|
128
|
-
pending "PayPal popup not available."
|
129
|
-
raise e
|
130
|
-
end
|
131
|
-
|
132
|
-
page.switch_to_window(page.windows.first)
|
133
|
-
end
|
134
|
-
|
135
|
-
def fill_in_address
|
136
|
-
address = "order_bill_address_attributes"
|
137
|
-
if page.has_css?("##{address}_firstname", wait: 0)
|
138
|
-
fill_in "#{address}_firstname", with: "Ryan"
|
139
|
-
fill_in "#{address}_lastname", with: "Bigg"
|
140
|
-
else
|
141
|
-
fill_in "#{address}_name", with: "Ryan Bigg"
|
142
|
-
end
|
143
|
-
fill_in "#{address}_address1", with: "143 Swan Street"
|
144
|
-
fill_in "#{address}_city", with: "San Jose"
|
145
|
-
select "United States of America", from: "#{address}_country_id"
|
146
|
-
select "California", from: "#{address}_state_id"
|
147
|
-
fill_in "#{address}_zipcode", with: "95131"
|
148
|
-
fill_in "#{address}_phone", with: "(555) 555-0111"
|
149
|
-
end
|
150
|
-
|
151
|
-
def add_mug_to_cart
|
152
|
-
visit spree.root_path
|
153
|
-
click_link mug.name
|
154
|
-
click_button "add-to-cart-button"
|
155
|
-
end
|
156
|
-
|
157
|
-
def pend_if_paypal_slow
|
158
|
-
yield
|
159
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
160
|
-
pending "PayPal did not answer in #{Capybara.default_max_wait_time} seconds."
|
161
|
-
raise e
|
162
|
-
rescue Selenium::WebDriver::Error::JavascriptError => e
|
163
|
-
pending "PayPal delivered wrong payload because of errors in their popup window."
|
164
|
-
raise e
|
165
|
-
end
|
166
|
-
end
|
@@ -1,189 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'spree/testing_support/order_walkthrough'
|
5
|
-
|
6
|
-
describe "Checkout", type: :feature, js: true do
|
7
|
-
let(:braintree_preferences) { { venmo: true }.merge(preferences) }
|
8
|
-
let(:preferences) { {} }
|
9
|
-
let(:user) { create(:user) }
|
10
|
-
let!(:payment_method) { create_gateway }
|
11
|
-
|
12
|
-
before do
|
13
|
-
create(:store, payment_methods: [payment_method]).tap do |s|
|
14
|
-
s.braintree_configuration.update!(braintree_preferences)
|
15
|
-
end
|
16
|
-
|
17
|
-
go_to_payment_checkout_page
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'with Venmo checkout' do
|
21
|
-
context 'when Venmo is disabled' do
|
22
|
-
let(:preferences) { { venmo: false } }
|
23
|
-
|
24
|
-
it 'does not load the Venmo payment button' do
|
25
|
-
expect(page).not_to have_selector('#venmo-button')
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'when Venmo is enabled' do
|
30
|
-
it 'loads the Venmo payment button' do
|
31
|
-
expect(page).to have_selector('#venmo-button')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "when Venmo's button style is customized" do
|
36
|
-
context 'when venmo_button_color is "blue" and venmo_button_width is "280"' do
|
37
|
-
let(:preferences) { { preferred_venmo_button_color: 'blue', preferred_venmo_button_width: '280' } }
|
38
|
-
|
39
|
-
it 'has the correct style' do
|
40
|
-
venmo_button.assert_matches_style(width: '280px', 'background-image': /venmo_blue_button_280x48/)
|
41
|
-
venmo_button.hover
|
42
|
-
venmo_button.assert_matches_style('background-image': /venmo_active_blue_button_280x48/)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'when venmo_button_color is "white" and venmo_button_width is "375"' do
|
47
|
-
let(:preferences) { { preferred_venmo_button_color: 'white', preferred_venmo_button_width: '375' } }
|
48
|
-
|
49
|
-
it 'has the correct style' do
|
50
|
-
venmo_button.assert_matches_style(width: '375px', 'background-image': /venmo_white_button_375x48/)
|
51
|
-
venmo_button.hover
|
52
|
-
venmo_button.assert_matches_style('background-image': /venmo_active_white_button_375x48/)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'when the Venmo button is clicked' do
|
58
|
-
before { venmo_button.click }
|
59
|
-
|
60
|
-
it 'opens the QR modal which shows an error when closed' do
|
61
|
-
within_frame(venmo_frame) do
|
62
|
-
expect(page).to have_selector('#venmo-qr-code-view')
|
63
|
-
|
64
|
-
click_button('close-icon')
|
65
|
-
|
66
|
-
expect(page).not_to have_selector('#venmo-qr-code-view')
|
67
|
-
end
|
68
|
-
|
69
|
-
expect(page).to have_content('Venmo authorization was canceled by closing the Venmo Desktop modal.')
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context 'with Venmo transactions', vcr: { cassette_name: 'checkout/valid_venmo_transaction' } do
|
74
|
-
before do
|
75
|
-
fake_venmo_successful_tokenization
|
76
|
-
end
|
77
|
-
|
78
|
-
context 'with CreditCard disabled' do
|
79
|
-
it 'can checkout with Venmo' do
|
80
|
-
next_checkout_step
|
81
|
-
finalize_checkout
|
82
|
-
|
83
|
-
expect(Spree::Order.last.complete?).to eq(true)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
# To test that the hosted-fields inputs do not conflict with Venmo's
|
88
|
-
context 'with CreditCard enabled' do
|
89
|
-
let(:preferences) { { credit_card: true } }
|
90
|
-
|
91
|
-
it 'can checkout with Venmo' do
|
92
|
-
disable_hosted_fields_inputs
|
93
|
-
disable_hosted_fields_form_listener
|
94
|
-
|
95
|
-
next_checkout_step
|
96
|
-
finalize_checkout
|
97
|
-
|
98
|
-
expect(Spree::Order.last.complete?).to eq(true)
|
99
|
-
expect(Spree::Payment.last.source.venmo?).to eq(true)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
# https://developer.paypal.com/braintree/docs/guides/venmo/client-side#custom-integration
|
104
|
-
it "meet's Braintree's acceptance criteria during checkout", aggregate_failures: true do
|
105
|
-
next_checkout_step
|
106
|
-
|
107
|
-
expect(page).to have_content('Payment Type: Venmo')
|
108
|
-
|
109
|
-
finalize_checkout
|
110
|
-
|
111
|
-
expect(page).to have_content('Venmo Account: venmojoe')
|
112
|
-
end
|
113
|
-
|
114
|
-
# the VCR must be based on this test, so it includes HTTP requests of the second order
|
115
|
-
it 'saves the used Venmo source in the wallet and can be reused' do
|
116
|
-
next_checkout_step
|
117
|
-
finalize_checkout
|
118
|
-
go_to_payment_checkout_page(order_number: 'R300000002')
|
119
|
-
|
120
|
-
expect(Spree::User.first.wallet.wallet_payment_sources).not_to be_empty
|
121
|
-
expect(page).to have_selector('#existing_cards')
|
122
|
-
expect(page).to have_content('venmojoe')
|
123
|
-
|
124
|
-
next_checkout_step
|
125
|
-
finalize_checkout
|
126
|
-
|
127
|
-
expect(Spree::Order.all.all?(&:complete?)).to eq(true)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
private
|
133
|
-
|
134
|
-
def go_to_payment_checkout_page(order_number: 'R300000001' )
|
135
|
-
order = if Spree.solidus_gem_version >= Gem::Version.new('2.6.0')
|
136
|
-
Spree::TestingSupport::OrderWalkthrough.up_to(:address)
|
137
|
-
else
|
138
|
-
OrderWalkthrough.up_to(:address)
|
139
|
-
end
|
140
|
-
|
141
|
-
order.update!(user: user, number: order_number) # constant order number for VCRs
|
142
|
-
|
143
|
-
allow_any_instance_of(Spree::CheckoutController).to receive_messages(current_order: order)
|
144
|
-
allow_any_instance_of(Spree::CheckoutController).to receive_messages(try_spree_current_user: Spree::User.first)
|
145
|
-
allow_any_instance_of(Spree::Payment).to receive(:gateway_order_id).and_return(order_number)
|
146
|
-
|
147
|
-
visit spree.checkout_state_path(order.state)
|
148
|
-
next_checkout_step
|
149
|
-
end
|
150
|
-
|
151
|
-
def next_checkout_step
|
152
|
-
click_button('Save and Continue')
|
153
|
-
end
|
154
|
-
|
155
|
-
def finalize_checkout
|
156
|
-
click_button('Place Order')
|
157
|
-
end
|
158
|
-
|
159
|
-
def venmo_button
|
160
|
-
find_button('venmo-button', disabled: false)
|
161
|
-
end
|
162
|
-
|
163
|
-
def venmo_frame
|
164
|
-
find('#venmo-desktop-iframe')
|
165
|
-
end
|
166
|
-
|
167
|
-
def fake_venmo_successful_tokenization
|
168
|
-
enable_venmo_inputs
|
169
|
-
fake_payment_method_nonce
|
170
|
-
end
|
171
|
-
|
172
|
-
def enable_venmo_inputs
|
173
|
-
page.execute_script("$('.venmo-fields input').each(function(_index, input){input.removeAttribute('disabled');});")
|
174
|
-
end
|
175
|
-
|
176
|
-
def fake_payment_method_nonce
|
177
|
-
page.execute_script("$('#venmo_payment_method_nonce').val('fake-venmo-account-nonce');")
|
178
|
-
end
|
179
|
-
|
180
|
-
def disable_hosted_fields_inputs
|
181
|
-
page.execute_script("$('.hosted-fields input').each(function(_index, input){input.disabled=true;});")
|
182
|
-
end
|
183
|
-
|
184
|
-
def disable_hosted_fields_form_listener
|
185
|
-
# Once the submit button is enabled, the submit listener has been added
|
186
|
-
find("#checkout_form_payment input[type='submit']:not(:disabled)")
|
187
|
-
page.execute_script("$('#checkout_form_payment').off('submit');")
|
188
|
-
end
|
189
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: post
|
5
|
-
uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/client_token
|
6
|
-
body:
|
7
|
-
encoding: UTF-8
|
8
|
-
string: |
|
9
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
10
|
-
<client-token>
|
11
|
-
<version type="integer">2</version>
|
12
|
-
</client-token>
|
13
|
-
headers:
|
14
|
-
Accept-Encoding:
|
15
|
-
- gzip
|
16
|
-
Accept:
|
17
|
-
- application/xml
|
18
|
-
User-Agent:
|
19
|
-
- Braintree Ruby Gem 2.98.0
|
20
|
-
X-Apiversion:
|
21
|
-
- '5'
|
22
|
-
Content-Type:
|
23
|
-
- application/xml
|
24
|
-
Authorization:
|
25
|
-
- Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ==
|
26
|
-
response:
|
27
|
-
status:
|
28
|
-
code: 201
|
29
|
-
message: Created
|
30
|
-
headers:
|
31
|
-
Server:
|
32
|
-
- nginx
|
33
|
-
Date:
|
34
|
-
- Fri, 13 Sep 2019 14:27:11 GMT
|
35
|
-
Content-Type:
|
36
|
-
- application/xml; charset=utf-8
|
37
|
-
Transfer-Encoding:
|
38
|
-
- chunked
|
39
|
-
X-Authentication:
|
40
|
-
- server_to_server
|
41
|
-
Braintree-Service-Origin:
|
42
|
-
- clientauth
|
43
|
-
Vary:
|
44
|
-
- Accept-Encoding
|
45
|
-
Content-Encoding:
|
46
|
-
- gzip
|
47
|
-
Etag:
|
48
|
-
- W/"c95fd3caa086065297edd0aeeb8e6d55"
|
49
|
-
Cache-Control:
|
50
|
-
- max-age=0, private, must-revalidate
|
51
|
-
X-Request-Id:
|
52
|
-
- 51cbbac6-bce1-4f90-ab14-6d61a064e77b
|
53
|
-
X-Runtime:
|
54
|
-
- '0.200715'
|
55
|
-
Strict-Transport-Security:
|
56
|
-
- max-age=31536000; includeSubDomains
|
57
|
-
body:
|
58
|
-
encoding: ASCII-8BIT
|
59
|
-
string: !binary |-
|
60
|
-
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
|
61
|
-
http_version:
|
62
|
-
recorded_at: Fri, 13 Sep 2019 14:27:11 GMT
|
63
|
-
recorded_with: VCR 5.0.0
|