solidus_paypal_braintree 0.4.0 → 1.0.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.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +40 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +18 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +68 -0
  8. data/CHANGELOG.md +258 -0
  9. data/Gemfile +43 -0
  10. data/LICENSE +2 -2
  11. data/README.md +77 -23
  12. data/Rakefile +4 -25
  13. data/app/assets/javascripts/solidus_paypal_braintree/checkout.js +32 -3
  14. data/app/assets/javascripts/solidus_paypal_braintree/client.js +23 -4
  15. data/app/assets/javascripts/solidus_paypal_braintree/constants.js +19 -0
  16. data/app/assets/javascripts/solidus_paypal_braintree/frontend.js +1 -0
  17. data/app/assets/javascripts/solidus_paypal_braintree/hosted_form.js +15 -5
  18. data/app/assets/javascripts/solidus_paypal_braintree/paypal_button.js +47 -20
  19. data/app/assets/javascripts/solidus_paypal_braintree/paypal_messaging.js +22 -0
  20. data/app/decorators/controllers/solidus_paypal_braintree/admin_payments_controller_decorator.rb +11 -0
  21. data/app/decorators/controllers/solidus_paypal_braintree/checkout_controller_decorator.rb +11 -0
  22. data/app/decorators/controllers/solidus_paypal_braintree/client_tokens_controller.rb +41 -0
  23. data/app/decorators/controllers/solidus_paypal_braintree/orders_controller_decorator.rb +11 -0
  24. data/app/decorators/models/solidus_paypal_braintree/spree/store_decorator.rb +20 -0
  25. data/app/decorators/models/solidus_paypal_braintree/spree/user_decorator.rb +13 -0
  26. data/app/helpers/solidus_paypal_braintree/braintree_admin_helper.rb +23 -0
  27. data/app/helpers/solidus_paypal_braintree/braintree_checkout_helper.rb +46 -0
  28. data/app/models/application_record.rb +2 -0
  29. data/app/models/solidus_paypal_braintree/address.rb +30 -0
  30. data/app/models/solidus_paypal_braintree/configuration.rb +26 -3
  31. data/app/models/solidus_paypal_braintree/customer.rb +7 -3
  32. data/app/models/solidus_paypal_braintree/gateway.rb +52 -20
  33. data/app/models/solidus_paypal_braintree/response.rb +3 -2
  34. data/app/models/solidus_paypal_braintree/source.rb +21 -7
  35. data/app/models/solidus_paypal_braintree/transaction.rb +2 -0
  36. data/app/models/solidus_paypal_braintree/transaction_address.rb +30 -12
  37. data/app/models/solidus_paypal_braintree/transaction_import.rb +13 -9
  38. data/app/views/spree/api/payments/source_views/_paypal_braintree.json.jbuilder +3 -0
  39. data/app/views/spree/checkout/existing_payment/_paypal_braintree.html.erb +10 -0
  40. data/app/views/spree/shared/_apple_pay_button.html.erb +2 -2
  41. data/app/views/spree/shared/_braintree_errors.html.erb +11 -17
  42. data/app/views/spree/shared/_braintree_hosted_fields.html.erb +24 -9
  43. data/app/views/spree/shared/_paypal_braintree_head_scripts.html.erb +9 -6
  44. data/app/views/spree/shared/_paypal_cart_button.html.erb +16 -2
  45. data/app/views/spree/shared/_paypal_messaging.html.erb +13 -0
  46. data/bin/console +17 -0
  47. data/bin/rails +15 -0
  48. data/bin/setup +8 -0
  49. data/config/locales/en.yml +10 -0
  50. data/config/locales/it.yml +51 -8
  51. data/config/routes.rb +2 -0
  52. data/db/migrate/20160906201711_create_solidus_paypal_braintree_customers.rb +3 -1
  53. data/db/migrate/20161125172005_add_braintree_configuration_to_stores.rb +5 -7
  54. data/db/migrate/20170505193712_add_null_constraint_to_sources.rb +3 -1
  55. data/db/migrate/20190705115327_add_paypal_button_preferences_to_braintree_configurations.rb +5 -0
  56. data/db/migrate/20190911141712_add_3d_secure_to_braintree_configuration.rb +5 -0
  57. data/lib/controllers/backend/solidus_paypal_braintree/configurations_controller.rb +20 -5
  58. data/lib/controllers/frontend/solidus_paypal_braintree/checkouts_controller.rb +25 -21
  59. data/lib/controllers/frontend/solidus_paypal_braintree/transactions_controller.rb +55 -51
  60. data/lib/generators/solidus_paypal_braintree/install/install_generator.rb +7 -5
  61. data/lib/solidus_paypal_braintree.rb +4 -0
  62. data/lib/solidus_paypal_braintree/country_mapper.rb +4 -2
  63. data/lib/solidus_paypal_braintree/engine.rb +11 -11
  64. data/lib/solidus_paypal_braintree/factories.rb +8 -4
  65. data/lib/solidus_paypal_braintree/request_protection.rb +3 -0
  66. data/lib/solidus_paypal_braintree/version.rb +3 -1
  67. data/lib/views/backend/solidus_paypal_braintree/configurations/list.html.erb +30 -5
  68. data/lib/views/backend/spree/admin/payments/source_forms/_paypal_braintree.html.erb +2 -2
  69. data/lib/views/backend/spree/admin/payments/source_views/_paypal_braintree.html.erb +2 -2
  70. data/lib/views/backend_v1.2/spree/admin/payments/source_forms/_paypal_braintree.html.erb +2 -2
  71. data/lib/views/frontend/spree/checkout/payment/_paypal_braintree.html.erb +4 -2
  72. data/lib/views/frontend/spree/shared/_paypal_checkout_button.html.erb +30 -0
  73. data/solidus_paypal_braintree.gemspec +42 -0
  74. data/spec/controllers/solidus_paypal_braintree/checkouts_controller_spec.rb +99 -0
  75. data/spec/controllers/solidus_paypal_braintree/client_tokens_controller_spec.rb +55 -0
  76. data/spec/controllers/solidus_paypal_braintree/configurations_controller_spec.rb +73 -0
  77. data/spec/controllers/solidus_paypal_braintree/transactions_controller_spec.rb +183 -0
  78. data/spec/features/backend/configuration_spec.rb +23 -0
  79. data/spec/features/backend/new_payment_spec.rb +137 -0
  80. data/spec/features/frontend/braintree_credit_card_checkout_spec.rb +187 -0
  81. data/spec/features/frontend/paypal_checkout_spec.rb +166 -0
  82. data/spec/fixtures/cassettes/admin/invalid_credit_card.yml +63 -0
  83. data/spec/fixtures/cassettes/admin/resubmit_credit_card.yml +352 -0
  84. data/spec/fixtures/cassettes/admin/valid_credit_card.yml +412 -0
  85. data/spec/fixtures/cassettes/braintree/create_profile.yml +71 -0
  86. data/spec/fixtures/cassettes/braintree/generate_token.yml +63 -0
  87. data/spec/fixtures/cassettes/braintree/token.yml +63 -0
  88. data/spec/fixtures/cassettes/checkout/invalid_credit_card.yml +63 -0
  89. data/spec/fixtures/cassettes/checkout/resubmit_credit_card.yml +216 -0
  90. data/spec/fixtures/cassettes/checkout/update.yml +71 -0
  91. data/spec/fixtures/cassettes/checkout/valid_credit_card.yml +156 -0
  92. data/spec/fixtures/cassettes/gateway/authorize.yml +86 -0
  93. data/spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml +86 -0
  94. data/spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml +154 -0
  95. data/spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml +90 -0
  96. data/spec/fixtures/cassettes/gateway/authorize/paypal/address.yml +90 -0
  97. data/spec/fixtures/cassettes/gateway/authorized_transaction.yml +73 -0
  98. data/spec/fixtures/cassettes/gateway/cancel/missing.yml +63 -0
  99. data/spec/fixtures/cassettes/gateway/cancel/refunds.yml +272 -0
  100. data/spec/fixtures/cassettes/gateway/cancel/void.yml +201 -0
  101. data/spec/fixtures/cassettes/gateway/capture.yml +141 -0
  102. data/spec/fixtures/cassettes/gateway/complete.yml +157 -0
  103. data/spec/fixtures/cassettes/gateway/credit.yml +208 -0
  104. data/spec/fixtures/cassettes/gateway/purchase.yml +87 -0
  105. data/spec/fixtures/cassettes/gateway/settled_transaction.yml +140 -0
  106. data/spec/fixtures/cassettes/gateway/void.yml +137 -0
  107. data/spec/fixtures/cassettes/source/card_type.yml +267 -0
  108. data/spec/fixtures/cassettes/source/last4.yml +267 -0
  109. data/spec/fixtures/cassettes/transaction/import/valid.yml +71 -0
  110. data/spec/fixtures/cassettes/transaction/import/valid/capture.yml +224 -0
  111. data/spec/fixtures/views/spree/orders/edit.html.erb +50 -0
  112. data/spec/helpers/solidus_paypal_braintree/braintree_admin_helper_spec.rb +17 -0
  113. data/spec/models/solidus_paypal_braintree/address_spec.rb +51 -0
  114. data/spec/models/solidus_paypal_braintree/avs_result_spec.rb +317 -0
  115. data/spec/models/solidus_paypal_braintree/gateway_spec.rb +692 -0
  116. data/spec/models/solidus_paypal_braintree/response_spec.rb +280 -0
  117. data/spec/models/solidus_paypal_braintree/source_spec.rb +360 -0
  118. data/spec/models/solidus_paypal_braintree/transaction_address_spec.rb +253 -0
  119. data/spec/models/solidus_paypal_braintree/transaction_import_spec.rb +283 -0
  120. data/spec/models/solidus_paypal_braintree/transaction_spec.rb +85 -0
  121. data/spec/models/spree/store_spec.rb +14 -0
  122. data/spec/requests/spree/api/orders_controller_spec.rb +36 -0
  123. data/spec/spec_helper.rb +26 -0
  124. data/spec/support/capybara.rb +7 -0
  125. data/spec/support/factories.rb +2 -0
  126. data/spec/support/gateway_helpers.rb +29 -0
  127. data/spec/support/order_ready_for_payment.rb +37 -0
  128. data/spec/support/vcr.rb +42 -0
  129. data/spec/support/views.rb +1 -0
  130. metadata +182 -194
  131. data/app/controllers/solidus_paypal_braintree/client_tokens_controller.rb +0 -22
  132. data/app/helpers/braintree_admin_helper.rb +0 -18
  133. data/app/models/spree/store_decorator.rb +0 -11
  134. data/app/views/spree/shared/_paypal_checkout_button.html.erb +0 -27
  135. data/config/initializers/braintree.rb +0 -1
@@ -0,0 +1,166 @@
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
@@ -0,0 +1,63 @@
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
+ H4sIAD+ne10AA3xWXXObOBR976/o9H13+QiZeCbtTkkAWzFyLEASegNEC0bCtLax4dfvBaeTZja7D57BSLr33HvPOeL+74tWH/vy56Het58/mX8anz6WbbGXdfv986ck9v+4+/T3lw/3harL9vjHcd+U7ZcPHz/e95k6lV/KAVmCozFji9Nqtx/WD6iSnOxzG3Wl9o3pPdHqJCw6FEvU5e223tRIlcn+LGjlZsmii5ojC6nfxR5+ygK0TC31nCVdQHmHwsTpIo5RzsmZNRjhRv2IuMQ0kHbcEBQ2ZsI42YWNMFkjn6Smj9GuOQmunvKArrYMYjXJJdZdG3rOLeEKlw0dI2aew8CPo1igTFeH2JC0VCoRowtQUBcbhEjPWTLIlcWArSFZnlw4xNmU+nJklCDsLeC/2iSGgnjOJqSqu8YjDmDZ4cQ85iMWefx1ZNocQ+Z7MVPh1ujO6YjxtXbUMB/1gmJUGOoYsssuT5ye0cIMPfWjeJQob1YXxsybwm8uG+5mW6OxItY1Je2W6Uhxzu5GxoxzaHbHYvQr4plzL0PVpVHrZrm+aBajAPYHG6YU3amfTMksCwgvH12UtS7UI29K2B8uoddNd2Y7tA8D7EA9vEw6Y8KT+fuBatHkSXpJm4pktIqlperQWJ1TWjiSzftVOHrOusFRBE90/HrhVjckrRskCX2SiZlKn7h8xDytzXUe7G1ioyNuqm+JQR+l0TXSUM/U29uRt0hjvailcdFUI3dD/SQ0aU9bQqUWzzjGZmarrvToE/S5XdXnOrUWJ6FVSzk6AB/rbEmMYhnerodFVQTNqbD8kwhQXz44daF94CMZBKNtyomSlu+sNe7zeG/gx7DPGR1Sq6pgz7ge5SCCwgn13k61YQt9MDPYk1qXTjDH4JZ/zqKFFUaLXW45OmPSLF74P+ESNoL8FYkfVregGVg7TzrYyyU5F+O+X9tuVTJTzblaXOWa1Ln9/ZS2qMogfqGpWrMphwPxjf4l3iV/WB1WmlQySCDeaggfvZt1/NWE382qNWAN71N2OQDGVvCw3qijBI1CHtEVenGCGk8SMK1ec9awvssDNWFxi0DRf2Gda3XGlDlNqhc3a42GlKmTXCIlmAQs1E55c4JZHDe7rREOiyN4xC4LfNgT9thGjRibIdvJOo+lzka6hz2/cn5LudvNs+R4FJyM787SxgpivemPsHxDcFmV1x7Vv7zovfPT+3UrVK7N/r/6/V68XPuHkpMutaGX7aGW/47dF8C/jN0coT9VvlTAATyu+ZRj+x/8S45TzTP3oju70KTdxOgHtkAXlviJ2fdxnmVL9hMu4mOV2nQQCT2lDMFswVMhjmQJ7AEecbfKvf9Zu3KwyTg+54HvxNo/igg4oLAhmFnn1sW4aunK7YjNnu3CPHQ+iodUp2OphGC+iIhyn0jcOCWtHmSDbjHb3mQmeca2+wzzj6EWUiyTgRiXZ0pXQ9G6QnrmQ5qAJ9vVLh2rh7CRTW4TL9PFEOvvThytJqxDxkWV2m/5t6nvesFBk9w9iBctFMuv02zMAu6YLZOTno8T7jdzf5x4S29S8P08SGZurm3SF8OkH9CSRd/j+QjvjWL4H6+YsOqXfSYdpt6udGXIpTtOWME/VGode8lh9tBr+B1ezxHQIN1J77f82jHz4DzFPOTBwo4m7BATtGWKCHyEOVbGUQ+8nbSyyQ0HdCCBcwc4K4BvWL2rb73QQl+6XCdzr2AdzhElPFMVs0c4xmrXafCKccrzuw62b3kAXAWe8F8esR1nrmgFeOGeN/x2OjPnXWIf9FLDPdxAbKNo6YTt1Qs8fwdzACwEiasHveUfcBxinYADqLAWj7lF1DRPSrF39bZX7Fdsq/e1A7HguwB6cTfh74VOZy0XS+AQBU1Esx5GGfiGnDwSaswt/PPlPpnwDWWCezF7LKLJzBlsFi30WWNnay2aq35oTGY//h0XmebUwZ2kinqaw+va774D/VJy6t8briWnwobzDOa93J4ywA+4R8ndM3xfQa/IBvzRhuefwONbBt9ioOlqwp0zH+qZ7i9/EDMm0DifvX3S/S63BeBB8hs3Pt//df2W+3D/19uvvH8AAAD//wMABRjVUhwKAAA=
61
+ http_version:
62
+ recorded_at: Fri, 13 Sep 2019 14:27:11 GMT
63
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,352 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/customers
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" encoding="UTF-8"?>
10
+ <customer>
11
+ <payment-method-nonce>fake-valid-nonce</payment-method-nonce>
12
+ </customer>
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
+ Date:
32
+ - Fri, 13 Sep 2019 14:22:38 GMT
33
+ Content-Type:
34
+ - application/xml; charset=utf-8
35
+ Transfer-Encoding:
36
+ - chunked
37
+ X-Frame-Options:
38
+ - SAMEORIGIN
39
+ X-Xss-Protection:
40
+ - 1; mode=block
41
+ X-Content-Type-Options:
42
+ - nosniff
43
+ X-Authentication:
44
+ - basic_auth
45
+ X-User:
46
+ - 3v249hqtptsg744y
47
+ Vary:
48
+ - Accept-Encoding
49
+ Content-Encoding:
50
+ - gzip
51
+ Etag:
52
+ - W/"95fd21ec0f69e5135dede28531f22e17"
53
+ Cache-Control:
54
+ - max-age=0, private, must-revalidate
55
+ X-Runtime:
56
+ - '0.462221'
57
+ X-Request-Id:
58
+ - 01-1568384558.107-92.223.152.178-12907427
59
+ Content-Security-Policy:
60
+ - frame-ancestors 'self'
61
+ X-Broxyid:
62
+ - 01-1568384558.107-92.223.152.178-12907427
63
+ Strict-Transport-Security:
64
+ - max-age=31536000; includeSubDomains
65
+ body:
66
+ encoding: ASCII-8BIT
67
+ string: !binary |-
68
+ H4sIAC6me10AA6xWyW7jOBC95ysM3RVtdmwHsoIBGglmgMxlOplJLg1KLFmMKVJDUo6dr29S1uZFbgfpm/jqFVksvqpSeLfJ6WgNQhLOFpZ37VojYAnHhC0X1tP3e3tm3UVXYVJKxXMQ0dVoFBIc+W7g3ty403Ho6JUBtTHJEFO2Xk8FXs79t2mcT9PVJAtCp2817JQIqWyGchgxQheWEiVYTmWiaMiS8LxAbHuEQ44IPUKLjLPjPVK0OcLeIZZEnThPAFKAbaRGalvAwsJ6qUgOlr6/N7fdue0F373xre/fBrPX0OkcKv+ywJ/z7xx251dJt1MCFMtdSEvKY0RNFl+C5w/8MFev//2VPr798fH47cV//Ja4odNx6ktgouwECSzrMJAQaGsZ6759h2gsJpRqAdgIYwFSNvju6ae4efMaa7Rh7+uiD3fk4YevCYPP35x2WgS1VSoBoJrAB0iwUcCwyfNZGuUJokQNHSVgqWtmwFhwqfQb6EKCaD723Gno9KH+dUqmxLaCbUSLDPmDFz9kBpcwWanfgCS/oJ5L+NeqoN7li7VQ7eEM6FLrlUVj1/NnM8NhLW5EbZvjomcikY6sXfcZGadYy3QoBUZxpn0RRKMntmL8nemdOqyj7VLJU5tIWSKWQJ9/bGwdv57gT9RgRzX6VlrC0dM/PWaLNnwMMVHdTXbLzpiikjaBx5xTQMyKTAYNtTJ25FLo17F14ZTUXKC36aGlcYFNQUQVj51zprLI80PnCDzB3gISOhO+u0ev0D024MPYU0Ql1F69SLqumjzcT+J/n0v84FH8kK1f7+dvL97MR/mfHzh4OWjAlXMGiKpMi60niR7W0EiOlmCXgkaZUoW8dRwkJSh5HQtEmGltS52dd7S91vpzCrTNgakfOaiM4x+UL7mz1jq/LtjyDtiaCM4MYSERwzHf6Lbd7t+eqMVoKipGbNWFtoc21KoxjyNvNvNCp140Nh2K4LRXHw3QEgQUSCfkb65t9Xdn47hMql+Dzr/DGposY5kIUpiH3J9kXakqvgIW3bzFwfs6dHarxlYy8n9Z9cO4KgidGaJHq4hQOplMx/N0Mk+9FAczfJOkiaeBdDyZxakW3KBru/dv6G5rYDm3JV4NCLK19zyEDmNXriczUrWK/nTfA6r+Gda9FE7+HBw22qPx/5nGc370nx/858b+BUP/opF/duCfGfcXDvtLR/2lg/7iMf/LIf9bJtCXSyB0emprF6CXnZyiq58AAAD//wMAxUIjVLEMAAA=
69
+ http_version:
70
+ recorded_at: Fri, 13 Sep 2019 14:22:39 GMT
71
+ - request:
72
+ method: post
73
+ uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/transactions
74
+ body:
75
+ encoding: UTF-8
76
+ string: |
77
+ <?xml version="1.0" encoding="UTF-8"?>
78
+ <transaction>
79
+ <amount>110.00</amount>
80
+ <order-id>R9999999-123ABC</order-id>
81
+ <channel>Solidus</channel>
82
+ <options>
83
+ <store-in-vault-on-success type="boolean">true</store-in-vault-on-success>
84
+ </options>
85
+ <payment-method-token>6jb3wv</payment-method-token>
86
+ <billing>
87
+ <first-name>John</first-name>
88
+ <last-name>Doe</last-name>
89
+ <street-address>PO Box 1337 Northwest</street-address>
90
+ <locality>Herndon</locality>
91
+ <postal-code>21088-0255</postal-code>
92
+ <region>AL</region>
93
+ <country-code-alpha2>US</country-code-alpha2>
94
+ </billing>
95
+ <customer-id>203066074</customer-id>
96
+ <type>sale</type>
97
+ </transaction>
98
+ headers:
99
+ Accept-Encoding:
100
+ - gzip
101
+ Accept:
102
+ - application/xml
103
+ User-Agent:
104
+ - Braintree Ruby Gem 2.98.0
105
+ X-Apiversion:
106
+ - '5'
107
+ Content-Type:
108
+ - application/xml
109
+ Authorization:
110
+ - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ==
111
+ response:
112
+ status:
113
+ code: 201
114
+ message: Created
115
+ headers:
116
+ Date:
117
+ - Fri, 13 Sep 2019 14:27:04 GMT
118
+ Content-Type:
119
+ - application/xml; charset=utf-8
120
+ Transfer-Encoding:
121
+ - chunked
122
+ X-Frame-Options:
123
+ - SAMEORIGIN
124
+ X-Xss-Protection:
125
+ - 1; mode=block
126
+ X-Content-Type-Options:
127
+ - nosniff
128
+ X-Authentication:
129
+ - basic_auth
130
+ X-User:
131
+ - 3v249hqtptsg744y
132
+ Vary:
133
+ - Accept-Encoding
134
+ Content-Encoding:
135
+ - gzip
136
+ Etag:
137
+ - W/"afd237f5509cd7815a4e533b63a9f319"
138
+ Cache-Control:
139
+ - max-age=0, private, must-revalidate
140
+ X-Runtime:
141
+ - '0.387950'
142
+ X-Request-Id:
143
+ - 02-1568384824.212-92.223.152.178-13016464
144
+ Content-Security-Policy:
145
+ - frame-ancestors 'self'
146
+ X-Broxyid:
147
+ - 02-1568384824.212-92.223.152.178-13016464
148
+ Strict-Transport-Security:
149
+ - max-age=31536000; includeSubDomains
150
+ body:
151
+ encoding: ASCII-8BIT
152
+ string: !binary |-
153
+ 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
154
+ http_version:
155
+ recorded_at: Fri, 13 Sep 2019 14:27:05 GMT
156
+ - request:
157
+ method: get
158
+ uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/transactions/5qqznjba
159
+ body:
160
+ encoding: US-ASCII
161
+ string: ''
162
+ headers:
163
+ Accept-Encoding:
164
+ - gzip
165
+ Accept:
166
+ - application/xml
167
+ User-Agent:
168
+ - Braintree Ruby Gem 2.98.0
169
+ X-Apiversion:
170
+ - '5'
171
+ Content-Type:
172
+ - application/xml
173
+ Authorization:
174
+ - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ==
175
+ response:
176
+ status:
177
+ code: 200
178
+ message: OK
179
+ headers:
180
+ Date:
181
+ - Fri, 13 Sep 2019 14:27:06 GMT
182
+ Content-Type:
183
+ - application/xml; charset=utf-8
184
+ Transfer-Encoding:
185
+ - chunked
186
+ X-Frame-Options:
187
+ - SAMEORIGIN
188
+ X-Xss-Protection:
189
+ - 1; mode=block
190
+ X-Content-Type-Options:
191
+ - nosniff
192
+ X-Authentication:
193
+ - basic_auth
194
+ X-User:
195
+ - 3v249hqtptsg744y
196
+ Vary:
197
+ - Accept-Encoding
198
+ Content-Encoding:
199
+ - gzip
200
+ Etag:
201
+ - W/"f6b088fde55054d8ef7a058e0aec17c3"
202
+ Cache-Control:
203
+ - max-age=0, private, must-revalidate
204
+ X-Runtime:
205
+ - '0.202933'
206
+ X-Request-Id:
207
+ - 02-1568384825.511-92.223.152.178-13016657
208
+ Content-Security-Policy:
209
+ - frame-ancestors 'self'
210
+ X-Broxyid:
211
+ - 02-1568384825.511-92.223.152.178-13016657
212
+ Strict-Transport-Security:
213
+ - max-age=31536000; includeSubDomains
214
+ body:
215
+ encoding: ASCII-8BIT
216
+ string: !binary |-
217
+ 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
218
+ http_version:
219
+ recorded_at: Fri, 13 Sep 2019 14:27:06 GMT
220
+ - request:
221
+ method: put
222
+ uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/transactions/5qqznjba/submit_for_settlement
223
+ body:
224
+ encoding: UTF-8
225
+ string: |
226
+ <?xml version="1.0" encoding="UTF-8"?>
227
+ <transaction>
228
+ <amount>110.00</amount>
229
+ </transaction>
230
+ headers:
231
+ Accept-Encoding:
232
+ - gzip
233
+ Accept:
234
+ - application/xml
235
+ User-Agent:
236
+ - Braintree Ruby Gem 2.98.0
237
+ X-Apiversion:
238
+ - '5'
239
+ Content-Type:
240
+ - application/xml
241
+ Authorization:
242
+ - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ==
243
+ response:
244
+ status:
245
+ code: 200
246
+ message: OK
247
+ headers:
248
+ Date:
249
+ - Fri, 13 Sep 2019 14:27:07 GMT
250
+ Content-Type:
251
+ - application/xml; charset=utf-8
252
+ Transfer-Encoding:
253
+ - chunked
254
+ X-Frame-Options:
255
+ - SAMEORIGIN
256
+ X-Xss-Protection:
257
+ - 1; mode=block
258
+ X-Content-Type-Options:
259
+ - nosniff
260
+ X-Authentication:
261
+ - basic_auth
262
+ X-User:
263
+ - 3v249hqtptsg744y
264
+ Vary:
265
+ - Accept-Encoding
266
+ Content-Encoding:
267
+ - gzip
268
+ Etag:
269
+ - W/"693f86207821aad9fd32533b95816aad"
270
+ Cache-Control:
271
+ - max-age=0, private, must-revalidate
272
+ X-Runtime:
273
+ - '0.355572'
274
+ X-Request-Id:
275
+ - 02-1568384826.802-92.223.152.178-13016965
276
+ Content-Security-Policy:
277
+ - frame-ancestors 'self'
278
+ X-Broxyid:
279
+ - 02-1568384826.802-92.223.152.178-13016965
280
+ Strict-Transport-Security:
281
+ - max-age=31536000; includeSubDomains
282
+ body:
283
+ encoding: ASCII-8BIT
284
+ string: !binary |-
285
+ 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
286
+ http_version:
287
+ recorded_at: Fri, 13 Sep 2019 14:27:07 GMT
288
+ - request:
289
+ method: get
290
+ uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/transactions/5qqznjba
291
+ body:
292
+ encoding: US-ASCII
293
+ string: ''
294
+ headers:
295
+ Accept-Encoding:
296
+ - gzip
297
+ Accept:
298
+ - application/xml
299
+ User-Agent:
300
+ - Braintree Ruby Gem 2.98.0
301
+ X-Apiversion:
302
+ - '5'
303
+ Content-Type:
304
+ - application/xml
305
+ Authorization:
306
+ - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ==
307
+ response:
308
+ status:
309
+ code: 200
310
+ message: OK
311
+ headers:
312
+ Date:
313
+ - Fri, 13 Sep 2019 14:27:09 GMT
314
+ Content-Type:
315
+ - application/xml; charset=utf-8
316
+ Transfer-Encoding:
317
+ - chunked
318
+ X-Frame-Options:
319
+ - SAMEORIGIN
320
+ X-Xss-Protection:
321
+ - 1; mode=block
322
+ X-Content-Type-Options:
323
+ - nosniff
324
+ X-Authentication:
325
+ - basic_auth
326
+ X-User:
327
+ - 3v249hqtptsg744y
328
+ Vary:
329
+ - Accept-Encoding
330
+ Content-Encoding:
331
+ - gzip
332
+ Etag:
333
+ - W/"0f68e6acf7e3736e3550fbe5dae21a65"
334
+ Cache-Control:
335
+ - max-age=0, private, must-revalidate
336
+ X-Runtime:
337
+ - '0.212004'
338
+ X-Request-Id:
339
+ - 02-1568384828.412-92.223.152.178-13017297
340
+ Content-Security-Policy:
341
+ - frame-ancestors 'self'
342
+ X-Broxyid:
343
+ - 02-1568384828.412-92.223.152.178-13017297
344
+ Strict-Transport-Security:
345
+ - max-age=31536000; includeSubDomains
346
+ body:
347
+ encoding: ASCII-8BIT
348
+ string: !binary |-
349
+ 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
350
+ http_version:
351
+ recorded_at: Fri, 13 Sep 2019 14:27:09 GMT
352
+ recorded_with: VCR 5.0.0