archetype_spree_gateway 3.9.5

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 (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +39 -0
  5. data/Gemfile +9 -0
  6. data/Guardfile +9 -0
  7. data/LICENSE.md +26 -0
  8. data/README.md +105 -0
  9. data/Rakefile +15 -0
  10. data/app/models/spree/billing_integration.rb +21 -0
  11. data/app/models/spree/check.rb +41 -0
  12. data/app/models/spree/gateway/authorize_net.rb +45 -0
  13. data/app/models/spree/gateway/authorize_net_cim.rb +213 -0
  14. data/app/models/spree/gateway/balanced_gateway.rb +64 -0
  15. data/app/models/spree/gateway/banwire.rb +15 -0
  16. data/app/models/spree/gateway/beanstream.rb +193 -0
  17. data/app/models/spree/gateway/braintree_gateway.rb +184 -0
  18. data/app/models/spree/gateway/card_save.rb +10 -0
  19. data/app/models/spree/gateway/cyber_source.rb +10 -0
  20. data/app/models/spree/gateway/data_cash.rb +10 -0
  21. data/app/models/spree/gateway/epay.rb +10 -0
  22. data/app/models/spree/gateway/eway.rb +18 -0
  23. data/app/models/spree/gateway/eway_rapid.rb +14 -0
  24. data/app/models/spree/gateway/maxipago.rb +14 -0
  25. data/app/models/spree/gateway/migs.rb +11 -0
  26. data/app/models/spree/gateway/moneris.rb +10 -0
  27. data/app/models/spree/gateway/pay_junction.rb +14 -0
  28. data/app/models/spree/gateway/pay_pal_gateway.rb +12 -0
  29. data/app/models/spree/gateway/payflow_pro.rb +15 -0
  30. data/app/models/spree/gateway/paymill.rb +12 -0
  31. data/app/models/spree/gateway/payu_polska_gateway.rb +24 -0
  32. data/app/models/spree/gateway/pin_gateway.rb +60 -0
  33. data/app/models/spree/gateway/quickpay.rb +9 -0
  34. data/app/models/spree/gateway/sage_pay.rb +11 -0
  35. data/app/models/spree/gateway/secure_pay_au.rb +10 -0
  36. data/app/models/spree/gateway/spreedly_core_gateway.rb +11 -0
  37. data/app/models/spree/gateway/stripe_ach_gateway.rb +60 -0
  38. data/app/models/spree/gateway/stripe_apple_pay_gateway.rb +10 -0
  39. data/app/models/spree/gateway/stripe_elements_gateway.rb +61 -0
  40. data/app/models/spree/gateway/stripe_gateway.rb +151 -0
  41. data/app/models/spree/gateway/usa_epay_transaction.rb +9 -0
  42. data/app/models/spree/gateway/worldpay.rb +91 -0
  43. data/app/models/spree/payu_polska.rb +41 -0
  44. data/app/models/spree_gateway/apple_pay_order_decorator.rb +20 -0
  45. data/app/models/spree_gateway/apple_pay_payment_decorator.rb +9 -0
  46. data/app/models/spree_gateway/credit_card_decorator.rb +10 -0
  47. data/app/models/spree_gateway/order_decorator.rb +28 -0
  48. data/app/models/spree_gateway/payment_decorator.rb +36 -0
  49. data/app/views/spree/checkout/_payment_confirm.html.erb +39 -0
  50. data/app/views/spree/checkout/_payu.html +12 -0
  51. data/config/initializers/inflections.rb +3 -0
  52. data/config/initializers/spree_permitted_attributes.rb +5 -0
  53. data/config/locales/bg.yml +4 -0
  54. data/config/locales/de.yml +4 -0
  55. data/config/locales/en.yml +47 -0
  56. data/config/locales/sv.yml +4 -0
  57. data/config/routes.rb +19 -0
  58. data/db/migrate/20200317135551_add_spree_check_payment_source.rb +22 -0
  59. data/db/migrate/20200422114908_add_intent_key_to_payment.rb +5 -0
  60. data/lib/active_merchant/billing/stripe_gateway_decorator.rb +33 -0
  61. data/lib/controllers/spree/api/v2/storefront/intents_controller.rb +45 -0
  62. data/lib/controllers/spree/apple_pay_domain_verification_controller.rb +11 -0
  63. data/lib/generators/spree_gateway/install/install_generator.rb +19 -0
  64. data/lib/spree_frontend/controllers/spree/checkout_controller_decorator.rb +19 -0
  65. data/lib/spree_gateway/engine.rb +80 -0
  66. data/lib/spree_gateway/version.rb +5 -0
  67. data/lib/spree_gateway.rb +4 -0
  68. data/lib/views/backend/spree/admin/log_entries/_braintree.html.erb +31 -0
  69. data/lib/views/backend/spree/admin/log_entries/_stripe.html.erb +28 -0
  70. data/lib/views/backend/spree/admin/payments/source_forms/_quickcheckout.html.erb +8 -0
  71. data/lib/views/backend/spree/admin/payments/source_forms/_stripe.html.erb +79 -0
  72. data/lib/views/backend/spree/admin/payments/source_forms/_stripe_ach.html.erb +86 -0
  73. data/lib/views/backend/spree/admin/payments/source_forms/_stripe_apple_pay.html.erb +0 -0
  74. data/lib/views/backend/spree/admin/payments/source_forms/_stripe_elements.html.erb +79 -0
  75. data/lib/views/backend/spree/admin/payments/source_views/_stripe.html.erb +1 -0
  76. data/lib/views/backend/spree/admin/payments/source_views/_stripe_ach.html.erb +21 -0
  77. data/lib/views/backend/spree/admin/payments/source_views/_stripe_apple_pay.html.erb +1 -0
  78. data/lib/views/backend/spree/admin/payments/source_views/_stripe_elements.html.erb +1 -0
  79. data/lib/views/frontend/spree/checkout/payment/_stripe.html.erb +86 -0
  80. data/lib/views/frontend/spree/checkout/payment/_stripe_ach.html.erb +81 -0
  81. data/lib/views/frontend/spree/checkout/payment/_stripe_ach_verify.html.erb +16 -0
  82. data/lib/views/frontend/spree/checkout/payment/_stripe_additional_info.html.erb +16 -0
  83. data/lib/views/frontend/spree/checkout/payment/_stripe_apple_pay.html.erb +109 -0
  84. data/lib/views/frontend/spree/checkout/payment/_stripe_elements.html.erb +110 -0
  85. data/script/rails +7 -0
  86. data/spec/factories/check_factory.rb +10 -0
  87. data/spec/features/admin/stripe_elements_payment_spec.rb +100 -0
  88. data/spec/features/stripe_checkout_spec.rb +130 -0
  89. data/spec/features/stripe_elements_3ds_checkout_spec.rb +225 -0
  90. data/spec/models/gateway/authorize_net_cim_spec.rb +29 -0
  91. data/spec/models/gateway/authorize_net_spec.rb +23 -0
  92. data/spec/models/gateway/balanced_gateway_spec.rb +17 -0
  93. data/spec/models/gateway/banwire_spec.rb +11 -0
  94. data/spec/models/gateway/beanstream_spec.rb +17 -0
  95. data/spec/models/gateway/braintree_gateway_spec.rb +420 -0
  96. data/spec/models/gateway/card_save_spec.rb +11 -0
  97. data/spec/models/gateway/cyber_source_spec.rb +11 -0
  98. data/spec/models/gateway/data_cash_spec.rb +11 -0
  99. data/spec/models/gateway/epay_spec.rb +11 -0
  100. data/spec/models/gateway/eway_rapid_spec.rb +23 -0
  101. data/spec/models/gateway/eway_spec.rb +29 -0
  102. data/spec/models/gateway/maxipago_spec.rb +17 -0
  103. data/spec/models/gateway/moneris_spec.rb +11 -0
  104. data/spec/models/gateway/pay_junction_spec.rb +23 -0
  105. data/spec/models/gateway/pay_pal_spec.rb +11 -0
  106. data/spec/models/gateway/payflow_pro_spec.rb +23 -0
  107. data/spec/models/gateway/paymill_spec.rb +11 -0
  108. data/spec/models/gateway/pin_gateway_spec.rb +54 -0
  109. data/spec/models/gateway/quickpay_spec.rb +11 -0
  110. data/spec/models/gateway/sage_pay_spec.rb +11 -0
  111. data/spec/models/gateway/secure_pay_au_spec.rb +11 -0
  112. data/spec/models/gateway/stripe_ach_gateway_spec.rb +186 -0
  113. data/spec/models/gateway/stripe_gateway_spec.rb +199 -0
  114. data/spec/models/gateway/usa_epay_transaction_spec.rb +49 -0
  115. data/spec/models/gateway/worldpay_spec.rb +11 -0
  116. data/spec/models/spree/order_spec.rb +79 -0
  117. data/spec/requests/apple_pay_domain_verification.rb +45 -0
  118. data/spec/requests/spree/api/v2/storefront/intents_controller_spec.rb +198 -0
  119. data/spec/spec_helper.rb +10 -0
  120. data/spec/support/order_walktrough.rb +73 -0
  121. data/spec/support/wait_for_stripe.rb +27 -0
  122. data/spec/support/within_stripe_3ds_popup.rb +10 -0
  123. data/spree_gateway.gemspec +37 -0
  124. metadata +277 -0
@@ -0,0 +1,198 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Api V2 Storefront Intents Spec', type: :request do
4
+ let!(:store) { Spree::Store.default }
5
+ let(:currency) { store.default_currency }
6
+ let(:user) { create(:user) }
7
+ let(:order) { create(:order, user: user, store: store, currency: currency) }
8
+
9
+ include_context 'API v2 tokens'
10
+
11
+ describe '#payment_confirmation_data' do
12
+ subject :post_payment_confirmation_data do
13
+ post '/api/v2/storefront/intents/payment_confirmation_data', headers: headers, params: params
14
+ end
15
+
16
+ include_context 'API v2 tokens'
17
+
18
+ context 'when user is authorized' do
19
+ let(:params) { {} }
20
+ let(:headers) { headers_bearer.merge(headers_order_token) }
21
+
22
+ context 'when current order has payment intent' do
23
+ let(:provider) do
24
+ double('provider').tap do |p|
25
+ p.stub(:purchase)
26
+ p.stub(:authorize)
27
+ p.stub(:capture)
28
+ end
29
+ end
30
+ let(:gateway) do
31
+ gateway = Spree::Gateway::StripeElementsGateway.new(active: true)
32
+ gateway.set_preference :secret_key, 'secret_key'
33
+ gateway.set_preference :intents, 'true'
34
+ gateway.name = 'Stripe Elements'
35
+ gateway.stores << order.store
36
+ allow(gateway).to receive(:options_for_purchase_or_auth).and_return ['money','cc','opts']
37
+ allow(gateway).to receive_messages provider: provider
38
+ allow(gateway).to receive_messages source_required: true
39
+ allow(gateway).to receive_messages create_profile: true
40
+ gateway
41
+ end
42
+ let!(:payment) do
43
+ create(:payment,
44
+ source: create(:credit_card),
45
+ order: order,
46
+ payment_method: gateway,
47
+ state: 'pending',
48
+ intent_client_key: intent_client_key)
49
+ end
50
+
51
+ before { post_payment_confirmation_data }
52
+
53
+ context 'when last valid payment has intent client key' do
54
+ let(:intent_client_key) { 'intent_client_key' }
55
+
56
+ it_behaves_like 'returns 200 HTTP status'
57
+ end
58
+
59
+ context 'when last valid payment does not have intent client key' do
60
+ let(:intent_client_key) { nil }
61
+
62
+ it_behaves_like 'returns 422 HTTP status'
63
+
64
+ it 'includes valid response message' do
65
+ expect(response.body).to include I18n.t('spree.no_payment_authorization_needed')
66
+ end
67
+ end
68
+
69
+ context 'when current order has completed payments' do
70
+ let(:order) { create(:order_ready_to_ship, user: user, store: store, currency: currency) }
71
+ let(:intent_client_key) { 'intent_client_key' }
72
+
73
+ it_behaves_like 'returns 403 HTTP status'
74
+ end
75
+ end
76
+
77
+ context 'when current order does not have payment intent' do
78
+ before { post_payment_confirmation_data }
79
+
80
+ it_behaves_like 'returns 422 HTTP status'
81
+
82
+ it 'includes valid response message' do
83
+ expect(response.body).to include I18n.t('spree.no_payment_authorization_needed')
84
+ end
85
+ end
86
+ end
87
+
88
+ context 'when some authorization data is missing' do
89
+ let(:params) { {} }
90
+ let(:headers) { {} }
91
+
92
+ before { post_payment_confirmation_data }
93
+
94
+ it_behaves_like 'returns 403 HTTP status'
95
+ end
96
+ end
97
+
98
+ describe '#handle_response' do
99
+ subject :post_handle_response do
100
+ post '/api/v2/storefront/intents/handle_response', headers: headers, params: params
101
+ end
102
+
103
+ let(:headers) { headers_bearer.merge(headers_order_token) }
104
+ let(:provider) do
105
+ double('provider').tap do |p|
106
+ p.stub(:purchase)
107
+ p.stub(:authorize)
108
+ p.stub(:capture)
109
+ end
110
+ end
111
+ let(:gateway) do
112
+ gateway = Spree::Gateway::StripeElementsGateway.new(active: true)
113
+ gateway.set_preference :secret_key, 'secret_key'
114
+ gateway.set_preference :intents, 'true'
115
+ gateway.name = 'Stripe Elements'
116
+ gateway.stores << order.store
117
+ allow(gateway).to receive(:options_for_purchase_or_auth).and_return ['money','cc','opts']
118
+ allow(gateway).to receive_messages provider: provider
119
+ allow(gateway).to receive_messages source_required: true
120
+ allow(gateway).to receive_messages create_profile: true
121
+ gateway
122
+ end
123
+ let!(:payment) do
124
+ create(:payment,
125
+ source: create(:credit_card),
126
+ order: order,
127
+ payment_method: gateway,
128
+ state: 'pending',
129
+ intent_client_key: 'intent_client_key')
130
+ end
131
+
132
+ include_context 'API v2 tokens'
133
+
134
+ context 'when response param does not include errors' do
135
+ let(:params) do
136
+ {
137
+ response: {
138
+ message: 'everything is ok'
139
+ }
140
+ }
141
+ end
142
+
143
+ before { post_handle_response }
144
+
145
+ it_behaves_like 'returns 200 HTTP status'
146
+
147
+ it 'includes valid response message' do
148
+ expect(response.body).to include I18n.t('spree.payment_successfully_authorized')
149
+ end
150
+
151
+ it 'does not update payment' do
152
+ expect { post_handle_response }.not_to change { payment }
153
+ end
154
+ end
155
+
156
+ context 'when response param includes errors' do
157
+ let(:payment_response_code) { payment.response_code }
158
+ let(:params) do
159
+ {
160
+ response: {
161
+ error: {
162
+ payment_intent: {
163
+ id: payment_response_code
164
+ },
165
+ message: 'something went wrong'
166
+ }
167
+ }
168
+ }
169
+ end
170
+
171
+ before { post_handle_response }
172
+
173
+ it_behaves_like 'returns 422 HTTP status'
174
+
175
+ context 'when payment to invalidate is found' do
176
+ it 'changes payment state to failed' do
177
+ expect(payment.state).not_to eq 'failed'
178
+ expect(payment.reload.state).to eq 'failed'
179
+ end
180
+
181
+ it 'clears payment intent_client_key' do
182
+ expect(payment.intent_client_key).not_to be nil
183
+ expect(payment.reload.intent_client_key).to be nil
184
+ end
185
+
186
+ it 'includes valid response message' do
187
+ expect(response.body).to include params[:response][:error][:message]
188
+ end
189
+ end
190
+
191
+ context 'when payment to invalidate is not found' do
192
+ let(:payment_response_code) { 'unexisting response code' }
193
+
194
+ it_behaves_like 'returns 404 HTTP status'
195
+ end
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,10 @@
1
+ # Configure Rails Environment
2
+ ENV['RAILS_ENV'] = 'test'
3
+
4
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
+
6
+ require 'spree_dev_tools/rspec/spec_helper'
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc,
9
+ # in spec/support/ and its subdirectories.
10
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].sort.each { |f| require f }
@@ -0,0 +1,73 @@
1
+ class OrderWalkthrough
2
+ def self.up_to(state)
3
+ # A default store must exist to provide store settings
4
+ store = Spree::Store.default || FactoryBot.create(:store, default: true)
5
+
6
+ # A payment method must exist for an order to proceed through the Address state
7
+ unless Spree::PaymentMethod.exists?
8
+ FactoryBot.create(:check_payment_method)
9
+ end
10
+
11
+ # Need to create a valid zone too...
12
+ zone = FactoryBot.create(:zone)
13
+ country = FactoryBot.create(:country)
14
+ zone.members << Spree::ZoneMember.create(zoneable: country)
15
+ country.states << FactoryBot.create(:state, country: country)
16
+
17
+ # A shipping method must exist for rates to be displayed on checkout page
18
+ unless Spree::ShippingMethod.exists?
19
+ FactoryBot.create(:shipping_method).tap do |sm|
20
+ sm.calculator.preferred_amount = 10
21
+ sm.calculator.preferred_currency = store.default_currency
22
+ sm.calculator.save
23
+ end
24
+ end
25
+
26
+ order = Spree::Order.create!(email: 'spree@example.com')
27
+ add_line_item!(order)
28
+ order.next!
29
+
30
+ end_state_position = states.index(state.to_sym)
31
+ states[0...end_state_position].each do |state|
32
+ send(state, order)
33
+ end
34
+
35
+ order
36
+ end
37
+
38
+ private
39
+
40
+ def self.add_line_item!(order)
41
+ FactoryBot.create(:line_item, order: order)
42
+ order.reload
43
+ end
44
+
45
+ def self.address(order)
46
+ order.bill_address = FactoryBot.create(:address, country_id: Spree::Zone.global.members.first.zoneable.id)
47
+ order.ship_address = FactoryBot.create(:address, country_id: Spree::Zone.global.members.first.zoneable.id)
48
+ order.next!
49
+ end
50
+
51
+ def self.delivery(order)
52
+ order.next!
53
+ end
54
+
55
+ def self.payment(order)
56
+ FactoryBot.create :payment,
57
+ order: order,
58
+ payment_method: Spree::PaymentMethod.first,
59
+ amount: order.total
60
+
61
+ # TODO: maybe look at some way of making this payment_state change automatic
62
+ order.payment_state = 'paid'
63
+ order.next!
64
+ end
65
+
66
+ def self.complete(_order)
67
+ # noop?
68
+ end
69
+
70
+ def self.states
71
+ [:address, :delivery, :payment, :complete]
72
+ end
73
+ end
@@ -0,0 +1,27 @@
1
+ module WaitForStripe
2
+ def wait_for_stripe
3
+ Timeout.timeout(Capybara.default_max_wait_time) do
4
+ loop until page.evaluate_script('window.activeStripeRequests').zero?
5
+ end
6
+ end
7
+
8
+ def setup_stripe_watcher
9
+ page.evaluate_script <<-JS
10
+ window.activeStripeRequests = 0;
11
+ $('#checkout_form_payment [data-hook=buttons]').on('click', function() {
12
+ window.activeStripeRequests = window.activeStripeRequests + 1;
13
+ });
14
+ stripeResponseHandler = (function() {
15
+ var _f = stripeResponseHandler;
16
+ return function() {
17
+ window.activeStripeRequests = window.activeStripeRequests - 1;
18
+ _f.apply(this, arguments);
19
+ }
20
+ })();
21
+ JS
22
+ end
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ config.include WaitForStripe, type: :feature
27
+ end
@@ -0,0 +1,10 @@
1
+ def within_stripe_3ds_popup
2
+ using_wait_time(10) do
3
+ within_frame 0 do
4
+ within_frame 0 do
5
+ expect(page).to have_text('3D Secure 2 Test Page', normalize_ws: true)
6
+ yield
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'spree_gateway/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = 'archetype_spree_gateway'
10
+ s.version = SpreeGateway.version
11
+ s.summary = 'Additional Payment Gateways for Spree Commerce'
12
+ s.description = s.summary
13
+
14
+ s.author = 'Spree Commerce'
15
+ s.email = 'gems@spreecommerce.com'
16
+ s.homepage = 'https://spreecommerce.org'
17
+ s.license = 'BSD-3-Clause'
18
+
19
+ s.metadata = {
20
+ "bug_tracker_uri" => "https://github.com/spree/spree_gateway/issues",
21
+ "changelog_uri" => "https://github.com/spree/spree_gateway/releases/tag/v#{s.version}",
22
+ "documentation_uri" => "https://guides.spreecommerce.org/",
23
+ "source_code_uri" => "https://github.com/spree/spree_gateway/tree/v#{s.version}",
24
+ }
25
+
26
+ s.files = `git ls-files`.split("\n")
27
+ s.test_files = `git ls-files -- spec/*`.split("\n")
28
+ s.require_path = 'lib'
29
+ s.requirements << 'none'
30
+
31
+ s.add_dependency 'spree_core', '>= 3.7.0'
32
+ s.add_dependency 'spree_extension'
33
+
34
+ s.add_development_dependency 'braintree', '~> 3.0.0'
35
+ s.add_development_dependency 'rspec-activemodel-mocks'
36
+ s.add_development_dependency 'spree_dev_tools'
37
+ end
metadata ADDED
@@ -0,0 +1,277 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: archetype_spree_gateway
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.9.5
5
+ platform: ruby
6
+ authors:
7
+ - Spree Commerce
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.7.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.7.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: spree_extension
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: braintree
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-activemodel-mocks
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: spree_dev_tools
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Additional Payment Gateways for Spree Commerce
84
+ email: gems@spreecommerce.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - ".gitignore"
90
+ - ".rspec"
91
+ - ".travis.yml"
92
+ - Gemfile
93
+ - Guardfile
94
+ - LICENSE.md
95
+ - README.md
96
+ - Rakefile
97
+ - app/models/spree/billing_integration.rb
98
+ - app/models/spree/check.rb
99
+ - app/models/spree/gateway/authorize_net.rb
100
+ - app/models/spree/gateway/authorize_net_cim.rb
101
+ - app/models/spree/gateway/balanced_gateway.rb
102
+ - app/models/spree/gateway/banwire.rb
103
+ - app/models/spree/gateway/beanstream.rb
104
+ - app/models/spree/gateway/braintree_gateway.rb
105
+ - app/models/spree/gateway/card_save.rb
106
+ - app/models/spree/gateway/cyber_source.rb
107
+ - app/models/spree/gateway/data_cash.rb
108
+ - app/models/spree/gateway/epay.rb
109
+ - app/models/spree/gateway/eway.rb
110
+ - app/models/spree/gateway/eway_rapid.rb
111
+ - app/models/spree/gateway/maxipago.rb
112
+ - app/models/spree/gateway/migs.rb
113
+ - app/models/spree/gateway/moneris.rb
114
+ - app/models/spree/gateway/pay_junction.rb
115
+ - app/models/spree/gateway/pay_pal_gateway.rb
116
+ - app/models/spree/gateway/payflow_pro.rb
117
+ - app/models/spree/gateway/paymill.rb
118
+ - app/models/spree/gateway/payu_polska_gateway.rb
119
+ - app/models/spree/gateway/pin_gateway.rb
120
+ - app/models/spree/gateway/quickpay.rb
121
+ - app/models/spree/gateway/sage_pay.rb
122
+ - app/models/spree/gateway/secure_pay_au.rb
123
+ - app/models/spree/gateway/spreedly_core_gateway.rb
124
+ - app/models/spree/gateway/stripe_ach_gateway.rb
125
+ - app/models/spree/gateway/stripe_apple_pay_gateway.rb
126
+ - app/models/spree/gateway/stripe_elements_gateway.rb
127
+ - app/models/spree/gateway/stripe_gateway.rb
128
+ - app/models/spree/gateway/usa_epay_transaction.rb
129
+ - app/models/spree/gateway/worldpay.rb
130
+ - app/models/spree/payu_polska.rb
131
+ - app/models/spree_gateway/apple_pay_order_decorator.rb
132
+ - app/models/spree_gateway/apple_pay_payment_decorator.rb
133
+ - app/models/spree_gateway/credit_card_decorator.rb
134
+ - app/models/spree_gateway/order_decorator.rb
135
+ - app/models/spree_gateway/payment_decorator.rb
136
+ - app/views/spree/checkout/_payment_confirm.html.erb
137
+ - app/views/spree/checkout/_payu.html
138
+ - config/initializers/inflections.rb
139
+ - config/initializers/spree_permitted_attributes.rb
140
+ - config/locales/bg.yml
141
+ - config/locales/de.yml
142
+ - config/locales/en.yml
143
+ - config/locales/sv.yml
144
+ - config/routes.rb
145
+ - db/migrate/20200317135551_add_spree_check_payment_source.rb
146
+ - db/migrate/20200422114908_add_intent_key_to_payment.rb
147
+ - lib/active_merchant/billing/stripe_gateway_decorator.rb
148
+ - lib/controllers/spree/api/v2/storefront/intents_controller.rb
149
+ - lib/controllers/spree/apple_pay_domain_verification_controller.rb
150
+ - lib/generators/spree_gateway/install/install_generator.rb
151
+ - lib/spree_frontend/controllers/spree/checkout_controller_decorator.rb
152
+ - lib/spree_gateway.rb
153
+ - lib/spree_gateway/engine.rb
154
+ - lib/spree_gateway/version.rb
155
+ - lib/views/backend/spree/admin/log_entries/_braintree.html.erb
156
+ - lib/views/backend/spree/admin/log_entries/_stripe.html.erb
157
+ - lib/views/backend/spree/admin/payments/source_forms/_quickcheckout.html.erb
158
+ - lib/views/backend/spree/admin/payments/source_forms/_stripe.html.erb
159
+ - lib/views/backend/spree/admin/payments/source_forms/_stripe_ach.html.erb
160
+ - lib/views/backend/spree/admin/payments/source_forms/_stripe_apple_pay.html.erb
161
+ - lib/views/backend/spree/admin/payments/source_forms/_stripe_elements.html.erb
162
+ - lib/views/backend/spree/admin/payments/source_views/_stripe.html.erb
163
+ - lib/views/backend/spree/admin/payments/source_views/_stripe_ach.html.erb
164
+ - lib/views/backend/spree/admin/payments/source_views/_stripe_apple_pay.html.erb
165
+ - lib/views/backend/spree/admin/payments/source_views/_stripe_elements.html.erb
166
+ - lib/views/frontend/spree/checkout/payment/_stripe.html.erb
167
+ - lib/views/frontend/spree/checkout/payment/_stripe_ach.html.erb
168
+ - lib/views/frontend/spree/checkout/payment/_stripe_ach_verify.html.erb
169
+ - lib/views/frontend/spree/checkout/payment/_stripe_additional_info.html.erb
170
+ - lib/views/frontend/spree/checkout/payment/_stripe_apple_pay.html.erb
171
+ - lib/views/frontend/spree/checkout/payment/_stripe_elements.html.erb
172
+ - script/rails
173
+ - spec/factories/check_factory.rb
174
+ - spec/features/admin/stripe_elements_payment_spec.rb
175
+ - spec/features/stripe_checkout_spec.rb
176
+ - spec/features/stripe_elements_3ds_checkout_spec.rb
177
+ - spec/models/gateway/authorize_net_cim_spec.rb
178
+ - spec/models/gateway/authorize_net_spec.rb
179
+ - spec/models/gateway/balanced_gateway_spec.rb
180
+ - spec/models/gateway/banwire_spec.rb
181
+ - spec/models/gateway/beanstream_spec.rb
182
+ - spec/models/gateway/braintree_gateway_spec.rb
183
+ - spec/models/gateway/card_save_spec.rb
184
+ - spec/models/gateway/cyber_source_spec.rb
185
+ - spec/models/gateway/data_cash_spec.rb
186
+ - spec/models/gateway/epay_spec.rb
187
+ - spec/models/gateway/eway_rapid_spec.rb
188
+ - spec/models/gateway/eway_spec.rb
189
+ - spec/models/gateway/maxipago_spec.rb
190
+ - spec/models/gateway/moneris_spec.rb
191
+ - spec/models/gateway/pay_junction_spec.rb
192
+ - spec/models/gateway/pay_pal_spec.rb
193
+ - spec/models/gateway/payflow_pro_spec.rb
194
+ - spec/models/gateway/paymill_spec.rb
195
+ - spec/models/gateway/pin_gateway_spec.rb
196
+ - spec/models/gateway/quickpay_spec.rb
197
+ - spec/models/gateway/sage_pay_spec.rb
198
+ - spec/models/gateway/secure_pay_au_spec.rb
199
+ - spec/models/gateway/stripe_ach_gateway_spec.rb
200
+ - spec/models/gateway/stripe_gateway_spec.rb
201
+ - spec/models/gateway/usa_epay_transaction_spec.rb
202
+ - spec/models/gateway/worldpay_spec.rb
203
+ - spec/models/spree/order_spec.rb
204
+ - spec/requests/apple_pay_domain_verification.rb
205
+ - spec/requests/spree/api/v2/storefront/intents_controller_spec.rb
206
+ - spec/spec_helper.rb
207
+ - spec/support/order_walktrough.rb
208
+ - spec/support/wait_for_stripe.rb
209
+ - spec/support/within_stripe_3ds_popup.rb
210
+ - spree_gateway.gemspec
211
+ homepage: https://spreecommerce.org
212
+ licenses:
213
+ - BSD-3-Clause
214
+ metadata:
215
+ bug_tracker_uri: https://github.com/spree/spree_gateway/issues
216
+ changelog_uri: https://github.com/spree/spree_gateway/releases/tag/v3.9.5
217
+ documentation_uri: https://guides.spreecommerce.org/
218
+ source_code_uri: https://github.com/spree/spree_gateway/tree/v3.9.5
219
+ post_install_message:
220
+ rdoc_options: []
221
+ require_paths:
222
+ - lib
223
+ required_ruby_version: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ required_rubygems_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '0'
233
+ requirements:
234
+ - none
235
+ rubyforge_project:
236
+ rubygems_version: 2.7.6.2
237
+ signing_key:
238
+ specification_version: 4
239
+ summary: Additional Payment Gateways for Spree Commerce
240
+ test_files:
241
+ - spec/factories/check_factory.rb
242
+ - spec/features/admin/stripe_elements_payment_spec.rb
243
+ - spec/features/stripe_checkout_spec.rb
244
+ - spec/features/stripe_elements_3ds_checkout_spec.rb
245
+ - spec/models/gateway/authorize_net_cim_spec.rb
246
+ - spec/models/gateway/authorize_net_spec.rb
247
+ - spec/models/gateway/balanced_gateway_spec.rb
248
+ - spec/models/gateway/banwire_spec.rb
249
+ - spec/models/gateway/beanstream_spec.rb
250
+ - spec/models/gateway/braintree_gateway_spec.rb
251
+ - spec/models/gateway/card_save_spec.rb
252
+ - spec/models/gateway/cyber_source_spec.rb
253
+ - spec/models/gateway/data_cash_spec.rb
254
+ - spec/models/gateway/epay_spec.rb
255
+ - spec/models/gateway/eway_rapid_spec.rb
256
+ - spec/models/gateway/eway_spec.rb
257
+ - spec/models/gateway/maxipago_spec.rb
258
+ - spec/models/gateway/moneris_spec.rb
259
+ - spec/models/gateway/pay_junction_spec.rb
260
+ - spec/models/gateway/pay_pal_spec.rb
261
+ - spec/models/gateway/payflow_pro_spec.rb
262
+ - spec/models/gateway/paymill_spec.rb
263
+ - spec/models/gateway/pin_gateway_spec.rb
264
+ - spec/models/gateway/quickpay_spec.rb
265
+ - spec/models/gateway/sage_pay_spec.rb
266
+ - spec/models/gateway/secure_pay_au_spec.rb
267
+ - spec/models/gateway/stripe_ach_gateway_spec.rb
268
+ - spec/models/gateway/stripe_gateway_spec.rb
269
+ - spec/models/gateway/usa_epay_transaction_spec.rb
270
+ - spec/models/gateway/worldpay_spec.rb
271
+ - spec/models/spree/order_spec.rb
272
+ - spec/requests/apple_pay_domain_verification.rb
273
+ - spec/requests/spree/api/v2/storefront/intents_controller_spec.rb
274
+ - spec/spec_helper.rb
275
+ - spec/support/order_walktrough.rb
276
+ - spec/support/wait_for_stripe.rb
277
+ - spec/support/within_stripe_3ds_popup.rb